VBA: самый быстрый способ скопировать и вставить строки данных

Мне интересно, есть ли более быстрый способ скопировать и вставить данные из одного столбца листа в другой столбец рабочего листа. Это пример кода, который у меня есть, и он работает медленно, так как он имеет более 10000 строк данных для копирования для каждого столбца, который я копирую. Данные, которые я копирую, не имеют фиксированного диапазона.

For i = 2 To lastrow ws.Cells(i, "AG") = bl.Cells(i, "F") ws.Cells(i, "AH") = bl.Cells(i, "G") ws.Cells(i, "AB") = bl.Cells(i, "N") ws.Cells(i, "AC") = bl.Cells(i, "R") ws.Cells(i, "BF") = bl.Cells(i, "S") ws.Cells(i, "AA") = bl.Cells(i, "U") ws.Cells(i, "BA") = bl.Cells(i, "X") ws.Cells(i, "BQ") = bl.Cells(i, "AA") ws.Cells(i, "B") = bl.Cells(i, "AB") ws.Cells(i, "A") = bl.Cells(i, "AD") ws.Cells(i, "BW") = bl.Cells(i, "AK") ws.Cells(i, "BH") = bl.Cells(i, "AL") ws.Cells(i, "BR") = bl.Cells(i, "AM") ws.Cells(i, "AL") = bl.Cells(i, "AP") ws.Cells(i, "AP") = bl.Cells(i, "BA") ws.Cells(i, "AQ") = bl.Cells(i, "BB") ws.Cells(i, "AU") = bl.Cells(i, "BC") ws.Cells(i, "AO") = bl.Cells(i, "BK") ws.Cells(i, "AT") = bl.Cells(i, "BO") Next i 

Скопируйте целые столбцы вместо ячеек!

 ws.Range("AG2:AH" & lastrow) = bl.Range("F2:G" & lastrow) '2 cols at once here ws.Range("AB2:AB" & lastrow) = bl.Range("N2:N" & lastrow) '.Value is implicit 

(и т. д.) должен быть в 1000 раз быстрее.

Обмен данными между VBA и Excel очень дорог для CPU. Поэтому передача больших блоков является более эффективной.

Просто попробуй:

 ws.Range("AG2:AG" & lastrow).Value = bl.Range("F2:F" & lastrow).Value ws.Range("AH2:AH" & lastrow).Value = bl.Range("G2:G" & lastrow).Value ws.Range("AB2:AB" & lastrow).Value = bl.Range("N2:N" & lastrow).Value 

и т. д. для остальных столбцов

кроме ответов, приведенных выше, которые работали для меня, я опубликовал другой аналогичный вопрос, в котором есть другой ответ от другого пользователя, который, как я думал, должен делиться здесь, чтобы принести пользу другим, кто смотрит вокруг в SO.

https://stackoverflow.com/a/41951959/7483682

Давайте будем гением компьютера.