Преобразование данных с многоярусными заголовками в Excel

Вопрос или проблема

Мне нужно преобразовать входную матрицу расписания с дублирующимися заголовками столбцов в таблицу, которую я могу запросить.

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

Временная метка A053 A053 A055 A055
20240606-0920 5MWE 5CRM_B 5ARV_CRL 5WWE3
20240606-1030 5MWE 5CRM_B 5ARV_CRL 5WWE3
20240606-1130 5MWE 5CRM_B 5ARV_CRL
20240606-1230 5MWE 5CRM_B

Дублирующиеся заголовки недопустимы в таблицах, поэтому в Excel я добавляю суффиксы к заголовкам и очищаю их в Power Query. Этот обходной путь довольно запутывает пользователей, которые просто хотят добавить новый класс.

Структура входной матрицы

Ожидаемый результат повёрнутой таблицы выглядит так:

Временная метка Класс Группа
20240606-0920 A053 5CRM_B
20240606-1030 A053 5CRM_B
20240606-1130 A053 5CRM_B
20240606-1230 A053 5CRM_B
20240606-0920 A053 5MWE
20240606-1030 A053 5MWE
20240606-1130 A053 5MWE
20240606-1230 A053 5MWE
20240606-0920 A055 5ARV_CRL
20240606-1030 A055 5ARV_CRL
20240606-1130 A055 5ARV_CRL
20240606-0920 A055 5WWE3
20240606-1030 A055 5WWE3

Есть ли лучший способ справиться с этим, не углубляясь в VBA?
Может быть, существует более удобная структура ввода, доступная для нетехнических пользователей? Или есть другие способы объединения столбцов? В качестве альтернативы может быть способ, при котором скрытые заголовки столбцов генерируются формулами на основе видимого?

=LET(L, LAMBDA(x, TOCOL(IFS(LEN(B2:E5), x), 2, 1)),
HSTACK(L(A2:A5),
       L(B1:E1),
       L(B2:E5)))

Функция Lambda L создана внутри let для выравнивания входного диапазона, если диапазон B2:E5 (группы) содержит данные.
Выравненные временные метки и классы и группы затем объединяются с помощью HSTACK.

Ответ или решение

На практике работы с данными в Excel часто возникает необходимость преобразовывать входные матрицы с повторяющимися заголовками столбцов в более структурированные формы, такие как таблицы, которые легче обрабатывать, анализировать и извлекать из них информацию. Проблема, описанная вами, связана именно с такой задачей – необходимость конвертации расписания учебных классов, где код класса является заголовком столбца, а ячейки содержат группы студентов, в таблицу, пригодную для последующего анализа. Рассмотрим, как можно решить эту задачу в условиях, когда использование VBA нецелесообразно или невозможно.

Теория

Прежде всего, нужно понять, почему дублирующиеся заголовки вызывают проблемы в Excel. Они нарушают основы табличной структуры, где каждый заголовок уникален и выступает в качестве ключа для поиска данных в соответствующем столбце. Дублирующиеся заголовки затрудняют такие процессы, как фильтрация, сортировка и сводка данных, поскольку Excel не может четко определить оригинальность данных в таких столбцах.

Пример

Рассмотрим матрицу с расписанием, представленную выше:

+-----------+------+-------+-------+-------+
| Timestamp | A053 | A053  | A055  | A055  |
+-----------+------+-------+-------+-------+
| 20240606-0920 | 5MWE | 5CRM_B | 5ARV_CRL | 5WWE3 |
| 20240606-1030 | 5MWE | 5CRM_B | 5ARV_CRL | 5WWE3 |
| 20240606-1130 | 5MWE | 5CRM_B | 5ARV_CRL |       |
| 20240606-1230 | 5MWE | 5CRM_B |         |       |
+-----------+------+-------+-------+-------+

Применение

Для решения задачи преобразования данной структуры в удобную таблицу можно воспользоваться Power Query – мощным инструментом Excel для трансформации данных. Power Query позволяет обрабатывать данные, применяя различные фильтры и правила, без необходимости использования программирования.

Шаг 1: Подготовка данных

  1. Импорт данных в Power Query

    • Выберите диапазон, содержащий вашу таблицу.
    • Перейдите на вкладку "Данные" и выберите "Из таблицы/диапазона" для импорта данных в Power Query Editor.
  2. Преобразование структуры таблицы

    • В редакторе Power Query выберите столбцы с дублирующимися заголовками.
    • Используйте функцию "Развернуть другие столбцы", чтобы объединить дублирующиеся столбцы в единую колонку с ключом-заголовком. Это можно сделать, преобразовав таблицу в длинную форму.
  3. Создание уникальных идентификаторов

    • Для разрешения использования дублирующихся заголовков создайте новую колонку, которая будет объединять код классной комнаты и время. Это может быть сделано путем комбинирования значений из "Timestamp" и текущих "Classroom" через настройку Power Query.
  4. Финальное преобразование

    • Оставьте необходимые столбцы: "Timestamp", "Classroom" и "Group". Это даст вам требуемую структуру:
+-----------+-------+---------+
| Timestamp | Classroom | Group   |
+-----------+-------+---------+
| 20240606-0920 | A053     | 5CRM_B  |
| 20240606-1030 | A053     | 5CRM_B  |
| 20240606-1130 | A053     | 5CRM_B  |
| 20240606-1230 | A053     | 5CRM_B  |
| ...       | ...    | ...    |
+-----------+-------+---------+

Дополнительные подходы

  1. Использование формул Excel
    Используйте функции LET и LAMBDA, чтобы реализовать функцию "растащить" диапазоны и создайте такую же плоскую структуру. Эти функции сильно упрощают формульное программирование и помогают в извлечении значений и их объединении.

  2. Оптимизация для пользователей
    Оптимизируйте рабочий лист так, чтобы он оставался простым для обычных пользователей. Например, предоставьте макросы или иконы для автоматизированных процессов, или создайте прозрачные описания шагов для ввода и редактирования данных.

Заключение

Использование Power Query позволяет управлять данными более гибко и уверенно, без необходимости углубляться в программирование на VBA. Данный подход особенно полезен для пользователей без технической подготовки, позволяя им вносить исправления и дополнять данные, не нарушая целостность и структуру таблицы. Надеюсь, эти рекомендации помогут вам преобразовать вашу матрицу расписания в более удобную, стандартизированную форму для анализа и использования.

Оцените материал
Добавить комментарий

Капча загружается...