2012-01-20 50 views
-4

我一直在尋找一些東西,並且遇到了一些可能的答案,但由於對Excel宏不太熟練,我不確定如何針對我的直接需求調整任何可能的解決方案。選擇每第N行並移動到列

因此,我現在有一個Excel數據集有10000條記錄每下面的例子:

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 
+1

是否所有的記錄都恰好三條線?如果紐約市失蹤了,那麼逗號還在嗎? State和Zip之間沒有逗號? – Jesse

回答

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 
+0

是的,這工作完美。不幸的是,由於時間的限制,我不得不尋找一種當時管理項目的不太優雅(乏味)的方式,這對於未來而言絕對是好事。 – Allison