|
本帖最后由 dsmch 于 2014-8-17 21:42 编辑
- Sub Macro1()
- Dim arr, brr, crr(1 To 60000, 1 To 1), d, d2, w, i%, j&, s&, zf$$$$$$$$
- Set d = CreateObject("scripting.dictionary")
- Set d2 = CreateObject("scripting.dictionary")
- Sheets("汇总").Activate
- For i = 1 To Sheets.Count
- If Sheets(i).Name <> "汇总" And Application.CountA(Sheets(i).UsedRange) > 0 Then
- s = s + 1
- arr = Sheets(i).UsedRange
- zf = Sheets(i).Name
- Cells(1, s) = "仅" & zf & "有"
- d2(zf) = s
- For j = 2 To UBound(arr)
- If arr(j, 1) = "" Then GoTo line1
- If Not d.exists(arr(j, 1)) Then
- d(arr(j, 1)) = zf
- s2= s2 + 1: crr(s2, 1) = arr(j, 1)
- Else
- If InStr(d(arr(j, 1)), zf) = 0 Then d(arr(j, 1)) = d(arr(j, 1)) & "," & zf
- End If
- line1:
- Next
- End If
- Next
- ReDim brr(1 To 60000, 1 To s + 1)
- ReDim w(1 To s + 1)
- a = d.keys: b = d.items
- For i = 0 To d.Count - 1
- x = Split(b(i), ",")
- If UBound(x) = 0 Then
- n = d2(b(i))
- w(n) = w(n) + 1: brr(w(n), n) = a(i)
- End If
- If UBound(x) = s - 1 Then w(s + 1) = w(s + 1) + 1: brr(w(s + 1), s + 1) = a(i)
- Next
- Cells(1, s + 1) = "各表都有": Cells(1, s + 2) = "各表合并不重复"
- Range("a2").Resize(Application.Max(w), s + 1) = brr
- Cells(2, s + 2).Resize(s2) = crr
- End Sub
复制代码 |
|