|
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
好久没来,今天进坛子正好碰到这个贴,本想练练手,呵呵,手生了,好一个找帖子抄,终于炒出来了,费这么大劲发上去吧,话说,要经常进坛修炼!- Sub 字典套字典基础入门案例()
- Dim d As Object, arr, brr, i%, j%, aa, s, bb, n%, cc
- arr = [a1].CurrentRegion
- Set d = CreateObject("scripting.dictionary")
- For i = 2 To UBound(arr)
- If Not d.exists(arr(i, 5)) Then
- Set d(arr(i, 5)) = CreateObject("scripting.dictionary")
- End If
- If Not d(arr(i, 5)).exists(arr(i, 4)) Then
- Set d(arr(i, 5))(arr(i, 4)) = CreateObject("scripting.dictionary")
- End If
- If Not d(arr(i, 5))(arr(i, 4)).exists(arr(i, 1)) Then
- ReDim brr(1 To 5): brr(1) = arr(i, 5): brr(2) = arr(i, 4)
- Else
- brr = d(arr(i, 5))(arr(i, 4))(arr(i, 1))
- End If
- For j = 1 To 3: brr(j + 2) = arr(i, j): Next
- d(arr(i, 5))(arr(i, 4))(arr(i, 1)) = brr
- Next
- s = Array("地区", "高校", "学号", "姓名", "年龄")
- Application.ScreenUpdating = False
- Application.DisplayAlerts = False
- For Each aa In d.keys
- Workbooks.Add
- With ActiveWorkbook
- For Each bb In d(aa).keys
- ReDim arr(1 To d(aa)(bb).Count, 1 To 5): n = 0
- For Each cc In d(aa)(bb).keys
- brr = d(aa)(bb)(cc)
- n = n + 1
- For j = 1 To UBound(brr): arr(n, j) = brr(j): Next
- Next
- .Worksheets.Add.Name = bb
- With .Worksheets(bb)
- .Range("a2").Resize(UBound(arr), 5) = arr
- .Range("a1").Resize(1, 5) = s
- End With
- Next
- .SaveAs ThisWorkbook.Path & "" & aa & ".xlsx"
- .Close True
- End With
- Next
- Application.ScreenUpdating = True
- Application.DisplayAlerts = True
- End Sub
复制代码 |
评分
-
1
查看全部评分
-
|