同じ名前の列が複数ある別々のタブに2つのテーブルがあります。私はこれらの2つのテーブルのデータを3番目のタブの新しいテーブルに結合したいと思います。私はいくつかの方法で実験を試みたVBAテーブルの列名をループし、新しいシートにデータを結合する
はちょうどハード(A、B、C ...のような)列位置を符号化し、手動で20またはので、私はコピーする必要がある列およびペーストにコーディングようにこれを行うには以上。しかし、私はむしろコピーし、データをつかんで3番目のテーブルに追加する必要がある列タイトルの配列のループを実行したいと思います。そうすることで、場所が動かされても作業が継続するので、列のタイトルだけを心配する必要があります。私は配列を使用したり、VBAの名前付きテーブルを使って作業を進めているわけではないので、誰かが私を助けてくれることを期待していました。
例:
Dim arr1 As Variant
Dim vItm As Variant
Dim tbl1 As ListObject
Dim tbl2 As ListObject
Dim tbl3 As ListObject
arr1 = Array("Header1", "Header2", "Header3")
Set tbl1 = Worksheets("Sheet1").ListObjects("Table1")
Set tbl2 = Worksheets("Sheet2").ListObjects("Table2")
Set tbl3 = Worksheets("Sheet3").ListObjects("Table3")
For Each vItm In arr1
Set c = tbl2.ListColumns(vItm).DataBodyRange
If Not c Is Nothing Then
col = c.Column
With tbl2.DataBodyRange
tRows = .Rows.Count
tCols = .Columns.Count
Set CopyRng = .Range(.Cells(0, col), .Cells(tRows - 1, col))
End With
Set Dest = tbl1.HeaderRowRange.Find(vItm, LookIn:=xlValues, LookAt:=xlWhole, _
MatchCase:=False, SearchFormat:=False)
MsgBox Dest.Address
Else
MsgBox "Header not found"
Exit Sub
End If
Next vItm
表1の配列の外観の各列タイトルの
、以下のすべてのデータをコピーして、表3の対応する列のタイトルを貼り付け。これはすべての配列項目で行います。次に、配列の各列のタイトルについて、Table2を見て、下のすべてのデータをコピーし、Table3の対応する列タイトルにTable1からのデータを貼り付けます。
ここにお手伝いをしてください。ありがとう!
であなたは()、列ヘッダーのそれぞれの位置を特定するために検索を使用することができますので、私はそれを開始すると、あなたは特定の問題に実行する場合、とき/戻し投稿、いくつかのコードを書いてみてください。今すぐあなたの質問は少し広すぎる - あなたが記述するアプローチは合理的なので、始めてみてください。 –
@TimWilliams私はオリジナルの投稿のコードを更新して、これをどこで更新したのですか?今は、各ループに正しいデータがコピーされており、テーブルの正しい宛先列がデータを統合することになっていると思います。私は行き先のテーブルの最後のアクティブな行の下にデータを追加するために、宛先セルをどのようにオフセットするべきか明確ではないので、ちょっと固まっています。そして、私はまだ3番目のテーブルをループして同じことをする必要があります。 – ABH