2つの異なるスプレッドシートのデータを、ピボットテーブルのデータソースとなるものにマージしようとしています。両方のシートはレイアウトが異なるので、最初のシートをループしてその列を見つけ出し、その下のデータ範囲をコピーしてからwDATAシートに貼り付けます。次に、次のシートに移動し、同じヘッダーを見つけて、最初のブロックの下に貼り付けます。 私はお気に入りのエラー、1004を取得しています。私はさまざまな方法や手法を試しましたが、貼り付けられないので、ここから始めました。 Linkは、より大きなビットとデータを持つファイルです。私はその清潔を約束します。どんな助け?VBA Excel 2つのシートのダイナミックレンジを1つの1004のペーストエラーにマージする
For x = 1 To iEndcol 'TOP SECTION OF DATA -FBL5N
If InStr(Cells(1, x), "Sold") Then
Range(Cells(2, x), Cells(lEndRowA, x)).Copy _
Destination:=wDATA.Range(Cells(1, 1), Cells(lEndRowA, 1))
ElseIf Cells(1, x) = "Invoice#" Then
Range(Cells(2, x), Cells(lEndRowA, x)).Copy _
Destination:=wDATA.Range(Cells(1, 2), Cells(lEndRowA, 2))
ElseIf Cells(1, x) = "Billing Doc" Then
Range(Cells(2, x), Cells(lEndRowA, x)).Copy _
Destination:=wDATA.Range(Cells(1, 3), Cells(lEndRowA, 3))
ElseIf InStr(Cells(1, x), "Cust Deduction") Then
Range(Cells(2, x), Cells(lEndRowA, x)).Copy _
Destination:=wDATA.Range(Cells(1, 4), Cells(lEndRowA, 4))
ElseIf Cells(1, x) = "A/R Adjustment" Then
Range(Cells(2, x), Cells(lEndRowA, x)).Copy _
Destination:=wDATA.Range(Cells(1, 5), Cells(lEndRowA, 5))
ElseIf InStr(Cells(1, x), "Possible Repay") Then
Range(Cells(2, x), Cells(lEndRowA, x)).Copy _
Destination:=wDATA.Range(Cells(1, 6), Cells(lEndRowA, 6))
ElseIf InStr(Cells(1, x), "Profit") Then
Range(Cells(2, x), Cells(lEndRowA, x)).Copy _
Destination:=wDATA.Range(Cells(1, 7), Cells(lEndRowA, 7))
End If
Next
End If
' DO NOT REDEFINE lEndrowA until all data is moved
' Fills in data from the second source, wLID
If Not wLID Is Nothing Then
wLID.Activate
lEndRowB = Cells(4650, 1).End(xlUp).Row
iEndcol = Cells(1, 1).End(xlToRight).Column
For x = 1 To iEndcol 'BOTTOM
If InStr(Cells(1, x), "Sold-To") Then
Range(Cells(2, x), Cells(lEndRowB, x)).Copy _
Destination:=wDATA.Range(Cells(1, 1), Cells(lEndRowA + lEndRowB, 1))
ElseIf Cells(1, x) = "Invoice#" Then
Range(Cells(2, x), Cells(lEndRowB, x)).Copy _
Destination:=wDATA.Range(Cells(1, 2), Cells(lEndRowA + lEndRowB, 2))
ElseIf Cells(1, x) = "Billing Doc" Then
Range(Cells(2, x), Cells(lEndRowB, x)).Copy _
Destination:=wDATA.Range(Cells(1, 3), Cells(lEndRowA + lEndRowB, 3))
ElseIf InStr(Cells(1, x), "Cust Deduction") Then
Range(Cells(2, x), Cells(lEndRowB, x)).Copy _
Destination:=wDATA.Range(Cells(1, 4), Cells(lEndRowA + lEndRowB, 4))
ElseIf Cells(1, x) = "A/R Adjustment" Then
Range(Cells(2, x), Cells(lEndRowB, x)).Copy _
Destination:=wDATA.Range(Cells(1, 5), Cells(lEndRowA + lEndRowB, 5))
ElseIf InStr(Cells(1, x), "Possible Repay") Then
Range(Cells(2, x), Cells(lEndRowB, x)).Copy _
Destination:=wDATA.Range(Cells(1, 6), Cells(lEndRowA + lEndRowB, 6))
ElseIf InStr(Cells(1, x), "Profit") Then
Range(Cells(2, x), Cells(lEndRowB, x)).Copy _
Destination:=wDATA.Range(Cells(1, 7), Cells(lEndRowA + lEndRowB, 7))
End If
Next
End If
OOoooo、私はこれがより好きです。 Activesheetプロパティを使うことができたので、私は質問を殺すために戻ってきました。しかし、これははるかに良いです。 – Bippy