Преобразуем отчёт с годами и городами в таблицу для анализа. Восстанавливаем шапку, отменяем свёртывание и сверяем суммы по годам.
В отчёте год часто записан над несколькими столбцами, а следующая строка содержит города или подразделения. Человеку такая шапка понятна. Для обработки нужно восстановить отдельное имя каждого поля и сохранить обе части смысла.
Если сразу повысить первую строку до заголовков, часть полей получит автоматические имена. Если сразу отменить свёртывание, значения потеряют понятную связь с годом и городом. Сначала подготовим шапку, затем превратим данные в длинную таблицу.
Учебный источник
Создайте в Excel таблицу с именем RawReport. Её технические заголовки — C1, C2, C3, C4 и C5. Две следующие строки являются исходной шапкой отчёта. Знак ∅ в примере ниже обозначает действительно пустую ячейку — его вводить не нужно.
| C1 | C2 | C3 | C4 | C5 |
|---|---|---|---|---|
| Банк | 2024 | ∅ | 2025 | ∅ |
| ∅ | Москва | Казань | Москва | Казань |
| Банк А | 10 | 20 | 15 | 25 |
| Банк Б | 30 | 40 | 35 | 45 |
Данные синтетические. В исходном отчёте 2024 год относится к двум соседним городам, 2025 год — к следующим двум. Общая сумма числовых значений равна 220. Это первый контроль, который сохраним после преобразования.

Восстанавливаем год для каждого столбца
Отделим первые две строки от остальной таблицы. Затем транспонируем этот небольшой фрагмент — столбцы станут строками. В полученном первом столбце годы и пропуски теперь расположены сверху вниз.
Применим заполнение вниз к первому столбцу. Значение 2024 заполнит относящийся к нему пропуск, затем то же произойдёт с 2025. Операция работает с null. Пустую строку или строку из пробелов перед таким шагом потребуется привести к null, если именно так выгружен пропуск. Поведение описано в документации Table.FillDown, а перестановка строк и столбцов — в справочнике Table.Transpose.
Теперь для каждого исходного столбца можно составить имя из двух частей. Получатся 2024|Москва, 2024|Казань, 2025|Москва и 2025|Казань. Первый столбец назовём «Банк». Разделитель выбран так, чтобы он не встречался внутри года или города.
Применяем имена к данным
Вернёмся к исходному источнику и удалим две строки шапки. Останутся две записи с банками и четырьмя суммами в каждой. Переименуем технические поля в подготовленные имена, сохраняя их порядок.
После этого оставим «Банк» как идентификатор и отменим свёртывание остальных столбцов. Получим поля «Банк», «ПериодГород» и «Сумма». Разделим составное поле по символу | на «Год» и «Город».
Если операция отмены свёртывания пока незнакома, её базовый смысл и простой пример есть в отдельном разборе матрицы в Power Query. В нашей задаче дополнительная работа нужна именно для восстановления двух уровней шапки.
Полный пример запроса
Создайте пустой запрос в открытой книге, перейдите в расширенный редактор и вставьте код. Он обращается к таблице RawReport внутри этой книги.
let
Source = Excel.CurrentWorkbook(){[Name="RawReport"]}[Content],
Header = Table.FirstN(Source, 2),
Rotated = Table.Transpose(Header),
Filled = Table.FillDown(Rotated, {"Column1"}),
Pairs = List.Skip(Table.ToRows(Filled), 1),
Names = {"Банк"} & List.Transform(
Pairs, each Text.From(_{0}) & "|" & Text.From(_{1})
),
Body = Table.Skip(Source, 2),
Renamed = Table.RenameColumns(
Body, List.Zip({Table.ColumnNames(Body), Names})
),
Long = Table.UnpivotOtherColumns(
Renamed, {"Банк"}, "ПериодГород", "Сумма"
),
Split = Table.SplitColumn(
Long, "ПериодГород",
Splitter.SplitTextByDelimiter("|", QuoteStyle.Csv),
{"Год", "Город"}
),
Result = Table.TransformColumnTypes(
Split, {{"Год", Int64.Type}, {"Сумма", type number}}, "ru-RU"
)
in
Result
Это учебный пример M-кода для указанной структуры. Ожидаемые записи и суммы ниже рассчитаны отдельно. Запуск именно этого запроса в настольном Power Query пока не подтверждён.
Код рассчитан на описанную структуру с двумя строками шапки. После загрузки результата проверьте восемь ожидаемых записей и контрольные суммы.
Как проверить результат
В результате должно быть восемь записей. У Банка А за 2024 год должны находиться Москва с суммой 10 и Казань с суммой 20, за 2025 год — суммы 15 и 25. Для Банка Б ожидаются 30, 40, 35 и 45 соответственно.
Проверьте общий итог 220. Затем сгруппируйте результат по году — для 2024 получится 100, для 2025 получится 120. Такая проверка способна обнаружить ошибку привязки года, которую одна общая сумма не покажет.
До повторного использования запроса проверьте уникальность составных имён. Если в одном году есть два столбца с одинаковым названием города, к идентификатору может потребоваться добавить показатель или подразделение. Если появляется третий уровень шапки, алгоритм нужно расширить под него.
Проверьте и пропуски в самой области данных. При отмене свёртывания исходные null могут не дать отдельных записей. Ожидаемое число строк поэтому определяется содержимым источника и выбранным правилом работы с пустыми значениями. Базовая операция описана в документации Microsoft по отмене свёртывания.
Для рабочего отчёта сохраните рядом с запросом описание входной структуры и контрольных итогов. По ним следующий сотрудник сможет понять, что изменилось, когда очередная выгрузка перестанет соответствовать образцу.
Файлы для самостоятельной проверки
В исходном CSV сохранены два уровня шапки и пропуски в названиях столбцов. Создайте из него таблицу RawReport, как описано выше. Второй CSV содержит восемь ожидаемых записей после преобразования. Оба файла используют синтетические данные.
Скачать исходный пример · Скачать контрольный результат
Сверьте количество записей и суммы по годам. Общий итог равен 220, за 2024 год — 100, за 2025 год — 120. Отдельно проверьте привязку города к году. Одного совпадения общей суммы для такой проверки недостаточно.
Контрольный файл описывает ожидаемый результат. Запуск приведённого M-запроса в настольном Power Query пока не подтверждён. Перед использованием на рабочей выгрузке выполните его на учебной копии и сравните строки.
На корпоративном обучении Excel можно разобрать подготовку отчётности и проверки итогов. Для обсуждения практикума пришлите описание структуры выгрузки без рабочих данных.
Практика на корпоративном обучении
Power Query для подготовки и проверки отчётности. Программа включает учебные задачи, самостоятельный расчёт и сверку результатов.