Повторение списка ячеек в Excel X количество раз

454
Tony Chivers

У меня есть список имен в Excel,

Например

Lizzy William Kate Charles 

Я хотел бы использовать некоторый код VBA (или другой метод, чтобы повторить это 12 раз).

Я буду делать это снова и снова, и иногда мой список имен может включать меньше или больше.

Кто-нибудь получил какое-либо направление для меня, потому что я действительно застрял.

Я хотел бы получить в этом конкретном случае,

Lizzy William Kate Charles Lizzy William Kate Charles Lizzy William Kate Charles Lizzy William Kate Charles Lizzy William Kate Charles Lizzy William Kate Charles Lizzy William Kate Charles Lizzy William Kate Charles Lizzy William Kate Charles Lizzy William Kate Charles Lizzy William Kate Charles Lizzy William Kate Charles 

Что я пробовал:

Я нашел метод с использованием формул, см. Https://www.excel-bytes.com/how-to-repeat-a-range-of-items-multiple-times-in-excel/

Однако проблема с этим заключается в индексации исходного списка, так как мой список изменится. Ссылка на вопрос отложен: скопируйте и вставьте список имен в Excel 12 раз

Этот вопрос был первоначально задан другим пользователем и отложен, поэтому я не мог ответить. У меня есть решение, поэтому я повторно задал вопрос, и я предоставлю ответ и помечу оригинального вопроса.

0
@ Зарина Ахтар, пожалуйста, смотрите ответ Tony Chivers 5 лет назад 0

2 ответа на вопрос

1
Tony Chivers

Для любого списка имен в первом столбце электронной таблицы Excel этот код VBA будет повторяться на основе записи в ячейке C2, поэтому, если вы хотите, чтобы список повторялся 10 раз и в исходном списке было 10 имен, вставьте 110 в первоначальном списке.

 Option Explicit  Sub LRow()  Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet1") '<=== Edit Sheet Name Dim LRow As Long  LRow = ws.Range("A" & ws.Rows.Count).End(xlUp).Row  ws.Range("A1:A" & LRow).Select  End Sub 

Это первый, но необходимый вам код, который по существу выделяет что-либо в столбце A.

Вторая часть кода перетаскивает список так, чтобы он повторялся.

Добавьте их обоих и запустите второй как макрос.

Надеюсь, это поможет.

 Sub Master() ' ' Master Macro '  ' LRow Selection.AutoFill Destination:=Range("A1:A" & Range("C2").Value), Type:=xlFillDefault Range("A1:A" & Range("C2").Value).Select Range("B1").Select End Sub 
Как бы глупо это ни звучало, я должен спросить: есть ли что-то не так с набором текста в списке, а затем перетаскиванием вниз (отметка повторения в правом нижнем углу) до 12 раз? Вы можете оказаться коротким или длинным, но код не нужен, и это быстро. DroidW 5 лет назад 1
Да, я понимаю вашу точку зрения, но я думаю, что первоначальный аскер хочет иметь надежный способ, который может быть использован в других процессах автоматизации. «Я буду делать это снова и снова, и иногда мой список имен может включать меньше или больше». Tony Chivers 5 лет назад 1
Кристально чистый, спасибо. DroidW 5 лет назад 1
1
Gary's Student

С данными в столбце A, в B1 введите:

=IF(ROW()>COUNTA(A:A)*12,"",INDEX(A:A,MOD(ROW()-1,COUNTA(A:A))+1)) 

и скопировать вниз:

Столбец B будет автоматически корректироваться, если столбец A изменится.

Работает так же хорошо, без необходимости кода VBA! Tony Chivers 5 лет назад 0
@TonyChivers Да ............. спасибо за отзыв .............. как вы видите, легко создать простой последовательный индекс, который можно повторять , Gary's Student 5 лет назад 0

Похожие вопросы