Vba 一张工作表拆分多张工作表

 如图,这边需要按照工作内容拆分多个工作表,直接上代码:

Sub splitSht()
Dim sht As Worksheet
Dim d As Object
Dim j As Integer

    Set sht = ThisWorkbook.Worksheets("Sheet1")
    Set d = CreateObject("scripting.dictionary")
    With sht
        rrow = .Range("A65535").End(xlUp).Row
        For i = 2 To rrow
            strr = .Range("E" & i).Value
            If Not d.exists(strr) Then
                d.Add strr, .Range("A1").Resize(1, 7)
                Set d.Item(strr) = Union(d.Item(strr), .Range("A" & i).Resize(1, 7))
            Else
                Set d.Item(strr) = Union(d.Item(strr), .Range("A" & i).Resize(1, 7))
            End If
        Next
        k = d.keys
        i = d.items
        For j = 0 To d.Count - 1
            ThisWorkbook.Worksheets.Add after:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
            ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count).Name = k(j)
            i(j).Copy Worksheets(k(j)).Range("A1")
            Worksheets(k(j)).Cells.EntireColumn.AutoFit
        Next
    End With
End Sub

因为字典具有唯一key 的属性, 通过字典记录所有key 和用union获取所有值,开始的d.Add strr....是用于记录表的标题,然后通过 value.copy把值输出到每个信标中。

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值