Sub FillData()
    Dim ws1 As Worksheet, ws2 As Worksheet
    Dim lastRow1 As Long, lastRow2 As Long
    Dim i As Long, j As Long
    Dim dateValue As Date
    Dim isDateFound As Boolean
    
    Set ws1 = ThisWorkbook.Worksheets("Sheet1")
    Set ws2 = ThisWorkbook.Worksheets("Sheet2")
    
    lastRow1 = ws1.Cells(ws1.Rows.Count, 'A').End(xlUp).Row
    
    For i = 2 To lastRow1
        dateValue = ws1.Cells(i, 1).Value
        isDateFound = False
        
        For j = 2 To ws2.Rows.Count Step 10
            lastRow2 = ws2.Cells(j, 'A').End(xlUp).Row
            
            If lastRow2 < j + 9 Then
                If j = 2 Or ws2.Cells(j - 1, 'A').Value <> dateValue Then
                    ws2.Cells(j, 'A').Value = dateValue
                    ws1.Range(ws1.Cells(i, 2), ws1.Cells(i, ws1.Columns.Count)).Copy _
                        Destination:=ws2.Range(ws2.Cells(j + 1, 2), ws2.Cells(j + 9, ws2.Columns.Count))
                    isDateFound = True
                    Exit For
                End If
            End If
        Next j
        
        If Not isDateFound Then
            MsgBox 'Data for ' & dateValue & ' cannot be added to Sheet2.'
        End If
    Next i
    
    MsgBox 'Data filling completed.'
End Sub

代码功能:

  1. 从 Sheet1 中读取数据,根据日期将数据填充到 Sheet2。
  2. 每个日期的数据占据 Sheet2 中的 10 行。
  3. 如果 Sheet2 中已存在该日期的数据,则将新数据填充到下一组 10 行中。
  4. 如果 Sheet2 中不存在该日期的数据,则将该日期和对应数据填充到 Sheet2 的下一组 10 行中。

代码解释:

  • lastRow1lastRow2 分别存储 Sheet1 和 Sheet2 的最后一行数据。
  • dateValue 存储 Sheet1 中当前行的日期。
  • isDateFound 用于判断 Sheet2 中是否已存在该日期的数据。
  • 代码使用双层循环遍历 Sheet1 和 Sheet2。
  • 外层循环遍历 Sheet1 的所有数据。
  • 内层循环遍历 Sheet2 的数据,每 10 行进行一次判断。
  • 代码使用 CopyDestination 方法将数据从 Sheet1 复制到 Sheet2。
  • 如果 Sheet2 中不存在该日期的数据,则使用 MsgBox 显示提示信息。

注意:

  • 代码中的日期必须在 Sheet1 的第一列。
  • Sheet2 中的 A 列必须为空,用于存放日期。
  • 可以修改代码中的 Step 值来调整每个日期在 Sheet2 中占用的行数。

使用步骤:

  1. 打开 Excel 文件。
  2. 按 Alt+F11 打开 VBA 编辑器。
  3. 插入一个模块。
  4. 将代码复制到模块中。
  5. 运行代码。

代码运行结果:

代码将 Sheet1 中的数据根据日期填充到 Sheet2,每个日期的数据占据 Sheet2 中的 10 行。

示例:

假设 Sheet1 中的数据如下所示:

| 日期 | 数据1 | 数据2 | 数据3 | |--------|-------|-------|-------| | 2023-03-01 | A | B | C | | 2023-03-02 | D | E | F | | 2023-03-01 | G | H | I |

运行代码后,Sheet2 中的数据将如下所示:

| 日期 | 数据1 | 数据2 | 数据3 | 数据1 | 数据2 | 数据3 | 数据1 | 数据2 | 数据3 | |--------|-------|-------|-------|-------|-------|-------|-------|-------|-------| | 2023-03-01 | A | B | C | G | H | I | | | | | 2023-03-02 | D | E | F | | | | | | |


原文地址: https://www.cveoy.top/t/topic/lDQQ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录