|
发表于 2010-12-8 13:39
|
显示全部楼层
本楼为最佳答案
分表和总表的用户号不重复吧! Sub Test() Dim d As
Object Dim ArrF() As
Variant '分表 Dim ArrZ() As
Variant '总表 Dim ArrJG(1 To 100000, 1 To 3) '结果 Dim i&, j&, k&
Set d = CreateObject("scripting.dictionary") ArrF = Range("A2:C" & Range("A2").End(xlDown).Row).Value ArrZ = Range("E2:G" & Range("E2").End(xlDown).Row).Value For i = 1 To
UBound(ArrF) d(ArrF(i, 1)) = i Next i
For i = 1 To
UBound(ArrZ) If Asc(ArrZ(i, 1)) > 0 Then If d.exists(ArrZ(i, 1)) Then j = d(ArrZ(i, 1)) If ArrF(j, 2) <> ArrZ(i, 2) Or ArrF(j, 3) <> ArrZ(i, 3) Then k = k + 1 ArrJG(k, 1) = "'" & ArrZ(i, 1) If ArrF(j, 2) = ArrZ(i, 2) Then ArrJG(k, 2) = Empty Else ArrJG(k, 2) = ArrZ(i, 2) End
If If ArrF(j, 3) = ArrZ(i, 3) Then ArrJG(k, 3) = Empty Else ArrJG(k, 3) = ArrZ(i, 3) End
If End
If Else k = k + 1 ArrJG(k, 1) = "'" & ArrZ(i, 1) ArrJG(k, 2) = ArrZ(i, 2) ArrJG(k, 3) = ArrZ(i, 3) End
If End
If Next i
Range("I:K").Clear Range("I2") = "用户号" Range("J2") = "规格1" Range("K2") = "规格2" Range("I3").Resize(k, 3) = ArrJG End
Sub |
|