Excel中有两个工作簿,A1列为日期,其余为普通数据,sheet2中有很多个重复表格,第一行是标题行,第2至10行为空白行,以此类推每10行一个表格,要求按照sheet1中的A1列的不同日期将全部数据填充在sheet2的表格空白行里,如果填不下就填在下一个表格里,不同日期的数据不允许填充在一个表格里。
这个问题可以通过VBA宏来实现。具体步骤如下:
-
在Excel中打开工作簿,按下Alt + F11,打开VBA编辑器。
-
在VBA编辑器中,选择要编写宏的工作簿,然后新建一个模块。
-
在模块中编写以下代码:
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
- 在主窗口中,选择要执行的工作簿,然后按下F5运行该宏。
该宏将遍历Sheet1中的日期列,并将相应的数据填充到Sheet2中的表格中。如果某个日期的数据无法放入任何表格中,则会弹出对话框提示。
原文地址: https://www.cveoy.top/t/topic/rRB 著作权归作者所有。请勿转载和采集!