Excel 多工作簿数据填充技巧:将 Sheet1 数据按日期填充到 Sheet2 多个表格
Excel 多工作簿数据填充技巧:将 Sheet1 数据按日期填充到 Sheet2 多个表格
本文将介绍如何使用 VBA 宏将 Excel 中 Sheet1 的数据按日期顺序填充到 Sheet2 中的多个表格。Sheet1 中的 A 列为日期,数据从 A1 到 A10 列,Sheet1 共有 1 到 100 行数据。Sheet2 中有多个重复表格,每个表格包含 10 行,前三行为标题行,第 4 至 10 行为空白行,第 11 行至 20 行为新的表格以此类推每 10 行一个表格。要求按照 sheet1 中的 A1 列的不同日期将全部数据填充在 sheet2 的表格空白行里,如果填不下就填在下一个表格里,使得不同日期的数据不允许填充在一个表格里。
实现思路
- 找到第一个空白表格: 在 Sheet2 中找到第一个空白表格,即第一个所有行都为空白的表格。
- 遍历 Sheet1 数据: 按照日期顺序遍历 Sheet1 中的数据。
- 填充数据: 将数据填充到空白表格的空白行中,从第 4 行开始填充。
- 切换表格: 如果一个表格填满了,就切换到下一个空白表格继续填充。
- 重复步骤 3 和 4,直到所有数据都填充完毕。
VBA 代码示例
Sub FillData()
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim lastRow As Long
Dim i As Long
Dim j As Long
Dim k As Long
Set ws1 = ThisWorkbook.Worksheets('Sheet1')
Set ws2 = ThisWorkbook.Worksheets('Sheet2')
k = 1 ' 用于记录当前是填充到了哪一张表格
For i = 2 To ws1.Cells(ws1.Rows.Count, 'A').End(xlUp).Row ' 遍历 sheet1 中的日期列
lastRow = ws2.Cells(ws2.Rows.Count, 'A').End(xlUp).Row ' 找到最后一行
For j = 1 To 10 ' 每张表格有 10 行
If ws2.Cells(lastRow + j, 'A') = '' Then ' 找到第一个空白行
ws2.Cells(lastRow + j, 'A') = ws1.Cells(i, 'A') ' 填充日期
ws2.Cells(lastRow + j, 'B') = ws1.Cells(i, j + 1) ' 填充数据
If j = 7 Then ' 如果填充到了第 10 行
k = k + 1 ' 换到下一个表格
End If
Exit For ' 填充完毕,退出循环
End If
Next j
Next i
ThisWorkbook.Save ' 保存工作簿
End Sub
代码解释
- 声明变量: 定义必要的变量,包括工作表对象、最后一行行号、循环计数器等。
- 设置工作表: 设置两个工作表对象,分别代表 Sheet1 和 Sheet2。
- 循环遍历数据: 使用 For 循环遍历 Sheet1 中的日期列,从第二行开始遍历。
- 找到空白行: 使用 For 循环遍历 Sheet2 中的表格,从最后一行开始,找到第一个空白行。
- 填充数据: 将 Sheet1 中的日期和数据填充到找到的空白行中。
- 切换表格: 如果填充到了第 10 行,则切换到下一个空白表格。
- 保存工作簿: 填充完毕后,保存工作簿。
使用方法
- 打开 Excel 工作簿,按 Alt + F11 进入 VBA 编辑器。
- 在 VBA 编辑器中插入一个模块(Insert -> Module)。
- 将上面的代码复制到模块中。
- 按 F5 运行代码。
注意事项
- 确保 Sheet1 中的 A 列为日期列,数据从 A1 到 A10 列。
- 确保 Sheet2 中的表格结构如上所述。
- 如果 Sheet2 中的表格数量不足以容纳所有数据,请手动添加更多表格。
- 可以根据实际情况调整代码中的表格大小和填充数据范围。
希望本文能够帮助你快速、高效地将 Sheet1 的数据填充到 Sheet2 中的多个表格。如果你还有其他 Excel 数据处理问题,欢迎留言讨论。
原文地址: https://www.cveoy.top/t/topic/lDTM 著作权归作者所有。请勿转载和采集!