|
|
Sub 转置()
Application.DisplayAlerts = False
Set d = CreateObject("Scripting.Dictionary")
[a18:e5000].Clear
Arr = [a1].CurrentRegion
For i = 5 To UBound(Arr)
For j = 5 To UBound(Arr, 2) - 1
If Arr(i, j) <> "" Then
If Arr(2, j) <> "" And Arr(i, 1) = Arr(2, 4) Then
x = Arr(i, 1) & "|" & Arr(i, 2) & "|" & Arr(i, 3) & "|" & Arr(2, j)
ElseIf Arr(3, j) <> "" And Arr(i, 1) = Arr(3, 4) Then
x = Arr(i, 1) & "|" & Arr(i, 2) & "|" & Arr(i, 3) & "|" & Arr(3, j)
ElseIf Arr(4, j) <> "" And Arr(i, 1) = Arr(4, 4) Then
x = Arr(i, 1) & "|" & Arr(i, 2) & "|" & Arr(i, 3) & "|" & Arr(4, j)
ElseIf Arr(1, j) <> "" Then
x = Arr(i, 1) & "|" & Arr(i, 2) & "|" & Arr(i, 3) & "|" & Arr(1, j)
End If
d(x) = Arr(i, j)
End If
Next
Next
[a18].Resize(d.Count) = Application.Transpose(d.keys)
[a18].Resize(d.Count).TextToColumns OtherChar:="|", other:=True
[e18].Resize(d.Count) = Application.Transpose(d.items)
Application.DisplayAlerts = True
End Sub |
|