Делюсь.
Есть такая проблема, что Power Query не берет форматы из ячеек листа, только сами значения.
Зачастую на это можно наплевать, но часто информация на листе организована в структуру - иерархию строк, которые "плюсиками" сворачиваются/разворачиваются.
Бывает, что разобрать эту структуру можно только получив/обозначив уровень такой иерархии где-то на листе, так как других признаков нет. А добыть номер уровня можно только при помощи VBA, или проставить руками.
В общем, говоря короче, наваял функцию для PQ, которая подтягивает к информации на листе еще и уровень иерархии строк, если таковая присутствует.
Пользуйтесь.
Описание на буржуинском:
Как пользоваться:
Если последний параметр true/null/опущен - получаем к стандартному выводу функции Excel.Workbook дополнительно два столбца:
1. Таблица из двух столбцов: RowIndex (0-based номер строки) и outlineLevel (уровень иерархии)
2. Таблица, содержащая исходные данные из столбца Data, к которой первым столбцом (outlineLevel) прицеплен уровень иерархии.
Если последний параметр false, то получаем только первый столбец из упомянутых выше, и что с ним делать - придумываем сами.
В следующих планах - уровень отступа в ячейках. Но это уже сильно сложнее (не по извлечению, а по притягиванию к таблицам PQ).
Есть такая проблема, что Power Query не берет форматы из ячеек листа, только сами значения.
Зачастую на это можно наплевать, но часто информация на листе организована в структуру - иерархию строк, которые "плюсиками" сворачиваются/разворачиваются.
Бывает, что разобрать эту структуру можно только получив/обозначив уровень такой иерархии где-то на листе, так как других признаков нет. А добыть номер уровня можно только при помощи VBA, или проставить руками.
В общем, говоря короче, наваял функцию для PQ, которая подтягивает к информации на листе еще и уровень иерархии строк, если таковая присутствует.
Пользуйтесь.
Описание на буржуинском:
Как пользоваться:
- Копируем код
- Создаем пустой запрос в PQ
- В редакторе заменяем код на скопированный -> получаем функцию.
- Полный путь к файлу (включая имя файла) xlsx или xlsm (например, "C:\PQ\test.xlsm")
- Имя листа (например, "Лист2"), который хотим получить (необязательно), или список имен листов типа {"Лист1", "Лист5"}. Если ничего не укажем - будет результат по всем листам.
- Параметр true/false (необязательно) - хотим ли, чтобы уровень иерархии строк был добавлен первым столбцом к данным, полученным с листа. По умолчанию true.
Если последний параметр true/null/опущен - получаем к стандартному выводу функции Excel.Workbook дополнительно два столбца:
1. Таблица из двух столбцов: RowIndex (0-based номер строки) и outlineLevel (уровень иерархии)
2. Таблица, содержащая исходные данные из столбца Data, к которой первым столбцом (outlineLevel) прицеплен уровень иерархии.
Если последний параметр false, то получаем только первый столбец из упомянутых выше, и что с ним делать - придумываем сами.
В следующих планах - уровень отступа в ячейках. Но это уже сильно сложнее (не по извлечению, а по притягиванию к таблицам PQ).
Изменено: - 19.01.2019 02:02:29
(update)
F1 творит чудеса