У меня есть большой лист Excel. Мне интересно перемещать данные из одной ячейки в другую. Я исследовал о том, как оптимизировать функции копирования/вставки, чтобы занять как можно меньше времени, насколько это возможно, и обнаружили, что:Оптимизация функций и циклов копирования и вставки VBA
Sheet1.Range("A1").Value = Sheet1.Range("B1").Value
или
Sheet1.Range("A1").Copy Destination:=Sheet1.Range("B1")
быстрее:
Sheet1.Range("A1").Copy
Sheet1.Range("A1").PasteSpecial xlPasteValues
Application.CutCopyMode=False'Clear Clipboard
сейчас , Мне необходимо сделать копию со следующими параметрами:
Range("A1").Select
Selection.Copy
Range("B1").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Можно ли перевести это в код, похожий на один из предыдущих?
Также, что касается циклов. Как правило, быстрее избегать их (если это возможно) или как оптимизируется компилятор? Позвольте мне привести вам пример, чтобы вы меня не поняли:
Допустим, я хочу скопировать значения из «A1: A200» в «B1: B200». Какой метод тогда будет лучше вообще?
Dim counter As Integer
For counter = 1 To 200
Sheet1.Range("A" & CStr(counter)) = Sheet1.Range("B" & CStr(counter))
End counter
Или лучше просто использовать код:
Sheet1.Range("A1:A200").Copy Destination:=Sheet1.Range("B1:200")
Эти примеры являются причиной чрезвычайно упрощенной, но если кто-то может помочь мне понять принципы, примененные, это будет иметь большое значение для меня!
Самый быстрый способ скопировать весь диапазон будет использовать 'Таблицы (« Лист1 »). Диапазон (« A1: A200 »). Значение = Листы (« Лист1 »). Диапазон (« B1: B200 »). ', если вы хотите только скопировать значения –
A с циклом - это просто группировка команд, применяемых к подобному листу, например. Поэтому это технически быстрее, чем выписывать каждый код за строкой и выполнять их. – user1
Копирование диапазона будет меня быстрее, чем циклическое копирование. Но истинная функция, которая уменьшит время копирования, должна быть деактивацией обновления экрана (Application.ScreenUpdating = False перед копией и Application.ScreenUpdating = True после копирования). –