Источник excel workbook file contents

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

Что же сделать в такой ситуации? Давайте рассмотрим этот случай подробнее на следующем примере.

Постановка задачи

Предположим, что у нас в папке E:Отчеты по продажам лежит файл Топ-100 товаров.xls, представляющий собой выгрузку из нашей корпоративной базы данных или ERP-системы (1С, SAP и т.п.) Этот файл содержит информацию о наиболее популярных товарных позициях и выглядит внутри примерно так:

Исходные данные

С ходу, наверное, понятно, что работать с ним в Excel в таком виде практически невозможно: будут мешать пустые строки через одну с данными, объединенные ячейки, лишние столбцы, многоуровневая шапка и т.д.

Поэтому рядом с этим файлом в той же папке мы создаём ещё один новый файл Обработчик.xlsx, в котором создадим запрос Power Query, который будет загружать страшненькие данные из исходного файла-выгрузки Топ-100 товаров.xls, и приводить их в порядок:

Два исходных файла в папке

Создаем запрос к внешнему файлу

Открыв файл Обработчик.xlsx, выберем на вкладке Данные команду Получить данные — Из файла — Из книги Excel (Data — Get Data — From file — From Excel), затем укажем местоположение исходного файла и нужный нам лист. Выбранные данные загрузятся в редактор Power Query:

Загруженные данные в Power Query

Приведём их в нормальный вид:

  1. Удалим пустые строки через Главная — Удалить строки — Удалить пустые строки (Home — Remove Rows — Remove Empty Rows).
  2. Удалим ненужные 4 верхних строки через Главная — Удалить строки — Удалить верхние строки (Home — Remove Rows — Remove Top Rows).
  3. Поднимем первую строку в шапку таблицы кнопкой Использовать первую строку в качестве заголовков на вкладке Главная (Home — Use first row as header).
  4. Отделим пятизначный артикул от названия товара во втором столбце, используя команду Разделить столбец на вкладке Преобразование (Transform — Split Column).
  5. Удалим ненужные столбцы и переименуем заголовки оставшихся для лучшей наглядности.

В итоге у нас должна получиться следующая, гораздо более приятная, картина:

Приведенный в порядок файл

Осталось эту облагороженную таблицу выгрузить обратно на лист в наш файл Обработчик.xlsx командой Закрыть и загрузить (Home — Close&Load) на вкладке Главная:

Выгруженные на лист результаты запроса

Находим путь к файлу в запросе

Теперь давайте посмотрим как выглядит наш запрос «под капотом», на встроенном в Power Query внутреннем языке с лаконичным названием «М». Для этого вернемся в наш запрос двойным щелчком по нему в правой панели Запросы и подключения и на вкладке Просмотр выберем Расширенный редактор (View — Advanced Editor):

Находим путь к файлу в расширенном редакторе

В открывшемся окне во второй строке сразу же обнаруживается жёстко прописанный путь к нашему исходному файлу выгрузки. Если мы сможем заменить эту текстовую строку на параметр, переменную или ссылку на ячейку листа Excel, где этот путь будет заранее прописан, то мы сможем впоследствии легко его менять.

Добавляем умную таблицу с путём к файлу

Закроем пока Power Query и вернёмся в наш файл Обработчик.xlsx. Добавим новый пустой лист и сделаем на нём маленькую «умную» таблицу, в единственной ячейке которой будет записан полный путь к нашему файлу исходных данных:

Умная таблица с путем к файлу данных

Для создания «умной» таблицы из обычного диапазона можно использовать сочетание клавиш Ctrl+T или кнопку Форматировать как таблицу на вкладке Главная (Home — Format as Table). Заголовок столбца (ячейка А1) может быть совершенно любым. Также обратите внимание, что для понятности я дал таблице имя Параметры на вкладке Конструктор (Design).

Скопировать из Проводника путь или даже ввести его вручную не представляет, конечно, особой сложности, но лучше всего минимизировать человеческий фактор и определять путь, по возможности, автоматически. Это можно реализовать с помощью стандартной функции рабочего листа Excel ЯЧЕЙКА (CELL), которая умеет выдавать кучу полезной информации об указанной в качестве аргумента ячейке — в том числе и путь к текущему файлу:

Функция ЯЧЕЙКА

Если предположить, что файл с исходными данными всегда лежит в той же папке, что и наш Обработчик, то путь, который нам нужен можно сформировать следующей формулой:

Находим путь формулой

=ЛЕВСИМВ(ЯЧЕЙКА(«имяфайла»);НАЙТИ(«[«;ЯЧЕЙКА(«имяфайла»))-1)&»Топ-100 товаров.xls»

или в английской версии:

=LEFT(CELL(«filename»);FIND(«[«;CELL(«filename»))-1)&»Топ-100 товаров.xls»

… где функция ЛЕВСИМВ (LEFT) берёт из полной ссылки кусок текста до открывающей квадратной скобки (т.е. путь к текущей папке), а затем к нему приклеивается имя и расширение нашего исходного файла с данными.

Параметризуем путь в запросе

Остался последний и самый главный штрих — прописать в запросе путь к исходному файлу Топ-100 товаров.xls, сославшись на ячейку А2 нашей созданной «умной» таблицы Параметры.

Для этого вернемся в запрос Power Query и ещё раз откроем Расширенный редактор на вкладке Просмотр (View — Advanced Editor). Вместо текстовой строки-пути в кавычках «E:Отчеты по продажамТоп-100 товаров.xlsx» введём туда вот такую конструкцию:

Вводим путь как параметр

Excel.CurrentWorkbook(){[Name=»Параметры»]}[Content]{0}[Путь к исходным данным]

Давайте разберемся из чего она состоит:

  • Excel.CurrentWorkbook() — это функция языка М для обращения к содержимому текущего файла
  • {[Name=»Параметры»]}[Content] — это уточняющий параметр к предыдущей функции, указывающий, что мы хотим получить содержимое «умной» таблицы Параметры
  • [Путь к исходным данным] — это имя столбца в таблице Параметры, к которому мы обращаемся
  • {0} — это номер строки в таблице Параметры, из которой мы хотим взять данные. Шапка — не в счет и нумерация начинается от нуля, а не от единицы.

Вот и всё, собственно.

Осталось нажать на Готово и проверить как работает наш запрос. Теперь при пересылке всей папки с обоими файлами внутри на другой ПК запрос будет сохранять работоспособность и определять путь к данным автоматически.

Ссылки по теме

  • Что такое Power Query и зачем он нужен при работе в Microsoft Excel
  • Как импортировать в Power Query плавающий фрагмент текста
  • Редизайн двумерной кросс-таблицы в плоскую с помощью Power Query

Файлы к уроку:

  • Для спонсоров Boosty
  • Для спонсоров VK

Ссылки:

  • Страница курса
  • Плейлист YouTube
  • Плейлист ВК

Описание

В этом уроке мы научимся подключаться к книге Excel. Помимо самого подключения научимся делать следующее:

  • Указание типов данных столбцов
  • Указание типов данных с использованием локали (тип данных с языком)
  • Добавим столбец, который извлечет текст перед разделителем — аналог функции ЛЕВСИМВ в сочетании с НАЙТИ
  • Добавим столбец, который извлечет последние 2 символа — аналог функции ПРАВСИМВ
  • Добавим столбец, который извлечет текст между разделителями — аналог функции ПСТР
  • Разделим столбец по разделителю — аналог операции текст по столбцам из стандартного функционала Excel

Решение

Подготовка к подключение к Excel-книге в Power Query
  • Скачайте все приложенные файлы
  • Откройте видео к уроку
  • Создайте новую книгу
Подключение к Excel в Power Query

1. В новой книге подключитесь к файлу. Данные — Получить данные — Из файла — Из книги

2. Укажите скачанный файл с данными

3. Удалите все шаги кроме шага Источник

4.. Кликните по ссылке Table, чтобы развернуть таблицу

5. Поднимите заголовки. Главная — Использовать первую строку в качестве заголовков

6. Укажите типы данных для текстовых столбцов

7. Для числовых столбцов измените тип данных с использованием локали

Теперь пора разделить столбец Product Number. Сначала извлечем первые 2 символа. Эти 2 буквы указывают на категорию товара.

8.. Кликаем на столбец Product Number — Извлечь — Текст перед разделителем — Указываем тире

Теперь извлечем последние символы после тире. Эти символы указывают на цвет товара.

9. Кликаем на столбец Product Number — Извлечь — Текст после разделителя — Указать тире — Нажать расширенные настройки — Выбрать опцию От конца входных данных

Теперь извлечем текст между вторым и третьим тире. Эти символы указывают на размер.

10. Кликаем на столбец Product Name — Извлечь — Текст между разделителями — Указать тире в обоих случаях — В расширенных настройках указать одно пропускаемое тире от начала

Второй способ деления столбца

Скопируйте запрос, который мы создали ранее. Удалите 3 последних шага, т.е. те, где мы делили столбец Product Number.

Теперь разделим его другим способом.

Кликаем на столбец Product Number — Вкладка Преобразование — Разделить столбец — По разделителю — Указать тире и выбрать опцию По каждому вхождению разделителя

Получится 4 столбца. Оставляем только 3 из них: категория, цвет, размер. Лишний столбец удаляем. Готово.

Примененные функции

  • Excel.CurrentWorkbook
  • Excel.Workbook
  • File.Contents
  • Table.PromoteHeaders
  • Table.TransformColumnTypes
  • Table.AddColumn
  • Text.BeforeDelimiter
  • Text.AfterDelimiter
  • Text.BetweenDelimiters
  • Table.SplitColumn
  • Table.RemoveColumns

Код

Код с первым способом деления строки:

let
   file = Excel.CurrentWorkbook(){[Name = "file"]}[Content]{0}[Column1],

   source = Excel.Workbook(File.Contents(file)),

   get_table = source{[Item = "Лист1", Kind = "Sheet"]}[Data],

   promote_headers = Table.PromoteHeaders(get_table, [PromoteAllScalars = true]),

   types = Table.TransformColumnTypes(
      promote_headers,
      {
         {"ProductID", type text},
         {"Product", type text},
         {"Product Number", type text}
      }
   ),

   types_2 = Table.TransformColumnTypes(
      types,
      {{"Cost", type number}, {"Price", type number}},
      "en-US"
   ),

   col_category = Table.AddColumn(
      types_2,
      "Категория",
      each Text.BeforeDelimiter([Product Number], "-"),
      type text
   ),

   col_color = Table.AddColumn(
      col_category,
      "Цвет",
      each Text.AfterDelimiter([Product Number], "-", 2),
      type text
   ),

   col_size = Table.AddColumn(
      col_color,
      "Размер",
      each Text.BetweenDelimiters([Product Number], "-", "-", 1, 0),
      type text
   )
   
in
   col_size

Код со вторым способом деления строки:

let
   file = Excel.CurrentWorkbook(){[Name = "file"]}[Content]{0}[Column1],

   source = Excel.Workbook(File.Contents(file)),

   get_table = source{[Item = "Лист1", Kind = "Sheet"]}[Data],

   promote_headers = Table.PromoteHeaders(get_table, [PromoteAllScalars = true]),

   types_1 = Table.TransformColumnTypes(
      promote_headers,
      {
         {"ProductID", type text},
         {"Product", type text},
         {"Product Number", type text}
      }
   ),

   types_2 = Table.TransformColumnTypes(
      types_1,
      {{"Cost", type number}, {"Price", type number}},
      "en-US"
   ),
   
   col_split = Table.SplitColumn(
      types_2,
      "Product Number",
      Splitter.SplitTextByDelimiter("-", QuoteStyle.Csv),
      {"Категория", "Product Number.2", "Размер", "Цвет"}
   ),

   types_3 = Table.TransformColumnTypes(
      col_split,
      {
         {"Категория", type text},
         {"Product Number.2", type text},
         {"Размер", type text},
         {"Цвет", type text}
      }
   ),

   remove_col = Table.RemoveColumns(types_3, {"Product Number.2"})
   
in
   remove_col

Этот урок входит в Базовый курс Power Query

Номер урока Урок Описание
1 Зачем нужен Power Query. Обзор возможностей Этот урок сам по себе является мини-курсом. Здесь вы узнаете для каких видов операций с данными создан Power Query.
2 Подключение Excel Подключаемся к файлам Excel. Импортируем данные из таблиц, именных диапазонов, динамических именных диапазонов.
3 Подключение CSV/TXT, таблиц, диапазонов Подключаемся к к файлам CSV/TXT, Excel.
4 Объединить таблицы по вертикали Учимся объединять две таблицы по вертикали — combine.
5 Объединить по вертикали все таблицы одной книги друг за другом Как объединить по вертикали все таблицы одной книги, находящиеся на разных листах Excel.
6 Объединить по вертикали все файлы в папке Объединяем по вертикали таблицы, которые находятся в разных файлах в одной папке.
7 Объединение таблиц по горизонтали Учимся объединять таблицы по горизонтали — JOIN, merge.
8 Объединить таблицы с агрегированием Объединить таблицы по горизонтали и сразу выполнить группировку с агрегированием — JOIN + GROUP BY.
9 Анпивот (Unpivot) Изучаем операцию Анпивот — из сводной таблицы делаем таблицу с данными.
10 Многоуровневый анпивот (Анпивот с подкатегориями) Более сложный вариант Анпивота — в строках находится несколько измерений.
11 Скученные данные Данные собраны в одном столбце, нужно правильно его разбить на несколько.
12 Скученные данные 2 Разбираем еще один пример скученных данных.
13 Ссылка на другую строку Как сослаться на другую строку.
14 Ссылка на другую строку 2 Как сослаться на другую строку, используя объединение по горизонтали.
15 Виды объединения таблиц по горизонтали Изучаем виды объединения таблиц по горизонтали — LEFT JOIN, FULL JOIN, INNER JOIN, CROSS JOIN.
16 Виды объединения таблиц по горизонтали 2 Изучаем анти-соединение и соединение таблицы с ней же самой — ANTI JOIN, SELF JOIN.
17 Группировка Изучаем операцию группировки с агрегированием — GROUP BY.
18 Консолидация множества таблиц пользовательской функцией Объединяем по вертикали множество таблиц с предварительной обработкой при помощи пользовательской функции.
19 Деление на справочник и факт Разделим один датасет на два датасета: справочник и факт.
20 Создание параметра Мы можем ввести значение в какую-то ячейку Excel, а потом передать это значение в формулу Power Query.
21 Таблица параметров Создадим целую таблицу параметров и будем их использовать в запросах Power Query.
22 Объединение таблиц по вертикали, когда не совпадают заголовки столбцов Как объединить две таблицы по вертикали, если названия столбцов не совпадают.
23 Поиск ключевых слов Научимся искать ключевые слова в текстовом поле.
24 Поиск ключевых слов 2 Будем искать ключевые поля в текстовом поле и присваивать этому значению какую-то категорию.

Это фрагмент книги Гил Равив. Power Query в Excel и Power BI: сбор, объединение и преобразование данных.

Предыдущий раздел                   К содержанию                 Следующий раздел

Локальные файлы, параметры и шаблоны

Одна из наиболее распространенных проблем, с которыми сталкиваются при совместном написании отчета в Excel, связана с ситуацией, когда источники данных являются локальными файлами Excel или текстовыми файлами. Можно проиллюстрировать эту проблему очень распространенной историей двух авторов отчета: Алисой и Бобом.

Загрузите рабочую книгу Алисы, C08E01 — Alice.xlsx. В качестве источника данных она использовала файл C08E01.xlsx. Когда Боб получает отчет Алисы, при попытке обновления он получает ошибку:

Рис. 1. Ошибка, связанная с неверным путем к источнику данных; чтобы увеличить изображение кликните на нем правой кнопкой мыши и выберите Открыть картинку в новой вкладке

Скачать заметку в формате Word или pdf, примеры в формате архива (внутри несколько файлов Excel без поддержки макросов)

Для устранения этой проблемы Боб выполняет несколько операций, а потом сохраняет данные Алисы, C08E01.xlsx, в своей локальной папке, C:UsersBobDocuments C08C08E01.xlsx. Он открывает рабочую книгу и для каждого из трех запросов (Revenues, Categories и Colors) Боб выполняет следующие действия:

  • Выбирает шаг Source на панели Примененные шаги.
  • В строке формул заменяет путь в строке с

= Excel.Workbook(File.Contents(«C:UsersAliceDocumentsC08C08E01.xlsx»), null, true)

на:

= Excel.Workbook(File.Contents(«C:UsersBobDocumentsC08C08E01.xlsx»), null, true)

Это исправляет ошибку обновления. После этого Боб может приступить к работе над отчетом. Несколько часов спустя Боб посылает отчет назад Алисе, которая обнаруживает, что отчет не обновляется. Следуя инструкциям Боба, направленным по электронной почте, она изменяет путь в трех запросах.

Поскольку Алиса и Боб продолжают обмениваться отчетами, со временем они постепенно увеличивают число запросов, которые импортируют данные из локальных файлов. В конце концов всякий раз, когда им нужно работать над запросами и обмениваться рабочей книгой или отчетом, они вынуждены менять наименование пути в десятках запросов при переключении с одного на другой. Все становится более трудоемким по мере разбухания команды и присоединения к ней других разработчиков. И вот однажды они узнают, что имеется удобный способ для разрешения проблемы: применение параметра.

Применение параметра для имени пути

Power Query позволяет создавать параметры и включать их в М-формулы. Используя данный подход, можно располагать несколькими запросами, которые ссылаются на один параметр. Также можно проконтролировать значение одного параметра и тем самым повлиять на все запросы. В нашей истории Боб и Алиса могут применить параметр для наименования пути, это избавит их от всех проблем.

Загрузите исходные данные C08E01.xlsx и рабочую книгу Алисы, C08E01 — Alice.xlsx. Откройте файл C08E01 — Alice.xlsx. Пройдите Данные –> Получить данные –> Запустить редактор запросов. В окне редактора Power Query пройдите Главная –> Управление параметрами –> Создать параметр. Настройте окно Управление параметрами:

Рис. 2. Настройка окна Управление параметрами

Щелкните Ok.

На панели Запросы выбирайте по очереди запросы Revenues, Colors и Categories и для каждого запроса выполняйте следующие шаги. Выберите шаг Source. В строке формул замените:

= Excel.Workbook(File.Contents(«C:UsersAliceDocumentsC08C08E01.xlsx»), null, true)

на

= Excel.Workbook(File.Contents(Path & «C08E01.xlsx»), null, true)

Проверьте, что на панели предварительного просмотра нет ошибок. Можно загрузить файл решения C08E01 — Solution.xlsx

Применение параметров в Excel

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

Откройте книгу C08E01 — Solution.xlsx. Щелкните Новый лист и переименуйте его в Start Here. В ячейку A1 введите Path. В ячейку A2 введите C:DataC08. Выберите ячейки A1 и A2 и нажмите Ctrl+T (англ.) для создания таблицы. В окне Создать таблицу поставьте галочку Таблица с заголовками. В области А1:А2 появится Таблица. Выберите ячейку A1 или ячейку A2 и на вкладке Конструктор таблиц в поле Имя таблицы введите Parameters:

Рис. 3. Таблица с параметрами

Путь располагается на месте первой ячейки таблицы Parameters и может легко изменяться соавторами книги без необходимости запуска Power Query и поиска соответствующего параметра на панели Запросы. Если поделиться такой рабочей книгой с соавторами, которым необходимо обновить рабочую книгу, можно упростить их работу; кроме того, инструкции, которые, возможно, понадобятся им (для изменения пути), будут намного проще.

Если необходимо передать несколько параметров, можно добавить столбцы, каждый с соответствующим именем параметра в строке 1 и его значениями в строке 2.

Выберите ячейку A1 или A2 и пройдите Данные –> Из таблицы/диапазона. После открытия редактора Power Query обратите внимание, что на панели Запросы появился новый запрос Parameters. Щелкните на нем правой кнопкой мыши и выберите Ссылка. Переименуйте новый запрос в Path2. (Пока еще присутствует старый параметр Path из предыдущего упражнения, но скоро он будет удален.)

Выберите запрос Path2. Щелкните правой кнопкой мыши на ячейке C:PathC08 и выберите Детализация. Таблица преобразуется в текст со значением пути.

Рис. 4. Окно предварительного просмотра после команды Детализация

На запрос Path2 можно ссылаться для получения значения пути из любого места в ваших запросах. В строке формул вы увидите:

Поскольку идентификатор Источник идентичен Parameters, можно не делать два предыдущих шага, ссылаясь на следующий код всякий раз, когда необходимо получать доступ к значению Path:

Если в будущем появятся новые параметры, можете просмотреть значение нового параметра, сославшись на имя его столбца вместо Path. Например, если имеется новый столбец для имени файла, в следующей строке можно получить доступ к новому параметру Filename:

= Parameters{0}[Filename]

Обновим все запросы, что позволит загрузить путь из запроса Path2 вместо считывания его из собственного параметра запроса Path. Для каждого из запросов Revenues, Colors и Categories измените формулу на шаге Source с

= Excel.Workbook(File.Contents(Path & «C08E01.xlsx»), null, true)

на

= Excel.Workbook(File.Contents(Path2 & «C08E01.xlsx»), null, true)

Ошибка конфиденциальности

К сожалению, после этого шага для запросов Revenues, Colors и Categories появляется ошибка:

Рис. 5. Ошибка конфиденциальности

Для устранения ошибки измените параметры конфиденциальности этой книги. В редакторе Power Query пройдите Файл –> Параметры и настройки –> Параметры запроса. В окне диалога Параметры запроса перейдите в раздел Текущая книга, выберите на левой панели Конфиденциальность. Установите переключатель в положение Игнорировать уровни конфиденциальности для возможного улучшения производительности. Щелкните Ok.

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

Удалите параметр Path и переименуйте Path2 в Path. Переименование Path2 автоматически изменяет все ссылки на новое имя запроса в других запросах. Выберите запрос Path пройдите Главная –> Закрыть и загрузить в… Оставьте активной опцию Только создать подключение. Это гарантирует, что запрос Path не будет загружен на лист Excel.

Метод, преодолевающий ошибку конфиденциальности

Загрузите книгу C08E03 — Solution.xlsx. При открытии редактора PQ вы столкнетесь с ошибкой Formula.Firewall (если только не установлено игнорирование уровней конфиденциальности для всех рабочих книг). Ошибки Formula.Firewall можно избежать, перестроив запросы, чтобы все ссылки на внешние источники выполнялись в одном запросе.

В редакторе Power Query пройдите Просмотр –> Зависимости запроса. Рассматривая картинку и изучая код в строках Source различных запросов, можно увидеть, что каждый из запросов Revenues, Colors и Categories зависит как от текущей книги, так и от книги c:datac08c08e01.xslx. Но если книга c08e01.xslx ссылается непосредственно на запросы Revenues, Colors и Categories, то текущая книга не ссылается непосредственно на эти запросы, а реализует это посредством параметров Path и Parameters.

Рис. 6. Зависимости запроса

Объединяя в одном запросе ссылки на зависимые внешние источники, можно избежать ошибки. В этом примере консолидация произойдет, если каждый из запросов Revenues, Colors и Categories непосредственно ссылается как на текущую рабочую книгу, так и на источник данных c:datac08c08e01.xslx. Чтобы это реализовать, выберите каждый из запросов Revenues, Colors, и Categories и в расширенном редакторе добавьте следующую строку кода после слова let:

Path = Excel.CurrentWorkbook(){[Name=«Parameters»]}[Content]{0}[Path],

Эта строка объединит в одну строку все шаги преобразования запроса Parameters. Теперь можно удалить запрос Parameters, поскольку на него не ссылаются ни в одном из запросов.

Еще один подход заключается в создании нового запроса, который возвращает двоичный файл рабочей книги, и тогда запросы Revenues, Colors и Categories ссылаются на запрос рабочей книги. Затем в запросе книги можно получить ссылки на внешний файл Excel и текущую книгу. Для реализации описанного подхода откройте файл C08E03 — Solution.xlsx и пройдите Данные –> Получить данные –> Запустить редактор Power Query.

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

На панели Запросы щелкните правой кнопкой мыши на Colors и выберите Дублировать. Новый запрос переименуйте в Workbook, удалите все шаги на панели Примененные шаги, кроме первого шага Source. Пройдите Главная –> Расширенный редактор и добавьте код:

Path = Excel.CurrentWorkbook(){[Name=«Parameters»]}[Content]{0}[Path],

между строками

и

Source = Excel.Workbook(File.Contents(Path & «C08E01.xlsx»), null, true)

Щелкните Готово. Теперь запрос Workbook возвращает содержимое таблицы книги C08E01.xlsx.

На панели Запросы выберите последовательно запросы Revenues, Colors и Categories. Для каждого из них выберите шаг Source и измените код в строке формул на:

Удалите запросы Path и Parameters. Выделите запрос Workbook, пройдите Главная –> Закрыть и загрузить…  Установите переключатель Только создать подключение, чтобы не загружать запрос Workbook на лист Excel.

Выполнив эти шаги, вы объединили все ссылки на внешние источники в запросе Workbook и избежали ошибки Formula.Firewall. Вернитесь в редактор PQ и пройдите Просмотр –> Зависимости запроса:

Рис. 7. Зависимости запроса изменились

Теперь только запрос Workbook имеет доступ к двум внешним источникам данных. Можно загрузить книгу решения C08E03 — Solution 2.xlsx. Благодаря предпринятым мерам всем пользователям файла не потребуется изменять или отключать собственные уровни конфиденциальности.

Изменение ваших запросов для предотвращения ошибок брандмауэра — не всегда простая задача. При объединении нескольких запросов в один теряется некоторая гибкость в плане поддержки и повторного использования запросов. Следует оценить все за и против, прежде чем приступать к консолидации. Как показано в следующем разделе, иногда имеются лучшие решения для полного исключения необходимости обращения к двум источникам данных.

При совместном использовании более гибким является использование Power BI. Служба Power BI может подключаться к локальным файлам (или к любому иному локальному источнику данных) с помощью локальных шлюзов данных. Подробнее см. https://powerbi.microsoft.com/ru-ru/gateway/

Еще более интересным представляется размещение общих файлов на OneDrive for Business или на сайте SharePoint Online. Поскольку для выполнения упражнений понадобится учетная запись OneDrive for Business здесь эта часть книги опущена.

Вопросы безопасности

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

В некоторых случаях можно поделиться запросами, моделью и визуализациями, но убедитесь, что данные в отчете очищены перед тем, как предоставить отчет другим пользователям. Для сохранения книги Excel в качестве шаблона и удаления данных из модели или таблиц пройдите Файл –> Сохранить как. Выберите тип файла Шаблон Excel (*.xltx). Перед сохранением файла отобразится предупреждение:

Рис. 8. Предупреждение при сохранении шаблона

Щелкните Да для удаления данных. Если ваш коллега откроет отчет, то Power Query запустит обновление и предложит пользователю предоставить свои учетные данные, если это необходимо. Ваши данные не будут сохраняться в отчете.

Удаление всех запросов в Excel с помощью инспектора документов

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

В файле Excel пройдите Файл –> Сведения –> Найти проблем –> Проверить документ. В окне Инспектор документов кликните Проверить. После проверки прокрутите вниз до раздела Настраиваемые XML-данные. Именно здесь Power Query сохраняет запросы. Эта область в файле также используется сторонними надстройками. Поэтому в качестве меры предосторожности всегда следует запускать Инспектор документов с копией рабочей книги на тот случай, если в файле хранятся дополнительные данные для надстроек, которые будут удалены Инспектором вместе с запросами. Щелкните Удалить все рядом со строкой Настраиваемые XML-данные, затем щелкните Закрыть.

На вкладке Данные выберите команду Запросы и подключения. Все запросы удалены. Если вы загрузили запросы в модель данных, они также будут удалены.

Хитрости »

30 Ноябрь 2016              47191 просмотров


В большинстве случаев создание запросов PowerQuery создается на основании файлов Excel, отличных от того файла, в котором сам запрос. Как пример — одна из статей на этом сайте: План-фактный анализ в Excel при помощи Power Query. Там идет обращение к некоторым вспомогательным файлам с данными и запрос ко всем файлам определенной папки. Т.е. мы можем знать только папку относительно файла с самим запросом и имена некоторых вспомогательных таблиц. И здесь как раз возникает нюанс: если впоследствии переместить или переслать файл с запросом (или даже полностью всю модель данных со всеми файлами) — то придется для каждого запроса к отдельному файлу менять источник. Это можно сделать либо через Параметры источника данных самого запроса:

  • Для пользователей Excel 2010-2013:
    Перейти на вкладку Power Query -группа Настройки(Options)Параметры источника данных(Data Source Settings)
  • для пользователей 2016 и выше:
    Перейти на вкладку Данные(Data)Создать запрос(New Query)Параметры источника данных(Data Source Settings)

либо изменив текст каждого запроса в редакторе запросов, изменив там строку источника:
Смена источника в редакторе
И в том и в другом случае после смены каждого источника придется ждать обновления запросов. Как ни странно, но стандартно, без танцев с бубном, сделать некий относительный путь(указав лишь часть пути, как это делается в web-программировании) к источнику данных нельзя.


Как же вообще сделать возможность обновления источника данных при смене расположения файлов?
Есть два варианта:
Вариант 1
Не совсем автоматический, но способный чуть облегчить жизнь — использовать возможность создания параметров для запросов. Параметр — это некая именованная константа, которая может быть как одним значением(число, текст, дата и т.д.), так и целой таблицей(возможно впоследствии добавят возможность создания вычисляемых параметров, но на момент написания статьи это не поддерживалось). В нашем случае это будет одно значение — путь к основной папке. Чтобы создать новый параметр необходимо перейти в редактор запросов(выбрать любой запрос в книге -Правая кнопка мыши -Изменить) и на вкладке Главная выбрать Управление параметрамиСоздать параметр.
Создание параметра
В появившемся окне задаем необходимые значения:

  • Обязательно — читать как Обязательный, если флажок установлен и Необязательный, если флажок снят. Отвечает за необходимость указывать значение. Если флажок установлен — то параметр не будет создан/изменен, пока мы не укажем Текущее значение. Если флажок снят — то значение параметра допускается оставить пустым.
  • Имя параметра — Без комментариев, я указал здесь sPath
  • по желанию добавляем описание к параметру, ровным счетом это ни на что не влияет
  • Тип данных параметра — в нашем случае это Текст. Здесь лучше не рисковать, указывая Любой(Any), т.к. в этом случае можем получить ошибку запроса.
  • Предлагаемые значения — выбираем Любое значение(логичнее было бы назвать этот пункт «Одно значение». Т.к. это больше подходит на мой взгляд).
  • Текущее значение — это как раз то значение, которое и будет хранить наш параметр. Здесь я указываю путь к основной папке: G:Готовая модель ПланФактного анализа. Указываю со слешем на конце пути, чтобы не добавлять его в каждый источник после.

Теперь останется для каждого запроса добавить ссылку на этот параметр вместо жестко прописанного пути. Для этого в расширенном редакторе запросов(Главная -Расширенный редактор) для каждого запроса необходимо изменить переменную часть пути к файлам на наш параметр sPath:
Путь через параметр
Обращаю внимание, что после имени параметра(sPath) идет амперсанд(&). Он необходим для объединения двух текстовых строк в одну.
А теперь пара ложек дегтя для этого способа:

  1. Самый очевидный недостаток: при переносе файлов в любом случае необходимо будет заходить в редактор запросов (ГлавнаяУправление параметрамиИзменить параметры) и изменять путь, указанный в параметре на новый. Так же это можно сделать напрямую из редактора запросов, раскрыв в левой части область запросов, выбрав параметр и вписав новое значение:
    Изменить значение параметра
  2. И не очевидный недостаток: частенько такой подход приводит к ошибке получения данных при слиянии связанных запросов. Что делает этот способ не жизнеспособным в полной мере для большинства распространенных задач

Вариант 2
Создать еще один запрос в основной книге, на основании формул в Excel. Решение основано на возможностях встроенной функции Excel ЯЧЕЙКА(CELL). С её помощью можно получить полный путь к файлу, имя листа и книги. Чуть более подробно синтаксис этой функции и способы получения имени листа и книги я описывал в этой статье: Как получить имя листа формулой.
Итак, для начала нам необходимо на новом листе создать новую таблицу с двумя столбцами: значение и описание. В качестве значения в первой строке у нас и будет как раз формула с функцией ЯЧЕЙКА:
=ПСТР(ЯЧЕЙКА(«filename»;A1);1;ПОИСК(«[«;ЯЧЕЙКА(«filename»;A1))-1)
данная формула возвращает только путь к файлу, в котором записана. Что нам в общем-то от неё и надо.

При желании можно дописать подсказку к значению. Я это сделал для демонстрации и чтобы было понятно — что мы сможем потом дополнять эту таблицу другими переменными значениями при необходимости.

Теперь из этой таблицы необходимо сделать динамическую, или как их еще называют — умную: выделяем ячейки с данными(A1:B2) -вкладка Вставка(Insert) и выбрать Таблица(Table). Галочку «Мои данные содержат заголовки» оставляем включенной, даем понятное имя таблице — Parameters:
Создание умной таблицы

Далее выделяем любую ячейку внутри созданной таблицы и создаем новый запрос: вкладка ДанныеИз таблицы(для пользователей PowerQuery 2013 и 2010 — вкладка PowerQuery -Из таблицы). Имя запроса у нас будет совпадать с именем таблицы — Parameters и этот запрос будет содержать как раз все значения нашей умной таблицы.
И теперь нам надо из этого запроса получить значение только одной конкретной ячейки — первой ячейки столбца «Значение»(в которой у нас формулой возвращается путь к папке). Для этого придется чуть пошаманить. Нам необходимо получить ссылку на таблицу «Parameters» и уже из неё получить значение нужной ячейки. Все это придется проделать на языке M, но звучит страшнее, чем выглядит — это всего одна строка:
Excel.CurrentWorkbook(){[Name=»Parameters»]}[Content]{0}[Значение]
Теперь разберем по шагам:

    Excel.CurrentWorkbook() — непосредственно функция, которая получает данные обо всех умных таблицах(и именованных диапазонах) внутри книги Excel, в которой создан этот запрос (CurrentWorkbook — текущая книга).
    {[Name=»Parameters»]} — так мы даем понять функции Excel.CurrentWorkbook, что нам нужны данные исключительно из объекта с именем «Parameters»(это наша умная таблица). На всякий случай уточню: получить просто ссылки на ячейки листа не получится, т.к. функция Excel.CurrentWorkbook данных о листах не получает вообще. Только именованные диапазоны и умные таблицы.
    [Content] — все содержимое таблицы «Parameters»
    {0} — пожалуй, самая хитрая часть для «не программистов» :) Это номер строки в указанной таблице(«Parameters»). При этом номера строк в запросе начинают отсчет с 0 и заголовки при этом не учитываются. Т.е. наш параметр находится физически во второй ячейке столбца «Значение» таблицы «Parameters» на листе. Но в рамках самой таблицы это первая её строка, т.к. заголовок не учитываем. Но т.к. в таблице отсчет начинается с 1, а в запросах с 0 — то и нам надо указывать, учитывая эту особенность. Если бы мы обращались ко второй строке таблицы — указать необходимо было бы 1. И да — указывать обязательно в фигурных скобках.
    [Значение] — здесь в квадратных скобках указывается имя столбца(без всяких кавычек). Если бы столбец в таблице был всего один — то можно было бы его не указывать вовсе. Но т.к. у нас их больше — то указание обязательно, иначе запрос вернет всю строку — т.е. значения всех столбцов таблицы.

Т.е. строка Excel.CurrentWorkbook(){[Name=»Parameters»]}[Content]{0}[Значение] означает: из книги с запросом обратиться к таблице «Parameters»({[Name=»Parameters»]}), считать все данные([Content]) и отобрать оттуда значение первой строки({0}) столбца «Значение»([Значение])
И эта строка возвращает исключительно путь к папке — именно тот, который у нас получается в результате вычисления формулы с ЯЧЕЙКА.
Теперь, после того как разобрались что делает чудо-строка — осталось понять как это применить. Надо просто для каждого запроса перейти в редактор и в строке с источником:
Источник = Folder.Files(«C:Готовая модель ПланФактного анализаФакт»),
вместо части пути указать созданную строку запроса, добавив амперсанд(&) для объединения разных значений:
Источник = Folder.Files(Excel.CurrentWorkbook(){[Name=»Parameters»]}[Content]{0}[Значение] & «Факт»),
Изменить источник данных на динамический

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

Скачать готовую модель план-фактного анализа с динамически изменяющимся путем к данным:

  Готовая модель План-фактного анализа — относительный путь (491,0 KiB, 3 045 скачиваний)


Статья помогла? Поделись ссылкой с друзьями!

  Плейлист   Видеоуроки


Поиск по меткам



Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика

Содержание

  1. Excel.Workbook
  2. Синтаксис
  3. Сведения
  4. Глава 5. Объединение листов Excel в Power Query
  5. Объединение таблиц и диапазонов в текущем файле
  6. Объединение диапазонов и листов
  7. Агрегирование данных из других книг
  8. Power Query Базовый №2. Подключение Excel
  9. Описание
  10. Решение

Excel.Workbook

Синтаксис

Сведения

Возвращает содержимое книги Excel.

  • useHeaders может принимать значение null, логическое значение (true или false), указывающее, должна ли первая строка каждой возвращаемой таблицы обрабатываться как заголовок, или может представлять собой запись параметров. По умолчанию: false.
  • delayTypes может принимать значение null или логическое значение (true или false), указывающее, следует ли оставлять столбцы каждой из возвращаемых таблиц нетипизированными. По умолчанию: false.

Если указана запись для useHeaders (и delayTypes имеет значение null), можно указать следующие поля записи:

  • UseHeaders — может принимать значение null или логическое значение (true или false), указывающее, должна ли первая строка каждой возвращаемой таблицы обрабатываться как заголовок. По умолчанию: false.
  • DelayTypes — может принимать значение null или логическое значение (true или false), указывающее, следует ли оставлять столбцы каждой из возвращаемых таблиц нетипизированными. По умолчанию: false.
  • InferSheetDimensions — может принимать значение null или логическое значение (true или false), указывающее, должна ли область листа, содержащая данные, формироваться путем чтения самого листа, а не путем считывания метаданных измерений из файла. Это может быть полезно в случаях, когда метаданные измерений неверны. Обратите внимание, что этот параметр поддерживается только для файлов Excel Open XML, а не для устаревших файлов Excel. По умолчанию: false.

Источник

Глава 5. Объединение листов Excel в Power Query

Это продолжение перевода книги Кен Пульс и Мигель Эскобар. Язык М для Power Query. Главы не являются независимыми, поэтому рекомендую читать последовательно.

В предыдущей главе были описаны методы агрегации данных из нескольких .txt или .csv файлов. В настоящей заметке описано, как объединять Таблицы или листы Excel из активной или внешней рабочей книги. К сожалению, стандартный пользовательский интерфейс Power Query этого не умеет. Но дополнительные манипуляции не будут слишком сложными. При этом методы работы с данными в активной книге отличаются от методов извлечения данных из внешнего файла.

Рис. 5.1. Доступные Таблицы в окне редактора Power Query

Скачать заметку в формате Word или pdf, примеры в формате архива

Объединение таблиц и диапазонов в текущем файле

Откройте файл с примерами Consolidate TablesStart.xlsx. В файле три листа с информацией о подарочных сертификатах, выданных spa-салоном. Сотрудник, создавший файл, не указывал в Таблицах дату выпуска сертификатов, а размещал данные на отдельных листах по месяцам: Jan 2008, Feb2008, Mar 2008. Для анализа данные желательно объединить, и Power Query справится с этим быстрее, чем ручная обработка.

Создайте пустой запрос: пройдите по меню Данные –> Получить данные –> Из других источников –> Пустой запрос. В окне редактора Power Query в строке формул ведите (рис. 5.1):

Нажмите Enter. Вы увидите доступные объекты текущей книги: Таблицы, именованные диапазоны, подключения к внешним источникам данных. К сожалению, нельзя получить перечень листов файла.

Как вы узнали из главы 4, можно щелкнуть пробел рядом с зелеными словами в столбце Content для предварительного просмотра данных Table (рис. 5.2).

Рис. 5.2. Предварительный просмотр содержимого Table

В главе 4 вы также узнали, что кликнув на двуглавую стрелку в верхней части столбца Content, вы развернете содержимое Таблиц, сохраняя сведения из столбца Name. Итак, кликните двуглавую стрелку, в открывшемся окне настроек снимите флажок Использовать исходное имя столбца как префикс, нажмите Ok:

Рис. 5.3. Импорт и объединение данных с добавлением столбца с именем таблицы; чтобы увеличить изображение кликните на нем правой кнопкой мыши и выберите Открыть картинку в новой вкладке

Преобразуйте имена таблиц в даты (подробнее см. главу 4):

  • Щелкните правой кнопкой мыши столбец Name –>Замена значений
  • Заменить символ _ (подчеркивание) на ˽ 1,˽ (пробел, единица, запятая, пробел)
  • Щелкните правой кнопкой мыши столбец Name –>Тип изменения –>Дата
  • Перейдите на вкладку Преобразование –>Дата –>Месяц –>Конец месяца
  • Щелкните правой кнопкой мыши столбец Name –>Переименовать –>Конец месяца
  • Измените имя запроса на Подарочные сертификаты

Рис. 5.4. Финальный вид запроса

Перейдите на вкладку Главная и кликните Закрыть и загрузить. Объединенные данные будут размещены на новом листе Excel. К сожалению, запрос содержит кучу ошибок:

Рис. 5.5. Данные объединены на листе Excel; правда, вкрались ошибки

Не страшно. Наведите курсор мыши на запрос Подарочные сертификаты, и во всплывающем окне кликните Изменить. Снова откроется редактор Power Query. В области ПРИМЕНЕННЫЕ ШАГИ выберите первый шаг – Источник (цифра 1 на рис. 5.6). Вы заметите, что теперь у вас четыре таблицы в списке. Добавилась таблица Подарочные сертификаты, которая была создана в результате запроса. Чтобы избавиться от дублирования, необходимо добавить фильтрацию таблиц, участвующих в запросе. Кликните стрелочку возле названия столбца Name (2), выберите опцию Текстовые фильтры –> Не содержит. Подтвердите, что вы хотите вставить шаг. В окне Фильтрация строк выберите Не содержитПодарочные (3):

Рис. 5.6. Фильтрация таблиц по имени

Нажмите Ok. В редакторе Power Query перейдите на вкладку Главная. Кликните кнопку Закрыть и загрузить. Теперь запрос содержит 62 строки; ошибок нет.

Существует и вторая возможность избавиться от ошибок – убрать дубли. Откройте редактор Power Query. Перейдите на шаг Измененный тип. Выберите столбец Name и на вкладке Главная кликните Удалить строки –> Удалить ошибки. Подтвердите, что вы хотите вставить новый шаг в середину запроса. На вкладке Главная кликните Закрыть и загрузить.

Объединение диапазонов и листов

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

Перейдите на лист Jan 2008. На вкладке Разметка страницы кликните Печатать заголовки. На закладке Лист введите A:D в поле Выводить на печать диапазон, кликните Ok.

Рис. 5.7. Выбор области печати

Повторите процедуру для листов Feb 2008 и Mar 2008. Создайте пустой запрос, и в строке формул введите: =Excel.CurrentWorkbook(). Нажмите Enter. Вы увидите список трех таблиц и трех именованных диапазонов:

Рис. 5.8. Объекты книги Excel, доступные для импорта в Power Query

Чтобы не дублировать данные, отфильтруйте столбец Name: Заканчивается напечати. Нажмите кнопку Развернуть в верхней части столбца Content. Оставьте выбранными все столбцы, снимите флажок Использовать исходное имя столбца как префикс. Обратите внимание на отличия от предыдущего случая. Показаны все строки в выбранных столбцах диапазона печати:

Рис. 5.9. Необработанный рабочий лист

Выполним дополнительную очистку данных:

  • Главная –>Удалить строки –>Удалить верхние строки –> 2
  • Главная –>Использовать первую строку в качестве заголовков
  • Столбец CertNumber –>Фильтр –> снимите флажок c null
  • Щелкните правой кнопкой мыши столбец CertNumber –>Тип изменения –>Целое число
  • Выберите столбец CertNumber
  • Закладка Главная –>Удалить строки –>Удалить ошибки
  • Выберите столбец CertNumber. Удерживайте нажатой клавишу Shift выберите столбец Service
  • Щелкните правой кнопкой мыши один из выбранных заголовков столбцов –>Удалить другие столбцы
  • Измените имя запроса на Все листы
  • Главная –>Закрытьизагрузить

При работе с областями печати рекомендуется ограничивать область печати необходимыми строками и столбцами. В примере выше мы выбрали целиком столбцы, что привело к импорту в Power Query около 3 млн. строк с трех листов. Наверное, вы заметили, как медленно выполнялись некоторые команды!

Агрегирование данных из других книг

Вам нужно создать список книг Excel и извлечь их содержимое, аналогично тому, что вы сделали в главе 4, когда вы извлекли содержимое файлов CSV.

Создайте новую книгу Excel. Создать новый запрос: Данные –> Получить данные –> Из файла –> Из папки. Выберите папку Source Files. В списке есть как файлы Excel, так и иные файлы:

Рис. 5.10. Файлы, доступные в папке Source Files

Нажмите Преобразовать данные, и отфильтруйте файлы Excel:

  • Щелкните правой кнопкой мыши столбец Extension –>Преобразование –>нижний регистр
  • Фильтр столбца Extension –>Текстовые фильтры –>Начинается с… –> .xlsx
  • Выберите столбцы Content имя Name –> щелкните правой кнопкой мыши –>Удалить другие столбцы

У вас может возникнуть соблазн нажать кнопку Объединить файлы

Рис. 5.11. Объединить файл

… и, к сожалению, Power Query позволит вам это сделать. Однако, вы обнаружите, что Power Query сделает что-то весьма странное. Чтобы откатить импорт, перейдите в область ПРИМЕНЕННЫЕ ШАГИ и удалите все шаги после шага Другие удаленные столбы.

Раз вы не можете объединить и импортировать файлы простым методом, пойдем трудным способом:

  • В редакторе Power Query перейдите на вкладку Добавление столбца –>Настраиваемый столбец
  • Введите формулу =Excel.Workbook([Content])
  • Нажмите кнопку Ok
  • Щелкните правой кнопкой мыши столбец Content –>Удалить

Новый пользовательский столбец содержит все объекты, к которым можно подключиться, включая все Таблицы Excel, именованные диапазоны и даже листы:

Рис. 5.12. Объекты, доступные для импорта

Столбец Пользовательская имеет двуглавую стрелку (значок расширения), поэтому его можно развернуть. Нажав на значок вы получаете список всех объектов трех файлов, доступных для импорта:

Рис. 5.13. Объекты, доступные для импорта

Столбец Kind показывает, что у вас есть Листы, определенное имя и Таблицы. Если не отфильтровать этот перечень объектов, у вас будет много дублей:

  • Отфильтруйте столбец Kind, оставив только Sheet
  • Отфильтруйте столбец Name, удалив файл NamedRange.xlsx
  • Выберите столбцы Name, Name.1 и Data –> щелкните правой кнопкой мыши на заголовке одного из этих столбцов –>Удалить другие столбцы
  • Кликните кнопку Развернуть у заголовка столбца Data (снимите настройки префикса)

Запрос теперь выглядит следующим образом:

Рис. 5.14. Запрос с шестью импортированными объектами Sheet

  • Главная –>Использовать первую строку в качестве заголовков
  • Щелкните правой кнопкой мыши на заголовке столбца Workbookxlsx –>Переименовать –> Source File
  • Щелкните правой кнопкой мыши заголовке столбца Jan 2008 column –>Переименовать –> Month
  • Выберите столбец Amount –>Главная –>Удалить строки –>Удалить ошибки
  • Измените имя запроса FromExcelFiles
  • Главная –>Закрыть и загрузить

Данные загружаются в Таблицу на листе Excel. На их основе можно создать сводную таблицу, чтобы увидеть, что вы смогли извлечь из внешних файлов Excel:

Рис. 5.15. Сводная позволяет проверить, что же вы импортировали

Видно, что вы успешно извлекли данные из двух Excel-файлов, каждый из которых содержит по три листа. В общей сложности извлекли более 12 000 записей.

Источник

Power Query Базовый №2. Подключение Excel

Описание

В этом уроке мы научимся подключаться к книге Excel. Помимо самого подключения научимся делать следующее:

  • Указание типов данных столбцов
  • Указание типов данных с использованием локали (тип данных с языком)
  • Добавим столбец, который извлечет текст перед разделителем — аналог функции ЛЕВСИМВ в сочетании с НАЙТИ
  • Добавим столбец, который извлечет последние 2 символа — аналог функции ПРАВСИМВ
  • Добавим столбец, который извлечет текст между разделителями — аналог функции ПСТР
  • Разделим столбец по разделителю — аналог операции текст по столбцам из стандартного функционала Excel

Решение

Подготовка к подключение к Excel-книге в Power Query
  • Скачайте все приложенные файлы
  • Откройте видео к уроку
  • Создайте новую книгу
Подключение к Excel в Power Query

1. В новой книге подключитесь к файлу. Данные — Получить данные — Из файла — Из книги

2. Укажите скачанный файл с данными

3. Удалите все шаги кроме шага Источник

4.. Кликните по ссылке Table, чтобы развернуть таблицу

5. Поднимите заголовки. Главная — Использовать первую строку в качестве заголовков

6. Укажите типы данных для текстовых столбцов

7. Для числовых столбцов измените тип данных с использованием локали

Теперь пора разделить столбец Product Number. Сначала извлечем первые 2 символа. Эти 2 буквы указывают на категорию товара.

8.. Кликаем на столбец Product Number — Извлечь — Текст перед разделителем — Указываем тире

Теперь извлечем последние символы после тире. Эти символы указывают на цвет товара.

9. Кликаем на столбец Product Number — Извлечь — Текст после разделителя — Указать тире — Нажать расширенные настройки — Выбрать опцию От конца входных данных

Теперь извлечем текст между вторым и третьим тире. Эти символы указывают на размер.

10. Кликаем на столбец Product Name — Извлечь — Текст между разделителями — Указать тире в обоих случаях — В расширенных настройках указать одно пропускаемое тире от начала

Второй способ деления столбца

Скопируйте запрос, который мы создали ранее. Удалите 3 последних шага, т.е. те, где мы делили столбец Product Number.

Теперь разделим его другим способом.

Кликаем на столбец Product Number — Вкладка Преобразование — Разделить столбец — По разделителю — Указать тире и выбрать опцию По каждому вхождению разделителя

Получится 4 столбца. Оставляем только 3 из них: категория, цвет, размер. Лишний столбец удаляем. Готово.

Источник

Понравилась статья? Поделить с друзьями:
  • История создания таблицы excel
  • История создания программы microsoft word составьте хронологическую таблицу
  • История создания программы excel
  • История создания документа word
  • История создания microsoft excel