У меня есть следующий код, который отлично работает для копирования целых ячеек в новое место назначения.
Dim ws As Worksheet, rng As Range
Set ws = Sheets("Duplicates")
Set rng = ws.Range("A2")
rng.Copy Destination:=Range("A2:A" & Range("G" & Rows.Count).End(xlUp).Row)
- Можно ли сделать так, чтобы справился
paste special
. - Или мне нужно разделить копию / вставить на две строки, используя два объекта диапазона?
РЕДАКТИРОВАТЬ:
Итак, мы пришли к выводу, что вы НЕ МОЖЕТЕ иметь специальную вставку в той же строке, что и копия. Я также обнаружил, что вы все равно можете этого не хотеть.
Если вы скопируете формулу из записи 1 и вставите ее во все записи как VALUES
, вы получите значение формулы для первой скопированной записи.
Это не то, что я хотел. Поэтому вам нужно скопировать формулы во все записи в виде формул, затем скопировать эту формулу и вставить как значения.
Dim ws As Worksheet, rng As Range
Set ws = Sheets("Duplicates")
Настройте первый диапазон (одна ячейка с формулой) и скопируйте / вставьте содержимое в нижнюю часть электронной таблицы на основе столбца G
:
Set rng = ws.Range("A2")
rng.Copy Destination:=Range("A2:A" & Range("G" & Rows.Count).End(xlUp).Row)
Выберите только что вставленную формулу со второго ряда вниз. Скопируйте их. Затем вставьте содержимое как значения в то же место.
Set rng = ws.Range("A3:A" & Range("G" & Rows.Count).End(xlUp).Row)
rng.Copy
rng.PasteSpecial (xlPasteValues)
Application.CutCopyMode = False