|
- Sub lqxs()
- Dim Arr, i&, Brr, x$, Myr&, Crr
- Dim d, k, t, d1, k1, t1, d2
- Set d = CreateObject("Scripting.Dictionary")
- Set d1 = CreateObject("Scripting.Dictionary")
- Set d2 = CreateObject("Scripting.Dictionary")
- Application.ScreenUpdating = False
- Application.DisplayAlerts = False
- Sheet5.Activate
- [a3:i5000].ClearContents
- Arr = Sheet1.[a1].CurrentRegion
- For i = 3 To UBound(Arr)
- If Arr(i, 1) = "" Then Exit For
- x = Arr(i, 1) & "," & Arr(i, 2) & "," & Arr(i, 4)
- d(x) = d(x) & i & ","
- Next
- Brr = Sheet2.[a1].CurrentRegion
- For i = 3 To UBound(Brr)
- If Brr(i, 1) = "" Then Exit For
- x = Brr(i, 1) & "," & Brr(i, 2) & "," & Brr(i, 4)
- d1(x) = d1(x) & i & ","
- Next
- k = d.keys: t = d.items: k1 = d1.keys: t1 = d1.items
- [a3].Resize(d.Count) = Application.Transpose(k)
- For i = 0 To UBound(k1)
- If Not d.exists(k1(i)) Then
- Myr = Cells(Rows.Count, 1).End(xlUp).Row + 1
- Cells(Myr, 1) = k1(i)
- End If
- Next
- Crr = [a1].CurrentRegion
- For i = 3 To UBound(Crr)
- d2(Crr(i, 1)) = i
- Next
- For i = 0 To UBound(k)
- n = d2(k(i))
- t(i) = Left(t(i), Len(t(i)) - 1)
- If InStr(t(i), ",") Then
- aa = Split(t(i), ",")
- For j = 0 To UBound(aa)
- Cells(n, 6) = Cells(n, 6) + Arr(aa(j), 6)
- Cells(n, 7) = Cells(n, 7) + Arr(aa(j), 8)
- Next
- Else
- Cells(n, 6) = Arr(t(i), 6): Cells(n, 7) = Arr(t(i), 8)
- End If
- Next
- For i = 0 To UBound(k1)
- n = d2(k1(i))
- t1(i) = Left(t1(i), Len(t1(i)) - 1)
- If InStr(t1(i), ",") Then
- aa = Split(t1(i), ",")
- For j = 0 To UBound(aa)
- Cells(n, 8) = Cells(n, 8) + Arr(aa(j), 6)
- Cells(n, 9) = Cells(n, 9) + Arr(aa(j), 8)
- Next
- Else
- Cells(n, 8) = Arr(t1(i), 6): Cells(n, 9) = Arr(t1(i), 8)
- End If
- Next
- [a3].Resize(UBound(Crr) - 2).TextToColumns DataType:=xlDelimited, Comma:=True
- Application.DisplayAlerts = True
- Application.ScreenUpdating = True
- End Sub
复制代码 |
评分
-
查看全部评分
|