Если еще не работали с надстройкой PowerQuery и не знаете что это такое, то для начала лучше ознакомиться со статьей: Power Query - что такое и почему её необходимо использовать в работе?
В качестве знакомства с некоторым функционалом и работой с Power Query возьмем печально известный многим отчет – Оборотно-Сальдовая ведомость. Выглядит он примерно так:
А нам надо все это привести в такой вид, чтобы можно было создать сводную таблицу и уже в этой сводной таблице крутить и вертеть данные в любом ракурсе. Т.е. на выходе надо сделать что-то вроде этого:
А из этого вот такая сводная таблица:
Проблемы видны сразу: многоуровневая шапка, несколько столбцов значений. Напрямую из такой таблицы не построить нормальную сводную, в которой можно нормально просматривать и сравнивать данные. Поэтому в любом случае необходимо эту таблицу преобразовывать таким образом, как показано на втором скрине "Результат - плоская таблица".
Если делать подобное вручную – то уйдет как минимум час, при этом время будет напрямую зависеть от кол-ва строк. Если же делать это через Power Query – это займет максимум полчаса независимо от количества строк. И то только в первый раз – познакомившись с надстройкой поближе и 10 минут будет за глаза для данной операции. Я постараюсь пошагово расписать весь процесс с иллюстрациями своих действий. Чтобы удобно было повторять действия из статьи можно
Пример работы с Power Query (62,9 КиБ, 3 074 скачиваний)
В приложенном есть лист, еще не преобразованной ОСВ. Он называется "Не обработанная ОСВ". Так же есть лист с уже подготовленной ОСВ(лист "Оборотно-сальдовая ведомость"), а так же с готовым запросом Power Query, созданной на его основе умной таблицей(лист "Лист2") и сводной таблицей(лист "Лист3").
Преобразовать подобную таблицу в "нормальную" можно как минимум двумя вариантами(из тех, что можно через интерфейс PowerQuery наколдовать):
Сначала нам надо подготовить саму оборотно-сальдовую ведомость(в дальнейшем я буду называть её кратко – ОСВ). Для этого выделяем ОСВ от заголовков и до конца, без строки итогов:
Переходим на вкладку Вставка и выбираем – Таблица. Снимаем галку с пункта "Таблица с заголовками" -Ок:
Сразу переходим на вкладку Данные(или на вкладку Power Query) -группа Загрузить и преобразовать -Из таблицы
Появится окно редактора запросов:
Теперь производим преобразования данных, для приведения этой таблицы в нормальную, так называемую "плоскую". Здесь есть два варианта - какой из них использовать выбирать вам:
- Вкладка Главная –Использовать первую строку в качестве заголовков(на рисунке выше выделено красным). Запоминаем где у нас Сальдо на начало периода, где Обороты за период, где Сальдо на конец периода. Это еще пригодится. Так же это можно сделать с вкладки Преобразование -Таблица -Использовать первую строку в качестве заголовков
- Еще раз повышаем заголовки(Главная –Использовать первую строку в качестве заголовков) и теперь у нас вместо Оборотов за период и Сальдо только Дебет и Кредит. Поэтому вспоминаем изначальную структуру и к каждому Дебет и Кредит дописываем через нижнее подчеркивание Тип операции: Сальдо на начало периода, Обороты за период и Сальдо на конец периода:
- Теперь выделяем первые 2 столбца(Номер и Наименование), переходим на вкладку Преобразование -Отменить свертывание других столбцов:
Здесь не мешает пояснить, что делает вообще означает данная команда. Несмотря на странное название, делает она очень нужную вещь: она транспонирует все столбцы, отличные от выделенных, преобразуя их в два столбца: в одном будут записаны имена заголовков, в другом значение каждой строки для этого заголовка:
- Теперь осталось только отделить Типы от Дебета и Кредита. Для этого выделяем столбец Атрибут -правая кнопка мыши -Разделить столбец -По разделителю. В появившемся окне в выпадающем списке "Выберите или введите разделитель" выбираем Пользовательский и записываем в появившееся поле нижнее подчеркивание:
- Переименовываем столбцы, чтобы получилось что-то вроде этого(главное, чтобы было понятно что в каком столбце):
- Теперь выделяем столбец с суммой, переходим на вкладку Преобразование и находим там пункт Тип данных. Указываем тип Десятичное число:
Примечание: если на каком-то этапе что-то сделали неправильно – не надо все переделывать и не спешите закрывать окно. В правой части окна запросов есть история проделанных изменений – Примененные шаги. В этом окне можно удалить один из шагов:
Только удалять надо тоже аккуратно – если пока еще не очень хорошо ориентируетесь в Power Query – лучше удалять только последний шаг, который повлек ошибку. Если удалить шаг из середины – это может повлечь ошибки в дальнейших шагах, поэтому я не рекомендую удалять шаги из середины истории.
После того как загрузили таблицу в модель:
- Вкладка Преобразование -Таблица -Транспонировать
- Выделяем первый столбец – вкладка Преобразование -Заполнить- Вниз
- Выделяем два первых столбца -правая кнопка мыши -Объединить столбцы. Разделитель – точка с запятой
- Транспонируем таблицу обратно: вкладка Преобразование -Таблица -Транспонировать
- вкладка Преобразование -Таблица -Использовать первую строку в качестве заголовков
- Выделяем первые 2 столбца -вкладка Преобразование -Отменить свертывание других столбцов
- Выделяем столбец Атрибут(в котором у нас "Сальдо на начало периода;Дебет" и пр.) -правая кнопка мыши -Разделить столбец -По разделителю -Точка с запятой
- Переименовываем столбцы в нормальные названия, т.к. в некоторых у нас Атрибут.1, Атрибут.2 и Значение
- Меняем тип данных для столбца с Суммой: вкладка Преобразование -Тип данных -Десятичное число
На этом преобразования завершены, переходим на вкладку Главная -Закрыть и загрузить. В исходной книге будет создан новый лист, на котором будет создана умная таблица из преобразованных данных. Теперь на основании этой умной таблицы мы можем создать сводную таблицу(выделяем любую ячейку внутри таблицы -вкладка Вставка -Сводная таблица) или производить другие действия для анализа данных.
При этом
Если же надо применить все тоже самое для другой таблицы – то выделяем любую ячейку результирующей умной таблицы -вкладка Запрос -Изменить. Находим самый первый шаг в Примененных шагах(как правило он называется Источник – выделяем и в строке формул меняем имя таблицы на имя таблицы нужной таблицы):
Надо ли пояснять, что описанные в статье принципы вполне применимы для любых таблиц с многоуровневыми шапками и не только. Главное понять сам принцип работы с запросами Power Query и после этого преобразовывать разные таблицы в правильные и нужные будет делом пяти минут.
Также см.:
Относительный путь к данным PowerQuery
План-фактный анализ в Excel при помощи Power Query
Дмитрий, добрый день!
Сегодня был у Вас на вебинаре по Power Query. Спасибо очень интересная тема. Подскажите, пожалуйста, при сохранении таблицы и выгрузки в лист возникает ошибка "Сбой инициализации источника данных". "Убедитесь что внешняя база данных доступна".
Спасибо!
Первое, что приходит в голову: работаете на корпоративном ПК и Power Query после создания не может подключиться к источнику из-за ограничений доступа. Либо у Вас сбой библиотек самого Excel(в этом случае требуется переустановка или восстановление Excel).
Если проблемы с правами доступа, то можете для начала посмотреть параметры источника данных:
Возможно, Вам потребуется указать учетные данные организации или обратиться в отдел ИТ за помощью.
Корпоративный ПК. Excel 2016. Открываю файл - создать запрос - параметры источника данных (список пустой "На этом компьютере нет сохраненных источников данных"). Возможно что-то делаю не корректно при создании запроса.
А что все-таки с правами доступа? Возможно, что запрос как раз и не получается сохранить из-за ограничений прав. ПК-то корпоративный - там такое сплошь и рядом.
Добрый день.
Подскажите, о каких именно правах доступа идет речь?
Имеется ввиду сетевые или какие-то специальные права доменной УЗ?
Евгений, обратитесь в свой отдел ИТ. Причин отказа в сохранении может быть связан с несколькими причинами, о которых больше Вам расскажут именно ИТ-специалисты внутри компании, т.к. именно они настраивают все права для пользователей. Как именно они это делают и что при этом запрещают - я сказать не могу.
Дмитрий, подскажите, а обязательно ли указывать полный путь к файлу "С:\..." или можно как-то относительный?
У меня в основной файл через Power Query тянутся ОСВ, остатки и еще много чего, и все они лежат в одной папке на гугл драйве, папка синхронизируется между домашним и рабочим компьютерами через настольный GDrive, но абсолютные пути у папок на ПК разные. И возникает конфликт - Power Query пишет, что не может найти файл по абсолютному пути.
Денис, в этой статье раскрывал данный вопрос:Относительный путь к данным PowerQuery
Дмитрий, добрый день!
Благодарю за такое открытие для меня как PQ, а особенно за преобразования таблиц. До этого самому приходилось вручную преобразовывать таблицы отчетов 1С по периодам в удобоваримый вид для источника сводной таблицы.
Потестил по второму варианту преобразований, получил практически то, что нужно. Остался один "затык", который пока не понял как можно сделать в PQ. А именно: остался столбец со строками: количество и выручка. В соседнем столбце, соответственно, значения этих строк. Строки повторяются на каждую позиции и на каждый период.
Вопрос заключается в следующем: как сделать разделение столбца на столбцы с названиями "количество" и "выручка" с заполненными значениями?
Олег, без примера данных помочь сложно. Возможно, здесь поможет что-то вроде Отмены свертывания столбцов, а может и более "хитрые" манипуляции. Обратитесь на форум:PowerQuery, PowerPivot, PowerBI и запросы - там можно приложить файл.
Дмитрий, благодарю за оперативный ответ!
Сейчас размещу на форуме с тестовым файлом
Написал в форуме в теме "Преобразование выгрузки из 1С" Файл приложен