Дублирование строк по количеству

я хотел бы дублировать строки по количеству, указанному в столбцах. у меня проблемы с этим

до сих пор мне удавалось дублировать строки по количеству, но я не смог добавить, для какого «блока» предназначена эта строка.

это данные: введите описание изображения здесь

ожидаемый результат: введите описание изображения здесь

это код, который я использую. это скорректированная версия другого кода

Подблоки копирования () Dim StartRow, LastRow, NewSheetRow As Long Dim n, i как целое число

Worksheets("test").Activate
LastRow = Cells(Rows.Count, 7).Row
NewSheetRow = 10

For StartRow = 10 To LastRow
n = CInt(Worksheets("test").Range("AA" & StartRow).Value)
For i = 1 To n
    Worksheets("test2").Range("C" & NewSheetRow).Value = Worksheets("test").Range("g" & StartRow).Value
    Worksheets("test2").Range("D" & NewSheetRow).Value = Worksheets("test").Range("H" & StartRow).Value
    Worksheets("test2").Range("E" & NewSheetRow).Value = Worksheets("test").Range("I" & StartRow).Value
    Worksheets("test2").Range("F" & NewSheetRow).Value = Worksheets("test").Range("J" & StartRow).Value
    Worksheets("test2").Range("G" & NewSheetRow).Value = Worksheets("test").Range("K" & StartRow).Value

    NewSheetRow = NewSheetRow + 1
Next i
Next StartRow

Конец сабвуфера

Не могли бы вы, отредактируйте свой вопрос, предоставить код, который у вас есть?

cybernetic.nomad 08.04.2019 21:10

у вас когда-нибудь было число больше 1 в вашей кросс-таблице?

Ryan B. 08.04.2019 21:13

В SQL это будет UNPIVOT. Используйте это как ссылку для поиска VB

KeithL 08.04.2019 21:14

1-й поиск. excel-university.com/unpivot-excel-данные Очевидно, вы можете сделать это только в графическом интерфейсе без VBA.

KeithL 08.04.2019 21:19

@РайанБ. да, цифры могут быть любыми. но скорее всего под 20

barabont 08.04.2019 21:23
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
0
5
45
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы используете Excel 2016, вы можете использовать PowerQuery, чтобы очень хорошо развернуть этот набор данных. У Кита есть очень полезная ссылка для вас в комментариях. Отфильтруйте нули, и вы почти у своего решения. В игру вступает небольшая сложность с возможностью появления этих повторяющихся рядов. Функция List.Numbers поможет вам в этом, если вы заинтересованы в том, чтобы немного проникнуть в суть языка M.

Тем не менее, это также не так уж сложно взломать в VBA. Я бы предложил немного другую стратегию, которая заключается в том, чтобы просто перебирать диапазон вашей кросс-таблицы, выдергивая заголовки строк и столбцов, когда вы набираете количество больше 0.

Sub foo()

    Dim outputRow As Integer

    'start your output at whatever row is best
    outputRow = 1

    'set your range to cover the counts in your crosstab
    For Each c In Range("A1:Z99")
        If c.Value > 0 Then

            For i = 1 To c.Value

                    'write the values off the current row headers over to comparable positions in your output row
                    Worksheets("test2").Cells(outputRow, 3).Value = Cells(c.Row, 1).Value
                    Worksheets("test2").Cells(outputRow, 4).Value = Cells(c.Row, 2).Value
                    .
                    .
                    .

                    'write the values off the current column headers into output row
                    Worksheets("test2").Cells(outputRow, 8).Value = Cells(1, c.Column).Value

                outputRow = outputRow + 1
            Next i

        End If
    Next c
End Sub

Удачи, надеюсь поможет

Если вы используете power query unpivot, вот пост о повторении строк столько раз, сколько у вас есть в ваших подсчетах. mrexcel.com/forum/power-bi/977045-pq-repeat-rows-n-times.htm‌​l

Ryan B. 08.04.2019 21:44

Спасибо. у меня нет Power Query, но я пытался использовать предоставленный вами код, просто не уверен, что вы установили Dim 'c' As

barabont 08.04.2019 21:56

Вам не нужно указывать размер c, но если вы следуете правилам, вы можете Dim c as Range

Ryan B. 08.04.2019 22:02

Другие вопросы по теме