1

Мне ежемесячно предоставляется большая таблица, в которой требуется вводить до 6 экземпляров одного и того же идентификатора клиента вручную. Я хотел бы разработать код для макроса или VBA, который возьмет мой список клиентов и создаст серию повторяющихся значений в отдельных строках. Например, столбец А в настоящее время содержит следующее:

     A
1  Cust1
2  Cust2
3  Cust3

Мой VBA/Macro будет генерировать следующий вывод:

     A
1   Cust1
2   Cust1
3   Cust1
4   Cust1
5   Cust1
6   Cust1
7   Cust2
8   Cust2
9   Cust2
10  Cust2
11  Cust2
12  Cust2

Спасибо!

1 ответ1

0

С макросом, использующим VBA:

Public Sub customCustomers()
    Application.ScreenUpdating = False
    sourceSheet = "Sheet1"
    destSheet = "Sheet2"
    initialSrcRow = 1
    initialDstRow = 1
    times = 6
    Dim wkb As Workbook
    Dim wks, wks1 As Worksheet
    Set wkb = ThisWorkbook
    Set wks = wkb.Sheets(sourceSheet)
    Set wks1 = wkb.Sheets(destSheet)
    wks1.Rows.Clear
    seeking = True
    While seeking
        theCustomer = wks.Cells(initialSrcRow, 1)
        If theCustomer <> "" Then
            For i = 1 To times
                wks1.Cells(initialDstRow, 1) = theCustomer
                initialDstRow = initialDstRow + 1
            Next i
            initialSrcRow = initialSrcRow + 1
        Else
            seeking = False
        End If
    Wend
    Application.ScreenUpdating = True
    theMessage = MsgBox("Finished copying customers on Sheet: " & destSheet, vbOKOnly)
End Sub

Откройте VBA/Macros, в ThisWorkbook вставьте новый модуль и вставьте этот код справа.

Вы можете настроить следующие переменные в соответствии с вашими потребностями:

  • sourceSheet : имя исходного листа, в моем примере это Sheet1.

  • destSheet : имя листа назначения, в моем примере это Sheet2.

  • initialSrcRow : первая строка исходного листа.

  • initialDstRow : первая строка на листе назначения.

  • times : количество раз, которое клиент должен повторить на листе назначения.

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