|
发表于 2013-11-2 19:41
|
显示全部楼层
本楼为最佳答案
本帖最后由 suye1010 于 2013-11-3 12:35 编辑
- Sub ExtractData()
- Dim arr, arr1, arr2, arr3, arr4(), TempArr(1 To 2), i, m, d, r, s, t, dc, z
- Set d = CreateObject("Scripting.Dictionary")
- arr = Range("AE1:AG" & Range("AE65536").End(xlUp).Row)
- m = 1
- For i = 1 To UBound(arr)
- arr1 = Split(arr(i, 1), ",")
- arr2 = Split(arr(i, 2), ",")
- arr3 = Split(arr(i, 3), ",")
- For r = 0 To UBound(arr1)
- For s = 0 To UBound(arr2)
- For t = 0 To UBound(arr3)
- If d.Exists(arr1(r) & arr2(s) & arr3(t)) Then
- If d(arr1(r) & arr2(s) & arr3(t))(1) <> m Then
- TempArr(1) = m
- TempArr(2) = d(arr1(r) & arr2(s) & arr3(t))(2) + 1
- d(arr1(r) & arr2(s) & arr3(t)) = TempArr
- End If
- Else
- TempArr(1) = m
- TempArr(2) = 1
- d(arr1(r) & arr2(s) & arr3(t)) = TempArr
- End If
- Next t
- Next s
- Next r
- If i < UBound(arr) Then
- If arr(i + 1, 1) = "" Then
- i = i + 1
- m = m + 1
- GoTo 100
- End If
- End If
- 100:
- Next i
- For Each dc In d.keys
- If d(dc)(2) = m Then
- z = z + 1
- ReDim Preserve arr4(1 To z)
- arr4(z) = dc
- End If
- Next
- Columns("AL").NumberFormatLocal = "@"
- If z = 0 Then Exit Sub
- If Range("AL1") = "" Then
- Range("AL1").Resize(z) = Application.Transpose(arr4)
- Else
- Range("AL" & Range("AL65536").End(xlUp).Row + 1).Resize(z) = Application.Transpose(arr4)
- End If
- End Sub
复制代码 |
|