Excel:总表拆分为工作表——VBA流

2025-10-27 20:31:47

1、步骤1:按ALT+F11组合键,打开VBE界面;

Excel:总表拆分为工作表——VBA流

2、步骤2:在左边工程窗口处,单击鼠标右键,在弹出的菜单中选择“插入”——“模块”;

Excel:总表拆分为工作表——VBA流

3、步骤3:双击新生成的模块,在右侧代码区,输入如下代码:

Sub 拆分表()

  Application.ScreenUpdating = False

  Application.DisplayAlerts = False

  On Error Resume Next

  Dim arr, brr, d

’“总表”是作者测试数据的工作表名称,如果你的总表工作表名称是其他的,如:XXX,把代码中所有的“总表”替换(CTRL+H)成XXX即可。

  a = Sheets("总表").[B65000].End(3).Row

’A2:J & a 是作者测试数据中的区域,大家可以改成自己的列表范围

  arr = Sheets("总表").Range("A2:J" & a)

  Set d = CreateObject("scripting.dictionary")

  For i = 1 To UBound(arr)

’为什么是arr(i,8)呢?因为我们是按照数据范围中的第8列内容也就是“供应商”列拆分总表。大家可以按照自己的需要改成某列号即可,下面的arr(i,8)都是这样的修改方式。

    d(arr(i, 8)) = d(arr(i, 8)) + ""

  Next i

  x = Sheets.Count

  For j = x To 1 Step -1

    If Sheets(j).Name <> "总表" Then

      Sheets(j).Delete

    End If

  Next j

  x = Sheets.Count

  For Each dic In d

    ReDim brr(1 To UBound(arr), 1 To UBound(arr, 2))

    Sheets.Add after:=Sheets(x)

    x = x + 1

    Sheets(x).Name = dic

    For i = 1 To UBound(arr)

      If arr(i, 8) = dic Then

        k = k + 1

        For j = 1 To UBound(arr, 2)

          brr(k, j) = arr(i, j)

        Next j

      End If

    Next i

Sheets("总表").Range("1:1").Copy Sheets(x).Range("1:1")

’ Range("A2"),是作者被粘贴区域的首个单元格,如果大家需要从其他部分粘贴,就把这里改一下。

    Sheets(x).Range("A2").Resize(UBound(brr), UBound(brr, 2)) = brr

    Erase brr

    k = 0

  Next

End Sub

Excel:总表拆分为工作表——VBA流

4、步骤4:运行代码,测试代码是否运行正常。

Excel:总表拆分为工作表——VBA流

5、步骤5:如果测试代码无误,将.XLSX文件另存为.XLSM文件(启用宏的EXCEL工作薄)。

Excel:总表拆分为工作表——VBA流

6、很多学生在初学VBA的时候,经常会忘记另存为.XLSM文件,虽然也能保存,但是保存的是工作表区域的数据,VBE界面的代码是没有被保存的,辛苦付之东流。

Excel:总表拆分为工作表——VBA流

7、虽然没有解释代码的含义,但却给出了代码的修改方式。这样一来,会VBA的同学可以看懂;而不会VBA的同学,可以根据不同的场景,修改代码。

Excel:总表拆分为工作表——VBA流

8、个人建议

整体操作流程如下。

Excel:总表拆分为工作表——VBA流

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢