У меня есть список имен в 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 раз

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

2 ответа2

1

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

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

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

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

1

Для любого списка имен в первом столбце электронной таблицы 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .