Повторяющиеся значения - Microsoft Excel [закрыто]

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

Спасибо!

Райан Уилсон
источник
3
Добро пожаловать в Супер пользователя. Пожалуйста, не стесняйтесь создавать свой rmacros / script. Когда вы это сделаете, возвращайтесь к нам с любыми проблемами. Мы не сервис написания сценариев. Мы ожидаем, что пользователи сообщат нам, что они пробовали до сих пор (включая любые сценарии, которые они используют) и где они застряли, чтобы мы могли помочь с конкретными проблемами. Вопросы, которые задают только сценарии, являются слишком широкими и могут быть отложены или закрыты . Пожалуйста, прочитайте Как мне задать хороший вопрос? ,
ДэвидПостилл
1
Также попробуйте поискать на этом сайте ( Super User ). Excel - очень популярная тема, и на вопросы, подобные вашим, уже давались ответы.
Скотт

Ответы:

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: Количество раз, которое клиент должен повторить на листе назначения.

jcbermu
источник