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

代码解释:

  1. 首先定义了一些变量,用于存储工作表、数据范围、表格范围、行号、索引等信息。
  2. 然后获取 Sheet1 中的日期和数据范围。
  3. 获取 Sheet2 中的表格范围。
  4. 初始化表格索引。
  5. 循环遍历 Sheet1 中的日期列。
  6. 计算当前日期的起始行号。
  7. 判断当前行是否已经有数据,如果有则增加表格索引。
  8. 判断当前日期是否已经填充过,如果没有则进行填充。
  9. 填充日期值。
  10. 循环遍历 Sheet1 中的数据列。
  11. 判断当前行是否已经填满,如果填满则增加表格索引。
  12. 填充数据值。
  13. 增加行号。

注意事项:

  • 代码中的表格范围和行数需要根据实际情况进行调整。
  • 该代码仅适用于数据类型为文本或数字的情况,如果数据类型为日期或时间,需要进行格式转换。

使用说明:

  1. 将代码复制到 Excel 的 VBA 编辑器中。
  2. 按 F5 键运行代码。
  3. 代码将自动将 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 工作簿中的数据按照日期分类,填充到多个表格中。该代码可根据实际情况进行调整,实现更多功能。

Excel 批量填充数据到表格:按日期分类

原文地址: https://www.cveoy.top/t/topic/lDT7 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录