Excel 批量填充数据到表格:按日期分类
Excel 批量填充数据到表格:按日期分类
本文将介绍如何使用 VBA 代码将 Excel 工作簿 Sheet1 中的日期和数据填充到 Sheet2 中的多个表格。每个表格对应一个日期,数据按日期分类填充,超出表格范围的数据自动填充到下一个表格。
数据格式:
- Sheet1:
- A1 列为日期,从 A2 开始有 1 到 100 行数据。
- A1 到 A10 列为数据,从 A2 开始有 1 到 100 行数据。
- Sheet2:
- 包含多个表格,每个表格大小为 A1 到 A10 列,共 10 行。
- 前 3 行为标题行,第 4 至 10 行为空白行。
- 从第 11 行开始,每 10 行为一个新的表格。
目标:
将 Sheet1 中的数据按照日期分类,填充到 Sheet2 的表格空白行中。如果一个表格填不下,就填入下一个表格,不同日期的数据不能填充在一个表格里。
代码示例:
Sub FillData()
Dim ws1 As Worksheet '定义Sheet1
Dim ws2 As Worksheet '定义Sheet2
Dim date_rng As Range '定义日期列的范围
Dim data_rng As Range '定义数据列的范围
Dim tbl_rng As Range '定义表格范围
Dim tbl_row As Long '定义表格行数
Dim tbl_idx As Long '定义表格索引
Dim date_val As Variant '定义日期值
Dim data_val As Variant '定义数据值
Set ws1 = ThisWorkbook.Sheets("Sheet1")
Set ws2 = ThisWorkbook.Sheets("Sheet2")
'获取日期和数据的范围
Set date_rng = ws1.Range("A2:A100")
Set data_rng = ws1.Range("B2:B100")
'获取表格范围
Set tbl_rng = ws2.Range("A1:A200")
'初始化表格索引
tbl_idx = 1
'循环日期列
For Each date_val In date_rng
'获取当前日期的行数
tbl_row = (tbl_idx - 1) * 10 + 4
'如果当前行已经有数据,则增加表格索引
If ws2.Cells(tbl_row, 1) <> "" Then
tbl_idx = tbl_idx + 1
End If
'判断当前日期是否已经填充过
If ws2.Cells(tbl_row, 1) <> date_val Then
'填充日期
ws2.Cells(tbl_row, 1) = date_val
'填充数据
For Each data_val In data_rng
'如果当前行已经填满,则增加表格索引
If tbl_row > (tbl_idx * 10) + 3 Then
tbl_idx = tbl_idx + 1
tbl_row = (tbl_idx - 1) * 10 + 4
End If
'填充数据
ws2.Cells(tbl_row, 2) = data_val
'增加行数
tbl_row = tbl_row + 1
Next data_val
End If
Next date_val
End Sub
代码解释:
- 首先定义了一些变量,用于存储工作表、数据范围、表格范围、行号、索引等信息。
- 然后获取 Sheet1 中的日期和数据范围。
- 获取 Sheet2 中的表格范围。
- 初始化表格索引。
- 循环遍历 Sheet1 中的日期列。
- 计算当前日期的起始行号。
- 判断当前行是否已经有数据,如果有则增加表格索引。
- 判断当前日期是否已经填充过,如果没有则进行填充。
- 填充日期值。
- 循环遍历 Sheet1 中的数据列。
- 判断当前行是否已经填满,如果填满则增加表格索引。
- 填充数据值。
- 增加行号。
注意事项:
- 代码中的表格范围和行数需要根据实际情况进行调整。
- 该代码仅适用于数据类型为文本或数字的情况,如果数据类型为日期或时间,需要进行格式转换。
使用说明:
- 将代码复制到 Excel 的 VBA 编辑器中。
- 按 F5 键运行代码。
- 代码将自动将 Sheet1 中的数据按照日期分类,填充到 Sheet2 中的表格空白行中。
示例:
假设 Sheet1 中的数据如下:
| 日期 | 数据1 | 数据2 | 数据3 | 数据4 | 数据5 | 数据6 | 数据7 | 数据8 | 数据9 | 数据10 | |---|---|---|---|---|---|---|---|---|---|---| | 2023-03-01 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | | 2023-03-01 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | | 2023-03-02 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | 2023-03-02 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | | 2023-03-03 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | | 2023-03-03 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
Sheet2 中的表格如下:
表格1:
| 日期 | 数据1 | 数据2 | 数据3 | 数据4 | 数据5 | 数据6 | 数据7 | 数据8 | 数据9 | 数据10 | |---|---|---|---|---|---|---|---|---|---|---| | 2023-03-01 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | | | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
表格2:
| 日期 | 数据1 | 数据2 | 数据3 | 数据4 | 数据5 | 数据6 | 数据7 | 数据8 | 数据9 | 数据10 | |---|---|---|---|---|---|---|---|---|---|---| | 2023-03-02 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
表格3:
| 日期 | 数据1 | 数据2 | 数据3 | 数据4 | 数据5 | 数据6 | 数据7 | 数据8 | 数据9 | 数据10 | |---|---|---|---|---|---|---|---|---|---|---| | 2023-03-03 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | | | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
...
运行代码后,Sheet2 中的表格将被填充如下:
表格1:
| 日期 | 数据1 | 数据2 | 数据3 | 数据4 | 数据5 | 数据6 | 数据7 | 数据8 | 数据9 | 数据10 | |---|---|---|---|---|---|---|---|---|---|---| | 2023-03-01 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | | | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
表格2:
| 日期 | 数据1 | 数据2 | 数据3 | 数据4 | 数据5 | 数据6 | 数据7 | 数据8 | 数据9 | 数据10 | |---|---|---|---|---|---|---|---|---|---|---| | 2023-03-02 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
表格3:
| 日期 | 数据1 | 数据2 | 数据3 | 数据4 | 数据5 | 数据6 | 数据7 | 数据8 | 数据9 | 数据10 | |---|---|---|---|---|---|---|---|---|---|---| | 2023-03-03 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | | | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
...
总结:
使用 VBA 代码可以方便快捷地将 Excel 工作簿中的数据按照日期分类,填充到多个表格中。该代码可根据实际情况进行调整,实现更多功能。
原文地址: https://www.cveoy.top/t/topic/lDT7 著作权归作者所有。请勿转载和采集!