Копирование строк с нечетными номерами из одного столбца в четную строку другого столбца

#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