Использование массива будет намного быстрее, чем зацикливание.В этом примере столбец A копируется в массив Hold_RNG
.Затем столбец B копируется в столбец A, а затем массив копируется в столбец B.
Sub SwapCOlumns()
Dim hold_rng() As Variant
Dim rowsToinclude As Long, WS As Worksheet
Set WS = ActiveSheet '<--- make sure this is correct worksheet
rowsToinclude = 2563 '<----- might want to make more dynamic
With WS
hold_rng = .Range("A1:A" & rowsToinclude)
.Range("A1:A" & rowsToinclude).Value = .Range("B1:B" & rowsToinclude).Value
.Range("B1:B" & rowsToinclude).Value = hold_rng
End With
End Sub
Обновлено: Я не хочу выбирать конкурирующий ответ, поскольку он прости эффективны, но наши два ответа дают хорошую иллюстрацию того, почему использование массивов для одновременного воздействия на электронную таблицу гораздо эффективнее, чем циклическое редактирование и редактирование.Я построил этот код , который будет синхронизировать результаты каждого подхода (вставка в столбец E) электронной таблицы.В одном раунде из 2563 строк результат был от 0 секунд до 4. Массив продолжал выводить данные в течение 0 секунд, в то время как циклический подход упал до 41 секунды при выполнении 9 испытаний.
Снимок экрана результатов.
Код времени можно найти на моей странице PasteBin (я не хочу, чтобы этот ответ выглядел смехотворно долго)