#vba #loops #copy #paste
#vba #циклы #Копировать #вставить
Вопрос:
У меня есть лист, содержащий около 860 записей. Размер может варьироваться, но не должен превышать тысячи строк.
Я хотел бы применить код ко всему листу.
Я хочу скопировать значения нечетных строк из столбца A и вставить это значение в четные строки столбца B.
Я хочу скопировать значения нечетных строк из столбца C и вставить это значение в четные строки столбца D.
Я хочу скопировать значения нечетных строк из столбца E и вставить это значение в четные строки столбца F.
Я не знаю, как перейти к следующей нечетной строке (от A5 до B4, от C5 до D4, от E5 до F4), пока значения не станут пустыми, что будет концом моего листа.
Sub myAwesomeMacro()
For i = 1 To 1000
Range("A3").Copy Range("B2")
Range("A3").Copy Range("D2")
Range("E3").Copy Range("F2")
Next i
End Sub
Чего я пытаюсь достичь в этом цикле:
Скопируйте A3 и вставьте это значение в B2
Скопируйте C3 и вставьте это значение в D2
Скопируйте E3 и вставьте это значение в F2
Затем возьмите следующую нечетную строку и выполните ту же процедуру:
скопируйте A5 и вставьте это значение в B4
Скопируйте C5 и вставьте это значение в D4
Скопируйте E5 и вставьте это значение в F4
Затем возьмите следующую нечетную строку и выполните ту же процедуру:
скопируйте A7 и вставьте это значение в B6
Скопируйте C7 и вставьте это значение в D6
Скопируйте E7 и вставьте это значение в F6
Ответ №1:
Вы можете сделать что-то вроде этого:
Sub myAwesomeMacro()
Dim i As Long
i = 3
Do While Len(Cells(i, 1).Value) > 0
Cells(i, 1).Copy Cells(i-1, 2)
Cells(i, 3).Copy Cells(i-1, 4)
Cells(i, 5).Copy Cells(i-1, 6)
i = i 1
Loop
End Sub
Ответ №2:
Это сделает вашу работу
Dim i As Long
Dim lastrow As Variant
With ActiveSheet
lastrow = .Range("A" amp; .Rows.Count).End(xlUp).Row
For i = 3 To lastrow
.Cells(i-1, "B") = .Cells(i, "A")
.Cells(i-1, "D") = .Cells(i, "C")
.Cells(i-1, "F") = .Cells(i, "E")
Next i
End With