Я пытаюсь объединить данные из двух разных листов распространения в один, который становится источником данных для пары сводных таблиц. Оба листа имеют разные макеты, поэтому я просматриваю первый лист, чтобы найти столбец, скопируйте диапазон данных под ним, а затем вставьте его в лист wDATA. Затем перейдите к следующему листу, найдите те же заголовки и вставьте ниже первого блока. Я получаю мою любимую ошибку, 1004. Я пробовал разные приемы и методы, но он не будет вставляться, вот что я начал с. Link - это файл с большим битом и данными. Я обещаю его чистоту. Любая помощь?VBA Excel Слияние динамических диапазонов от двух листов до одного, ошибка 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