Преобразовать горизонтальную таблицу в вертикальную

Преобразовать горизонтальную таблицу в вертикальную

Следующий лист Excel необходимо переставить

от

ID  Name1  Name2  Name3

1   Alf    Bert   Fritz

2   Curt

3   Otto   Mike

4   Sue    Zack 

к

ID  Name

1   Alf

1   Bert

1   Fritz

2   Curt

3   Otto

3   Mike

4   Sue

4   Zack

Я упустил нужный поисковый термин. Думаю, он довольно распространен, но я просто не могу его правильно описать.

решение1

Попробуйте этот код. Он сам себя объясняет, поскольку работает пошагово. Ваши входные данные начинаются с A1, а выходные — с A8. Это можно изменить.

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

Sub single_col()
    Dim icell As Integer
    Dim irow As Integer, icol As Integer
    Dim nrows As Integer, ncols As Integer
    Dim rng_all As Range, rng_curr As Range, rng_trg As Range
    Set rng_all = Range("A2:D5")
    Set rng_trg = Range("A8")
    nrows = rng_all.Rows.Count
    icell = 0
    For irow = 1 To nrows
      Set rng_curr = rng_all.Rows(irow)
      ncols = WorksheetFunction.CountA(rng_curr)
      For icol = 2 To ncols
        icell = icell + 1
        Dim name As String
        name = rng_curr.Cells(1, icol).Text
        rng_trg.Value = rng_curr.Cells(1, 1).Text
        rng_trg.Offset(0, 1).Value = name
        Set rng_trg = rng_trg.Offset(1, 0)
      Next icol
    Next irow
End Sub

PS: код выше уже включает в себя модификацию, предложенную в комментарии.

решение2

У вас есть макет сводной таблицы, который вы хотите «отменить сведение». ЭтостатьяДжон Уокенбах показывает, что можно сделать всего несколькими нажатиями клавиш, и для этого не требуется код VBA.

В вашей конкретной ситуации я бы сделал следующее.

1. Откройте меню «старой» сводной таблицы с помощью Alt + D, P. Вы получите диалоговое окно, подобное показанному ниже. Выберите опцию «Несколько диапазонов консолидации» и нажмите «Далее».

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

2.На следующем шаге выберите «Я создам поля страницы»; нажмите «Далее».

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

3.Выделите диапазон ячеек, чтобы он был определен в верхней части диалогового окна, затем нажмите кнопку «Добавить», чтобы скопировать этот диапазон в список «Все диапазоны». Нажмите «Далее».

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

4. Выберите ячейку вне ваших данных. Здесь вы видите, что я выбрал F3 на том же листе. (Вы можете выбрать другой лист, если хотите.) Нажмите «Готово».

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

5.Вы получите сводную таблицу, как эта. В диалоговом окне снимите флажки «Строка» и «Столбец».

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

6. Это дает вам сводную таблицу из одной ячейки.

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

7. Затем дважды щелкните по одной ячейке, и на новом листе вы получите «несведенные» данные в виде новой таблицы:

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

Используя данные этой таблицы, вы теперь можете отфильтровать столбец C, чтобы отобразить непустые ячейки, а также удалить столбец B, и у вас получится желаемая компоновка.

Связанный контент