本文介绍如何使用 VBA 代码将一个汇总表格(月份在第 1 列,部门在第 2 列)按照部门和月份拆分成多个工作表。

Sub SplitDataByDepartmentAndMonth()
    Dim wsSummary As Worksheet
    Dim rngData As Range
    Dim rngCell As Range
    Dim wsDepartment As Worksheet
    Dim wsNew As Worksheet
    Dim strDepartment As String
    Dim strMonth As String
    Dim lastRow As Long
    Dim i As Long
    
    ' 设置汇总表格和数据范围
    Set wsSummary = ThisWorkbook.Worksheets('汇总表格') ' 修改为你的汇总表格所在的工作表名字
    lastRow = wsSummary.Cells(wsSummary.Rows.Count, 1).End(xlUp).Row
    Set rngData = wsSummary.Range('A2:B' & lastRow) ' 假设数据从第 2 行开始,第 1 列是月份,第 2 列是部门
    
    ' 创建一个新工作表作为部门的汇总表
    Set wsDepartment = ThisWorkbook.Worksheets.Add(After:=wsSummary)
    wsDepartment.Name = '部门汇总'
    
    ' 遍历数据范围
    For Each rngCell In rngData
        strDepartment = rngCell.Offset(0, 1).Value ' 获取部门名称
        strMonth = rngCell.Value ' 获取月份
        
        ' 检查部门工作表是否已存在,如果不存在则创建新工作表
        On Error Resume Next
        Set wsNew = ThisWorkbook.Worksheets(strDepartment)
        On Error GoTo 0
        If wsNew Is Nothing Then
            Set wsNew = ThisWorkbook.Worksheets.Add(After:=wsSummary)
            wsNew.Name = strDepartment
        End If
        
        ' 将数据复制到相应的工作表
        wsNew.Cells(wsNew.Rows.Count, 1).End(xlUp).Offset(1, 0).Resize(1, 2).Value = rngCell.Resize(1, 2).Value
        wsDepartment.Cells(wsDepartment.Rows.Count, 1).End(xlUp).Offset(1, 0).Resize(1, 2).Value = rngCell.Resize(1, 2).Value
    Next rngCell
    
    ' 删除原始汇总表格
    wsSummary.Delete
End Sub

使用说明:

  1. 将代码复制到 Excel VBA 编辑器中。
  2. 将代码中的 Set wsSummary = ThisWorkbook.Worksheets('汇总表格') 中的 '汇总表格' 修改为你的汇总表格所在的工作表名字。
  3. 运行代码。

代码功能:

  • 创建一个新的工作表,命名为 '部门汇总',用于汇总每个部门的数据。
  • 遍历汇总表格中的所有数据行。
  • 对于每一行数据,提取部门名称和月份。
  • 检查是否存在对应部门的工作表,如果不存在则创建一个新工作表,命名为部门名称。
  • 将当前数据行复制到相应的部门工作表和 '部门汇总' 工作表中。
  • 删除原始汇总表格。

注意:

  • 代码假设数据从第 2 行开始,第 1 列是月份,第 2 列是部门。
  • 你可以根据实际情况修改代码中的数据范围、列数和工作表名称。
  • 运行代码前请备份你的工作簿,以防意外数据丢失。
VBA 代码:将汇总表格按部门和月份拆分成多个工作表

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

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