Макрос Excel - Попытка захватить 5 рядов в 5 горизонтальных местах и ​​сложить друг на друга - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть один столбец данных, в котором 4 слова переведены под него. Затем это повторяется по всей колонке. Я хочу иметь 4 колонки с каждым языковым переводом в каждой. Они сложены друг на друга в данный момент. Я попробовал макрос, но, похоже, не смог его зациклить.

Range("B3").Select
Selection.Cut
Range("C2").Select
ActiveSheet.Paste
Range("B4").Select
Selection.Cut
Range("D2").Select
ActiveSheet.Paste
Range("B5").Select
Selection.Cut
Range("E2").Select
ActiveSheet.Paste
Range("B6").Select
Selection.Cut
Range("B3").Select
ActiveSheet.Paste
Range("B7").Select
Selection.Cut
Range("C3").Select
ActiveSheet.Paste
Range("B8").Select
Selection.Cut

Лучше всего использовать вырезание, а затем переместить первый столбец вверх и повторить то же действие?

Прикрепленное изображение данных слева и как оно должно выглядеть справа. Спасибо за любые советы, спасибо. enter image description here

1 Ответ

0 голосов
/ 05 сентября 2018

Притворяясь на мгновение, что языки в порядке, несколько разных способов сделать что-то:

1) Формулы - =Index(A:A,Row()*4+1) (в зависимости от 1 на 2, 3, 4)

2) Основы простой петли VBA-

For i = 2 to LastRowA
    if i mod 4 = 1 then
          LastRowB = 'LastRow for column B
          ws.range("B" & LastRowB + 1) = ws.range("A" & i)
     else if i mod 4 = 2 then
           LastRowC = 'LastRow for column B
          ws.range("C" & LastRowC + 1) = ws.range("A" & i)
     else if i mod 4 = 3 then
          LastRowD = 'LastRow for column B
          ws.range("D" & LastRowD + 1) = ws.range("A" & i)
     else if i mod 4 = 0 then
          LastRowE = 'LastRow for column B
          ws.range("E" & LastRowE + 1) = ws.range("A" & i)
     End if


Next i

Обратите внимание, что это просто грубая структура условного цикла, подобного этой, - для синтаксиса требуется дальнейшая настройка и редактирование (и некоторое исследование о том, как найти lastrow)

Я рекомендую формульный метод.

Также обратите внимание: методы, которые я перечислил, сохранят исходные данные, что является моим предпочтением при выполнении этого типа работы. Это позволяет вам получить бесплатное «Do over», если есть какие-либо ошибки.

...