동일한 이름의 열이 여러 개있는 별도의 탭에 두 개의 테이블이 있습니다. 이 두 테이블의 데이터를 세 번째 탭의 새 테이블에 결합하고 싶습니다.VBA 테이블 열 이름을 반복하고 새 시트에 데이터를 결합하십시오.
열 위치 (예 : A, B, C ..)를 하드 코딩하고 복사하여 붙여 넣기해야하는 20 열을 수동으로 코딩하는 등 여러 가지 방법으로 실험 해 보았습니다. 위에. 그러나 필자는 복사하고 데이터를 가져 와서 세 번째 테이블에 추가해야하는 열 제목 배열의 루프를 실행하는 것이 좋습니다. 그렇게하면 위치가 움직이면 계속 작동하므로 열 제목 만 신경 써야합니다. 나는 누군가가 나를 도울 수 있기를 바랬을 정도로 배열을 사용하거나 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