Я с сожалением отмечаю, что вы плохо справились с этим вопросом, и надеюсь, что вы нашли решение в любом случае, но в случае, если я не предложу хотя бы промежуточный ответ. Он не очень автоматизирован по разным причинам, включая то, что я не знаю, какую версию Excel вы используете, и объяснение сложных формул утомительно! Кроме того, я отмечаю «у меня часто такие данные», поэтому, возможно, «правильным» решением будет либо маршрут к базе данных, либо, по крайней мере, VBA, если формат данных достаточно согласован и требования к обработке повторяются. Хотя для VBA вы, скорее всего, получите хороший ответ в StackOverflow.
Итак, результат, который я имею:
Не такой же порядок, как в вашем примере, но вы упомянули, что порядок не важен. Также у меня есть разница (выделено), но это из-за несоответствия между вашими примерами ввода и вывода.
Я добился этого, по сути, с помощью следующих шагов, предположив, что данные находятся в ColumnA:E
с метками столбца в Row1
:
- Сортировать
A:F
по GroupID.
- В
F2
ключ =IF(A2=A1,"","b")
и копирование вниз.
- Фильтруйте
F
и выберите b
.
- Копия видна в
H1
.
- Удалить данные, видимые в
ColumnA:F
- Сортировать
A:F
по GroupID.
- Копия видна на
M1
- Удалить данные, видимые в
ColumnA:F
- Повторите шаги 6-8 еще примерно 8 раз (при вставке каждый раз переходя по 5 столбцам), пока в
A:F
не останется данных.
- Удалите
A:G
, последний столбец и любые другие ячейки, содержащие формулу (отображается как b
).
- Выровняйте блоки вручную (возможно? - должна быть способна к "автоматизации" при необходимости).
- Удалите столбцы GroupID, кроме одного в крайнем левом углу.
- Применить границы.
В b
нет никакого значения - просто какой-либо маркер, но я выбрал эту букву, поскольку перемещал по одной блокировке b за раз.
Надеюсь, это все говорит само за себя, хотя я был бы рад уточнить (или попытаться исправить!) если необходимо.
Обратите внимание, что я работал над копией и рекомендую вам сделать это, так как Delete используется выше