可以按照以下步骤使用 VBA 实现将表中内容按省份分拆到新的表页:

  1. 创建一个新的 Excel 工作簿,并将原始数据表复制到该工作簿中。

  2. 在该工作簿中创建一个新的 VBA 模块,用于编写 VBA 代码。

  3. 在 VBA 模块中编写以下代码:

Sub SplitDataByProvince()
    Dim wsData As Worksheet
    Dim wsNew As Worksheet
    Dim rngData As Range
    Dim rngProvince As Range
    Dim cel As Range
    Dim lastRow As Long
    Dim i As Long
    
    '获取原始数据表对象
    Set wsData = ThisWorkbook.Sheets('原始数据表')
    
    '获取省份列的数据范围
    lastRow = wsData.Cells(Rows.Count, "A").End(xlUp).Row
    Set rngData = wsData.Range("A2:C" & lastRow)
    Set rngProvince = wsData.Range("B2:B" & lastRow)
    
    '循环遍历省份列表,创建新的表页并复制数据
    For Each cel In rngProvince
        '获取省份名称
        provinceName = cel.Value
        
        '检查是否已经存在对应的表页
        If WorksheetExists(provinceName) Then
            '如果已经存在,则直接复制数据到该表页
            Set wsNew = ThisWorkbook.Sheets(provinceName)
        Else
            '如果不存在,则创建新的表页并设置格式和标题
            Set wsNew = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
            wsNew.Name = provinceName
            With wsNew.Range("A1:C1")
                .Merge
                .Value = "订单详情 - " & provinceName
                .Font.Bold = True
                .Font.Size = 14
                .HorizontalAlignment = xlCenter
                .VerticalAlignment = xlCenter
            End With
            wsData.Range("A1:C1").Copy wsNew.Range("A1")
        End If
        
        '复制数据到新的表页
        For i = 1 To rngData.Rows.Count
            If rngProvince.Cells(i, 1).Value = provinceName Then
                wsData.Rows(i + 1).Copy wsNew.Rows(wsNew.Cells(Rows.Count, "A").End(xlUp).Row + 1)
            End If
        Next i
    Next cel
End Sub

Function WorksheetExists(sheetName As String) As Boolean
    Dim ws As Worksheet
    For Each ws In ThisWorkbook.Sheets
        If ws.Name = sheetName Then
            WorksheetExists = True
            Exit Function
        End If
    Next ws
    WorksheetExists = False
End Function
  1. 在代码中,修改以下部分,以适应实际数据表的结构和内容:
  • 将“原始数据表”修改为实际的原始数据表名称。
  • 将“A2:C”和“B2:B”修改为实际的数据范围,其中第一列为地区,第二列为省份,第三列为产品名称。
  • 根据实际需要修改新表页的标题和格式。
  1. 运行代码,将会按照省份分拆数据到新的表页中。如果已经存在对应的表页,则直接将数据复制到该表页中;否则创建新的表页,并设置格式和标题。
VBA 按省份分拆 Excel 数据表到新表页

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

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