Как скопировать столбцы с пустыми ячейками и вставить в новый лист VBA? - PullRequest
0 голосов
/ 23 октября 2019

Приведенный ниже код работает, но не копирует строки с пустыми ячейками, например, «Лист1» имеет в общей сложности 35 строк и 56 столбцов, но некоторые ячейки пусты, например, ячейки A28 и A31, это означает, что код будет копироваться и вставляться33 строки в «Листе 2», что исключает строки 28 и 31 вместо всех 35 строк.

Как изменить это, чтобы скопировать все 35 строк независимо от того, имеет ли они пустые ячейки или нет?

Моя цель - скопировать 10 конкретных столбцов для всех 35 строк из «Sheet1» с 56 столбцами в «Sheet2», который в настоящее время пуст и находится в другом порядке столбцов. Надеюсь, что это имеет смысл.

Sub Transfer_Macro ()
'
Dim lastrow As Long, erow As Long

lastrow = Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row

For i = 2 To lastrow

Worksheets("Sheet1").Cells(i, 1).Copy

erow = Worksheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Row

Worksheets("Sheet1").Paste Destination:=Worksheets("Sheet2").Cells(erow + 1, 1)

Worksheets("Sheet1").Cells(i, 3).Copy

Worksheets("Sheet1`").Paste Destination:=Worksheets("Sheet2").Cells(erow + 1, 3)

Next i

End Sub

1 Ответ

0 голосов
/ 23 октября 2019

Предполагая, что Луис Курадо правильно диагностировал вашу проблему, вы можете найти большую из последней строки ячеек в A и C.

Также у вас был некоторый запутанный синтаксис здесь

Worksheets("Sheet1").Paste Destination:=Worksheets("Sheet2").Cells(erow + 1, 1)

Наконец, вы можете передавать значения без использования буфера обмена.

Sub Transfer_Macro()

Dim lastrow As Long, erow As Long

With Worksheets("Sheet1")
    lastrow = WorksheetFunction.Max(.Cells(Rows.Count, 1).End(xlUp).Row, .Cells(Rows.Count, 3).End(xlUp).Row) 'could use Find instead for this
    For i = 2 To lastrow
        erow = Worksheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Row
        Worksheets("Sheet2").Cells(erow + 1, 1).Value = .Cells(i, 1).Value
        Worksheets("Sheet2").Cells(erow + 1, 3).Value = .Cells(i, 3).Value
    Next i
End With

End Sub

Обратите внимание, что при копировании пустых ячеек последняя строка не будет обновляться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...