Следующий лист 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, и у вас получится желаемая компоновка.