- ©«¤l
- 1544
- ¥DÃD
- 40
- ºëµØ
- 0
- ¿n¤À
- 1568
- ÂI¦W
- 0
- §@·~¨t²Î
- Windows 7
- ³nÅ骩¥»
- Excel 2010 & 2016
- ¾\ŪÅv
- 100
- ©Ê§O
- ¨k
- ¨Ó¦Û
- ¥xÆW
- µù¥U®É¶¡
- 2020-7-15
- ³Ì«áµn¿ý
- 2025-11-7
|
¦^´_ 9# 198188
³o¦nÃø,¤£ª¾¹D¹ï¤£¹ï,½Ð«e½ú«ü±Ð
°õ¦æµ²ªG:
Option Explicit
Sub TEST1()
Dim brr, X, Y, Z, K, Q, i&, j%, n&, T1$, T8$
Set Z = CreateObject("Scripting.Dictionary")
Set Y = CreateObject("Scripting.Dictionary")
Set X = CreateObject("Scripting.Dictionary")
brr = Sheets(1).[A1].CurrentRegion
For i = 2 To UBound(brr)
If Y(brr(i, 1)) = "" Then
Y(brr(i, 1)) = "(" & Val(brr(i, 3))
Else
Y(brr(i, 1)) = Y(brr(i, 1)) & "+" & Val(brr(i, 3))
End If
Next
brr = Sheets(2).[A1].CurrentRegion
For i = 2 To UBound(brr)
T1 = brr(i, 1)
T8 = brr(i, 8)
If Y.Exists(T8) Then
If Not IsObject(Z(T8 & "/")) Then
Set Z(T8 & "/") = CreateObject("Scripting.Dictionary")
brr(i, 3) = Y(T8) & ")*(" & Val(brr(i, 3))
Z(T1) = brr(i, 3)
Else
Z(T1) = Z(T8) & "+" & Val(brr(i, 3))
brr(i, 3) = Y(T8) & ")*(" & Val(brr(i, 3))
End If
Z(T8 & "/")(i) = ""
Z(T8) = brr(i, 3)
End If
Next
For i = 2 To UBound(brr)
T1 = brr(i, 1)
T8 = brr(i, 8)
If Z.Exists(T8) And Not Y.Exists(T8) Then
If Not IsObject(Z(T8 & "/")) Then
Set Z(T8 & "/") = CreateObject("Scripting.Dictionary")
brr(i, 3) = Z(T8) & ")*(" & Val(brr(i, 3))
X(T1) = brr(i, 3)
Else
X(T1) = X(T8) & "+" & Val(brr(i, 3))
brr(i, 3) = Z(T8) & ")*(" & Val(brr(i, 3))
End If
Z(T8 & "/")(i) = ""
X(T8) = brr(i, 3)
End If
Next
For Each K In Z.Keys
If IsObject(Z(K)) Then
For Each Q In Z(K).Keys
n = n + 1
For j = 1 To UBound(brr, 2): brr(n, j) = brr(Q, j): Next
brr(n, 3) = brr(n, 3) & ")": 'Brr(N, 3) = "=" & Brr(N, 3)
Next
End If
Next
If n > 0 Then Workbooks.Add: [A1].Resize(n, UBound(brr, 2)) = brr
End Sub |
|