Excel VBA 宏:将 Sheet1 数据按日期填充到 Sheet2 重复表格
Sub FillData()
Dim wb As Workbook
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim lastRow1 As Long
Dim lastRow2 As Long
Dim i As Long
Dim j As Long
Dim k As Long
Dim dateValue As Date
Set wb = ThisWorkbook
Set ws1 = wb.Sheets("Sheet1")
Set ws2 = wb.Sheets("Sheet2")
lastRow1 = ws1.Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To lastRow1
dateValue = ws1.Cells(i, 1).Value
lastRow2 = ws2.Cells(Rows.Count, 1).End(xlUp).Row
For j = 1 To lastRow2 Step 10
If ws2.Cells(j, 1).Value = "" Then
For k = 0 To 8
ws2.Cells(j + k, 1).Value = ws1.Cells(i, k + 1).Value
Next k
Exit For
ElseIf ws2.Cells(j, 1).Value = dateValue Then
Dim rowCount As Long
rowCount = Application.WorksheetFunction.CountA(ws2.Range(ws2.Cells(j + 4, 1), ws2.Cells(j + 10, 1)))
If rowCount < 7 Then
For k = 0 To 8
ws2.Cells(j + rowCount + 4 + k, 1).Value = ws1.Cells(i, k + 1).Value
Next k
Exit For
End If
End If
Next j
Next i
End Sub
该 VBA 宏可以实现以下功能:
- 将 Sheet1 中 A1 列不同日期的数据填充到 Sheet2 中的重复表格。
- 每个表格最多容纳 7 行数据,超过 7 行将填充到下一个表格。
- 不同日期的数据不允许填充在一个表格里。
使用方法:
- 将代码复制到 Excel 的 VBA 编辑器中。
- 将 Sheet1 和 Sheet2 的名称替换为您的实际工作表名称。
- 运行宏。
代码解释:
lastRow1和lastRow2分别表示 Sheet1 和 Sheet2 的最后一行。dateValue存储 Sheet1 中当前行的日期值。j循环遍历 Sheet2 中的表格。rowCount计算当前表格中已填充的行数。- 如果当前表格为空,则将数据填充到当前表格。
- 如果当前表格日期与
dateValue相同,且当前表格的填充行数小于 7,则将数据填充到当前表格的下一行。 - 如果当前表格日期与
dateValue相同,且当前表格的填充行数大于或等于 7,则将数据填充到下一个表格。
注意:
- 确保 Sheet2 中的表格格式为 10 行,1-3 行为标题行,4-10 行为空白行。
- 宏将覆盖 Sheet2 中已有的数据。
- 宏将按 Sheet1 中的日期顺序填充数据。
原文地址: https://www.cveoy.top/t/topic/lDOb 著作权归作者所有。请勿转载和采集!