我一直在搜索并找到了一些可能的答案,但由于不熟悉Excel宏,我不确定如何根据我的直接需要调整任何可能的解决方案。
因此,我目前有一个Excel数据集,其中包含以下示例中的10,000条记录:
Name
Street
City, State Zip
Name
Street
City, State Zip
etc
我希望能够将street
的所有行移动到他们自己的列中,并将city, state zip
移动到自己的列中。
因此电子表格如下:
Name Street City, State Zip
Name Street City, State Zip
Name Street City, State Zip
答案 0 :(得分:3)
这里有一个简单的Sub
来重塑您的数据,并使用som注释来解释每一步。
它没有数据完整性检查或错误处理,您应该添加它以制作强大的解决方案
Sub ReshapeData()
Dim rng As Range
Dim Src As Variant, Dst As Variant
Dim i As Long
' Get Data From Sheet
' Assumes data starts at A1 on active sheet and has no gaps
Set rng = Range([A1], [A1].End(xlDown))
' Copy data to a variant array
Src = rng
' Set size of another array to match result
ReDim Dst(1 To UBound(Src) / 3, 1 To 3)
' Loop through source array, copy data to desination array
For i = 0 To UBound(Dst) - 1
Dst(i + 1, 1) = Src(i * 3 + 1, 1)
Dst(i + 1, 2) = Src(i * 3 + 2, 1)
Dst(i + 1, 3) = Src(i * 3 + 3, 1)
Next
' Delete original data
rng.ClearContents
' Put new data on sheet
rng.Resize(UBound(Dst), 3) = Dst
End Sub