2012-01-20 8 views
-4

私はちょっと探してきましたが、いくつかの答えが出てきましたが、Excelマクロにあまり精通していないので、私の直接的なニーズ。このようにN行目を選択して列に移動

、私は現在、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 
+1

すべてのレコードは、ちょうど3つのラインを持っていますか?市が行方不明の場合はコンマがまだそこにありますか?州と郵便番号の間にカンマはありませんか? – Jesse

答えて

3

は、ここで、各ステップを説明するために、SOMのコメントで、あなたのデータを再構築するための簡単なSubです。それは、データの整合性チェックやエラー処理を持っていない

、あなたがこれを追加する必要が堅牢なソリューションを作るために

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

関連する問題