|
Sub test()
Dim i, j, k, m As Integer
Dim ar, br, cr, tepar1 As Variant
Dim e, kk
Dim d1, d2 As Object
Set d1 = CreateObject("scripting.dictionary")
Set d2 = CreateObject("scripting.dictionary")
ar = Sheets("原表").[a1].CurrentRegion
For j = 5 To 6
For i = 2 To UBound(ar)
ar(i, j) = Replace(ar(i, j), ":", ":")
ar(i, j) = Replace(ar(i, j), ";", ";")
ar(i, j) = Replace(ar(i, j), ";-;", "/ /")
tepar1 = Split(ar(i, j), ";")
For Each e In tepar1
If InStr(e, ":") > 0 And Len(e) > 3 Then
d1(Split(e, ":")(0)) = d1(Split(e, ":")(0)) + 1
d2(i & Split(e, ":")(0)) = Split(e, ":")(1)
End If
If Len(e) > 0 And InStr(e, ":") = 0 Then
d1("") = "": d2(i & "") = e
End If
Next
Next
Next
Sheets("效果").[a1].Resize(UBound(ar), 4) = ar
Sheets("效果").[e1].Resize(UBound(ar), 30).ClearContents
ReDim br(1 To 1, 1 To 30)
For Each kk In d1.keys
If kk <> "" Then
If d1(kk) = UBound(ar) - 1 Then
m = m + 1: br(1, m) = kk
End If
Else
m = m + 1: br(1, m) = kk
End If
Next
Sheets("效果").[e1].Resize(1, m) = br
ReDim cr(1 To UBound(ar) - 1, 1 To m)
For i = 2 To UBound(ar)
For j = 5 To m + 4
cr(i - 1, j - 4) = d2(i & br(1, j - 4))
Next
Next
Sheets("效果").[e2].Resize(UBound(ar) - 1, m) = cr
MsgBox "ok"
End Sub |
|