|
发表于 2021-6-30 11:09
|
显示全部楼层
本楼为最佳答案
Dim a(1 To 3), d, list, r
Sub demo()
Set d = Nothing
Set d = CreateObject("Scripting.Dictionary")
Set list = CreateObject("System.Collections.ArrayList")
a(1) = Sheets(1).Range("h2:an" & Sheets(1).[h2].End(4).Row)
a(2) = Sheets(1).Range("ax2:cd" & Sheets(1).[ax2].End(4).Row)
a(3) = Sheets(1).Range("cn2:dt" & Sheets(1).[cn2].End(4).Row)
Sheets(2).[a:ag].ClearContents
r = 0: com 1
End Sub
Sub com(n)
If n > 3 Then
list.Clear
For Each Key In d.keys
If d(Key) = 3 Then list.Add Key
Next
If list.Count Then
r = r + 1
list.Sort
Cells(r, 1).Resize(1, list.Count) = list.ToArray
End If
Exit Sub
End If
For i = 1 To UBound(a(n))
For j = 1 To UBound(a(n), 2)
Key = a(n)(i, j)
If Key <> "" Then
d(Key) = d(Key) + 1
End If
Next
com n + 1
For j = 1 To UBound(a(n), 2)
Key = a(n)(i, j)
d(Key) = d(Key) - 1
Next
Next
End Sub
Sub del()
Set d = Nothing
Set d = CreateObject("Scripting.Dictionary")
b = [aj2:bp2]
For i = 1 To UBound(b, 2)
If b(1, i) = 0 Then Exit For
d(b(1, i)) = 1
Next
b = Range("a1:ag" & [a1].End(4).Row)
For i = 1 To UBound(b)
c = 0
For j = 1 To UBound(b, 2)
If d(b(i, j)) = 0 Then
c = c + 1: b(i, c) = b(i, j)
If j <> c Then b(i, j) = ""
End If
Next
Next
[a1].Resize(UBound(b), UBound(b, 2)) = b
End Sub
祝順心,南無阿彌陀佛!
|
评分
-
查看全部评分
|