看下效果:
- Sub JustTest()
- Dim D As New Dictionary, Arr, i&, ArrR(1 To 60000, 1 To 200), k&, Ar()
- Arr = Range("b2:d" & Cells(Rows.Count, 1).End(3).Row).Value
- For i = 1 To UBound(Arr)
- If Arr(i, 2) <> Arr(i, 3) Then
- If D.Exists(Arr(i, 1)) Then
- Ar(D(Arr(i, 1))) = Ar(D(Arr(i, 1))) + 1
- ArrR(D(Arr(i, 1)), Ar(D(Arr(i, 1)))) = Arr(i, 3)
- Else
- k = k + 1: D.Add Arr(i, 1), k
- ReDim Preserve Ar(1 To k): Ar(k) = 2
- ArrR(k, 1) = Arr(i, 1): ArrR(k, 2) = Arr(i, 3)
- End If
- End If
- Next i
- Application.ScreenUpdating = False
- Range([f2], Cells(Rows.Count, Columns.Count)).ClearContents
- [f2].Resize(k, Application.Max(Ar)) = ArrR
- Application.ScreenUpdating = True
- Set D = Nothing
- MsgBox "处理完毕!"
- End Sub
复制代码
VBA实现数据转置 .rar
(104.55 KB, 下载次数: 197)
|