Мне нужен макрос Excel, который будет копировать каждую шестую строку определенного листа, начиная с седьмой строки, и вставлять значения этих строк (без смещения или удаления скопированных строк, содержащих формулы) в каждую шестую строку того же листа. рабочий лист, начиная с пятой строки (Соответственно скопируйте значения формулы седьмой строки и вставьте в пятую, скопируйте 13 и вставьте в 11, и так до последней значимой строки). Я вообще не разбираюсь в программировании, и ни нейросети, ни мои попытки не дали желаемого результата. Прошу вас о помощи, друзья.
Sub Copy_And_Insert_Rows()
Dim i As Integer
Dim lastRow As Integer
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
For i = 6 To lastRow Step 6
Rows(i).Copy
Rows(i - 2).Insert Shift:=xlDown
Next i
Application.CutCopyMode = False
End Sub
Нейронная сеть выдала такой результат, но она не делает того, что мне нужно, сдвигая строки вниз.
По просьбе комментатора уточняю свои требования к макросу. Я сделал следующий код для трех строк:
Sub Copy_And_Insert_Rows()
Range("d7:crg7").Copy
Range("d5:crg5").PasteSpecial xlPasteValues
Range("d13:crg13").Copy
Range("d11:crg11").PasteSpecial xlPasteValues
Range("d19:crg19").Copy
Range("d17:crg17").PasteSpecial xlPasteValues
End Sub
По сути мне нужно то же самое, но на несколько тысяч строк, что требует более сложного кода.
Вам нужно вставить новые строки или просто скопировать содержимое в существующие строки?
Или скопировать на другой лист или книгу?
Я добавил новый фрагмент кода, чтобы было понятнее, что мне нужно. Да, я хочу скопировать данные в уже существующие строки.


Попробуйте этот код:
Sub Copy_Rows()
Dim i As Long
Dim lastRow As Long
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
For i = 7 To lastRow Step 6
Rows(i).Columns("B:CRG").Copy
Rows(i - 2).Columns("B:CRG").PasteSpecial xlPasteValues
Next i
Application.CutCopyMode = False
End Sub
Вы можете ограничить копирование/вставку столбцами, которые вам действительно нужны.
Спасибо большое, это то, что я хотел. Можно ли не трогать имена строк (столбец А) или нужно искать обходные пути?
Я добавил обновление.
Благодаря решению MGonet я нашел решение для своего комментария к его решению. Извините за мой английский :)
Sub next_turn_vnutr_rinok()
Dim i As Long
Dim lastRow As Long
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
For i = 7 To lastRow Step 6
Rows(i).Copy
Rows(i - 2).PasteSpecial xlPasteValues
Cells(i - 3, 1).Copy
Cells(i - 2, 2).PasteSpecial xlPasteValues
Next i
Application.CutCopyMode = False
End Sub
Вам нужно будет уточнить, чего вы хотите. Вы говорите о копировании каждой шестой строки и вставке ее, но не упоминаете, где. Возможно, вам будет полезно показать нам примеры данных, ожидаемый результат и объяснить, почему предоставленный вами код не соответствует ему.