拆分工作簿为多个文件_VBA拆分任意列为表、工作簿

4ef3bad5d28d45d5cfb7f0216529946c.png baeeb4627acc2319135cb3e798f7ccdb.png 17b837cf51422ad51fa6c160517cc52c.png微信搜一搜 ba9455bd1f0436a271352b019dc49529.pngXData Analysis

模板:

bb48e10e54a47088c3f05b3d46aa62e1.png

原始表如上,例如我想安装行政区拆分为多个sheet

vba实现:

c5ede8c7ae8353beaf28ba132d723355.gif

f7d8d82ecaf94e00c1b8c8beaaa90471.png

 文件以及代码如下:

链接:https://pan.baidu.com/s/1LWashyX9drpGiDX8QJuhdw
提取码:5suv
 另外一种情况,拆分到工作簿,直接用下面代码:当前是拆分B列,自行修改下就行

        拆分列数组 = .Range("b1:b" & 行数)

改成自己要拆分的列

Sub 根据B列_拆分成工作薄()    Set 字典 = CreateObject("scripting.dictionary")    Application.ScreenUpdating = False: Application.DisplayAlerts = False    With Worksheets("sheet1")        行数 = .Cells(.Rows.Count, 1).End(xlUp).Row        列数 = .Cells(2, .Columns.Count).End(xlToLeft).Column        ReDim 表头加标题行数组(1 To 3)        For 非数据行 = 1 To 3            表头加标题行数组(非数据行) = .Rows(非数据行).RowHeight        Next 非数据行        ReDim 列数数组(1 To 列数)        For 列 = 1 To 列数            列数数组(列) = .Columns(列).ColumnWidth        Next 列        拆分列数组 = .Range("b1:b" & 行数)        For 行 = 4 To UBound(拆分列数组)            If Not 字典.exists(拆分列数组(行, 1)) Then                Set 字典(拆分列数组(行, 1)) = .Range("a1:k3")            End If            Set 字典(拆分列数组(行, 1)) = Union(字典(拆分列数组(行, 1)), .Cells(行, 1).Resize(1, 11))        Next 行    End With    Application.SheetsInNewWorkbook = 1    For Each 关键字 In 字典.keys        Set 新生薄 = Workbooks.Add        With 新生薄            With .Worksheets(1)                字典(关键字).Copy .Range("a1")                行数 = .Cells(.Rows.Count, 1).End(xlUp).Row                .Range("g3:k3").FormulaR1C1 = "=SUM(R4C:R" & 行数 & "C)"                For i = 1 To 2                    .Rows(i).RowHeight = 表头加标题行数组(i)                Next i                .Rows("3:" & 行数).RowHeight = 表头加标题行数组(3)                For 列 = 1 To 列数                    .Columns(列).ColumnWidth = 列数数组(列)                Next 列            End With            .SaveAs Filename:=ThisWorkbook.Path & "/" & 关键字            .Close False        End With    Next 关键字    Application.ScreenUpdating = True    MsgBox "数据拆分完毕!"End Sub
‍扫码加入小白编程,共同成长! 3e595f967d21a2c0060e7cfa796b001c.png

4f4d5ef7dbada414858eed1c892f8e8a.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值