Как скопировать конкретные столбцы с одного листа и вставить на другой лист в другом диапазоне?

Я новичок, и у меня есть этот код ниже, но это просто копирует последнюю строку из листа и пасты в диапазон листа 2. В основном пустая строка не обновляется. А также выдает ошибку времени выполнения 1004 – Определяемая приложением или объектная ошибка. Любая помощь приветствуется.

Sub copypaste() Dim lastrow As Long, erow As Long lastrow = ThisWorkbook.Worksheets("sheet1").Cells(Rows.Count, 1).End(xlUp).Row For i = 2 To lastrow Sheet1.Cells(i, 3).Copy erow = ThisWorkbook.Worksheets("sheet2").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row Sheet1.Paste Destination:=Worksheets("Sheet2").Cells(erow, 2) Sheet1.Cells(i, 14).Copy Sheet1.Paste Destination:=Worksheets("Sheet2").Cells(erow, 4) Sheet1.Cells(i, 6).Copy Sheet1.Paste Destination:=Worksheets("Sheet2").Cells(erow, 3) Next i Application.CutCopyMode = False ThisWorkbook.Worksheets("sheet2").Columns().AutoFit Range("A1").Select End Sub 

Допустим, это лист 1 листа 1

и это sheet2: sheet2:

Если заголовки немного отличаются от имен, и есть также изменение позиции. И последняя строка в листе 1 варьируется.

Попробуйте это, всегда лучше избегать копирования и вставки.

 Sub copypaste() Dim lastrow As Integer, erow As Integer, sheet1 As Worksheet, sheet2 As Worksheet Set sheet1 = Worksheets("Sheet1") Set sheet2 = Worksheets("Sheet2") lastrow = sheet1.Cells(Rows.Count, 1).End(xlUp).Row For i = 2 To lastrow erow = sheet2.Cells(Rows.Count, 2).End(xlUp).Offset(1, 0).Row sheet2.Cells(erow, 2) = sheet1.Cells(i, 3) sheet2.Cells(erow, 3) = sheet1.Cells(i, 6) sheet2.Cells(erow, 4) = sheet1.Cells(i, 14) Next i 'ThisWorkbook.Worksheets("Sheet2").Columns().AutoFit 'sheet1.Cells(1, 1).Activate End Sub 
  • Ошибка несоответствия типа, объявляющая переменную диапазона в Excel VBA
  • Давайте будем гением компьютера.