VBA 代码:将 Sheet1 数据填充到 Sheet2
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
代码功能:
- 从 Sheet1 中读取数据,根据日期将数据填充到 Sheet2。
- 每个日期的数据占据 Sheet2 中的 10 行。
- 如果 Sheet2 中已存在该日期的数据,则将新数据填充到下一组 10 行中。
- 如果 Sheet2 中不存在该日期的数据,则将该日期和对应数据填充到 Sheet2 的下一组 10 行中。
代码解释:
lastRow1和lastRow2分别存储 Sheet1 和 Sheet2 的最后一行数据。dateValue存储 Sheet1 中当前行的日期。isDateFound用于判断 Sheet2 中是否已存在该日期的数据。- 代码使用双层循环遍历 Sheet1 和 Sheet2。
- 外层循环遍历 Sheet1 的所有数据。
- 内层循环遍历 Sheet2 的数据,每 10 行进行一次判断。
- 代码使用
Copy和Destination方法将数据从 Sheet1 复制到 Sheet2。 - 如果 Sheet2 中不存在该日期的数据,则使用
MsgBox显示提示信息。
注意:
- 代码中的日期必须在 Sheet1 的第一列。
- Sheet2 中的 A 列必须为空,用于存放日期。
- 可以修改代码中的
Step值来调整每个日期在 Sheet2 中占用的行数。
使用步骤:
- 打开 Excel 文件。
- 按 Alt+F11 打开 VBA 编辑器。
- 插入一个模块。
- 将代码复制到模块中。
- 运行代码。
代码运行结果:
代码将 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 著作权归作者所有。请勿转载和采集!