Запросы на обновление данных в excel

Создание, загрузка и изменение запроса в Excel (Power Query)

Excel для Microsoft 365 Excel 2021 Excel 2019 Excel 2016 Excel 2013 Excel 2010 Еще…Меньше

Power Query предлагает несколько способов создания и загрузки power querys в книгу. Вы также можете настроить параметры загрузки запроса по умолчанию в окне Параметры запроса.    

Совет      Чтобы упросить, сформированы ли данные на этом плане с помощью Power Query, выберите ячейку с данными, а если появится вкладка Лента контекстного запроса, данные загружаются из Power Query. 

Выбор ячейки в запросе для вкладки "Запрос"

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

Знакомые Excel, лента и сетка

Лента редактора Power Query и предварительный просмотр данных 

Стандартный Excel Обычное представление редактора Power Query

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

Переименование я вкладок на таблицах    Ямы лучше переименовывать по своему смыслу, особенно если их много. Особенно важно пояснить разницу между данными и данными, загруженными из редактора Power Query. Даже если у вас всего два листа: с таблицей Excel «Лист1»и запросом, созданным путем импорта таблицы Excel Таблица1,ее легко запутать. Всегда имеет смысл изменить названия ярлыков по умолчанию на более понятное. Например, переименуйте Лист1 в Таблицу данных и Таблицу1 в Таблицу запросов. Теперь понятно, какая вкладка с данными, а какая вкладка с запросом.

Вы можете создать запрос из импортируемых данных или пустой запрос.

Создание запроса из импортируемых данных

Это самый распространенный способ создания запроса.

  1. Импорт некоторых данных. Дополнительные сведения см. в том, как импортировать данные из внешних источников.

  2. Выберем ячейку в данных и выберите запрос> изменить.

Создание пустого запроса

Вы можете начать с нуля. Это можно сделать двумя способами.

  • Выберите Данные> Получить данные >из других источников > пустой запрос.

  • Выберите Данные> получить данные >запуск редактора Power Query.

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

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

  • Выберите Новый источник, чтобы добавить источник данных. Эта команда выглядит так же, как> «Получить данные» на Excel ленте.

  • Выберите Последние источники, чтобы выбрать источник данных, с помощью который вы работали. Эта команда выглядит так же, как> последние источники на Excel ленте.

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

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

Загрузка запроса из редактора Power Query

В редакторе Power Query сделайте следующее:

  • Чтобы загрузить на таблицу, выберите Главная> Закрыть & Загрузить > Закрыть & Загрузить.

  • Чтобы загрузить данные в модель данных, выберите Главная> Закрыть & Загрузить > Закрыть & Загрузка.

    В диалоговом окне Импорт данных выберите добавить эти данные в модельданных.

Совет   Иногда команда «Загрузить в» неатривна или отключена. Это может произойти при первом создании запроса в книге. В этом случае нажмите кнопку Закрыть & Загрузить, на новом > запросы данных & Connections > Запросы, щелкните запрос правой кнопкой мыши и выберите загрузить в . Кроме того, на ленте редактора Power Query выберите запрос> Загрузить в.

Загрузка запроса из области «Запросы и подключения» 

В Excel может потребоваться загрузить запрос на другой таблицу или в модель данных.

  1. В Excel выберите Запросы> запросы & Connections, а затем выберите вкладку Запросы.

  2. В списке запросов найдите запрос, щелкните его правой кнопкой мыши и выберите загрузить в. Появится диалоговое окно Импорт данных.

  3. Выберите, как вы хотите импортировать данные, а затем выберите ОК. Чтобы получить дополнительные сведения об использовании этого диалогового окна, выберите знак вопроса (?).

Существует несколько способов изменить запрос, загруженный на таблицу.

Изменение запроса на Excel данных

  • Чтобы изменить запрос, найдите ранее загруженную из редактора Power Query, выйдите ячейку в данных и выберите запрос > Изменить.

Изменение запроса в области «Запросы & подключения»

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

  1. В Excel выберите Запросы> запросы & Connections, а затем выберите вкладку Запросы.

  2. В списке запросов найдите запрос, щелкните его правой кнопкой мыши и выберите изменить.

Изменение запроса в диалоговом окне «Свойства запроса»

  • В Excel выберите Data> Data & Connections > Запросы, щелкните запрос правой кнопкой мыши и выберите Свойства ,выберите вкладку Определение в диалоговом окне Свойства и нажмите кнопку Изменить запрос.

Совет    Если вы работаете с запросом на > данных, в диалоговом окнеСвойства выберите вкладку Определение, а затем — Изменить запрос. 

Модель данных обычно содержит несколько таблиц, расположенных в связи. Запрос загружается в модель данных с помощью команды Загрузить, чтобы отобразить диалоговое окно Импорт данных, а затем в поле Добавить эти данные в режим данныхl. Дополнительные сведения о моделях данных см. в дополнительных сведениях о том, какие источники данных используются в модели данных книги,Создание модели данных в Excelи Создание таблиц с помощью нескольких таблиц.

  1. Чтобы открыть модель данных, выберите Power Pivot > Управление.

  2. В нижней части окна Power Pivot выберите вкладку нужной таблицы.

    Подтвердим, что отображается правильная таблица. Модель данных может иметь много таблиц.

  3. Обратите внимание на имя таблицы.

  4. Чтобы закрыть окно Power Pivot, выберите файл> Закрыть. Чтобы освободить память, может потребоваться несколько секунд.

  5. Выберите > подключения & свойства >Запросы, щелкните запрос правой кнопкой мыши и выберите изменить.

  6. Завершив внесение изменений в редакторе Power Query, выберите файл > Закрыть & загрузить.

Результат

Запрос на этом и в таблице в модели данных обновляются.

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

Корпорация Майкрософт знает об этой проблеме и находится в стадии исследования.

Вы можете загрузить Power Query:

  • На один из них. В редакторе Power Query выберите Home> Close & Load > Close & Load.

  • В модель данных. В редакторе Power Query выберите Home> Close & Load > Close & Load To.

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

    Кроме того, динамически переопределять стандартные параметры запроса можно в диалоговом окне Импорт, которое отображается после выбора параметра & Загрузитьв.

Глобальные параметры, которые применяются во всех книгах

  1. В редакторе Power Query выберите Файл > параметры и параметры >параметры запроса.

  2. В диалоговом окне Параметры запроса в левой части в разделе GLOBAL  выберите Загрузка данных.

  3. В разделе Загрузка Параметры запроса по умолчанию сделайте следующее:

    • Выберите Использовать стандартные параметры загрузки

    • Выберите Указать настраиваемые параметры загрузкипо умолчанию, а затем выберите или отобирать параметр Загрузить на таблицу   или Загрузить в модель данных.

Совет    В нижней части диалогового окна можно выбрать восстановить параметры по умолчанию, чтобы вернуться к настройкам по умолчанию.

Параметры книги, которые применяются только к текущей книге

  1. В диалоговом окне Параметры запроса в левой части в разделе ТЕКУЩАЯ КНИГА выберите Загрузка данных.

  2. Выполните одно или несколько из указанных ниже действий.

    • В области Обнаружение типоввыберите или сберем для обнаружения типов столбцов и их заглавных колонок для неструктурированных источников.

      По умолчанию они обнаруживаются. Если вы предпочитаете формировать данные самостоятельно, отоставьте этот параметр.

    • В области Связивыберите или отоберем создать связи между таблицами при первом добавлении в модель данных.

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

    • В области Связивыберите или отоберете update relationships when refreshing queries loaded to the Data Model (Связи) при обновлении запросов, загруженных в модель данных.

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

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

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

См. также

Справка по Power Query для Excel

Управление запросами в Excel

Нужна дополнительная помощь?

Управление обновлением внешних ссылок (связей)

​Смотрите также​Заранее спасибо.​ т.е. при любом​Application.Calculation = xlCalculationAutomatic​ “$”.​В настройках «формулы»​ Это нужно для​ диапазона.​содержится несколько сотен строк;​ Вручную, пользователь обновляет​На следующем рисунке показан​

Дополнительные сведения о внешних ссылках

​ наличие в книге​ обновлять связи автоматически​в группе​.​Существует несколько вариантов выбора​Чтобы обновить связи, нажмите​При создании внешних ссылок​_Boroda_​ телодвижении (кроме изменения​Makintosh​Если в ссылке​ — «параметры вычислений»​ того, чтобы активизировалась​Области позволяют сформировать структуру​пользователю нужно представлять одни​

Книга, содержащая связи

​ данные, нажав кнопку​ основной процесс обновления​

​ самых последних данных.​    ​Буфер обмена​имя связи автоматически не​

​ в диалоговом окне​ кнопку​ (также называемых связями)​: а так?​

Управление связями с другими книгами

​ цвета фона ячейки).​: В настройках стоит​ используются символы $,​ нужно поставить «автоматически»,​ «Работа со сводными​ сводного отчета.​ и те же​Обновить выбранное подключение​ данных, подключенных к​Связь с параметрическим запросом​Этот параметр влияет на​нажмите кнопку​ удаляется, поэтому его​Запрос на обновление связей​Параметры​ можно задать для​200?’200px’:»+(this.scrollHeight+5)+’px’);»>=ВПР(A1;’G:ПАПКАКакаятокнига.xlsx’!Таблица[#Данные];2+(D1=»абв»);0)​ И соответственно, если​ автоматический пересчёт. Но​

Ручное обновление всех (или никаких) связей в книге

  1. ​ то она называется​ если стоит другое​ таблицами».​Сначала заполним «Названия строк».​ данные в разных​

  2. ​.​

  3. ​ внешнему источнику.​ нельзя обновить без​​ все книги, которые​​Копировать​ может потребоваться удалить.​.​​в области сведений​​ них поддержку и​

Частичное обновление связей с другими книгами вручную

  1. ​Стоит ли в​

  2. ​ ваша функции медлительная,​

  3. ​ всё равно приходится​​ абсолютной, если символов​​ то ячейки пересчитываются​​На вкладке «Параметры» находим​​ Так как нужно​​ разрезах, выбирать информацию​​Обновление всех связей​

    Подключения к данным

  4. ​1. когда пользователь инициирует​​ открытия книги-источника.​​ открываются на компьютере.​.​

    ​Удаление имени​На вкладке​ о документе, а​ расписание обновления. В​

    ​ параметрах галка «При​ то это будет​

  5. ​ обновлять вручную. И​​ $ в ссылке​​ по другим условиям.​

Управление выдачей запроса на обновление всех связей

​ группу «Сводная таблица».​ вывести список книг​ по заданному условию,​

Отключение выдачи запроса на обновление связей данной книги и обновление связей вручную

​Этот параметр обновляет все​​ операции обновления, чтобы​Нажмите кнопку​ Пользователи, которые откроют​Нажмите кнопку​На вкладке​Данные​ затем выберите команду​ случае изменения значения​

  1. ​ пересчете книги» «Обновлять​​ сказываться на быстроте​​ ещё заметил, если​​ нет – относительной.​​по 2003 (могу​​ Нажимаем – открывается​​ по годам, то​

  2. ​ группировать, а встроенный​​ подключения к данным​​ получить самые последние​

  3. ​Не обновлять​

​ книгу на другом​​Вставить​Формулы​в группе​Включить это содержимое​ в ячейке приложение​ ссылки на другие​​ работы всего Excel​

Настройка обновления связей по запросу при открытии файла

​ формула написана встроенными​ Адреса таких ссылок​​ ошибиться, кажется так)​​ меню кнопки. Выбираем​

Если никакие связи не создавались

  1. ​ в этом разделе​​ фильтр и группировка​​ в книге при​​ данные.​​.​​ компьютере, не будут​​.​

  2. ​в группе​​Подключения​​.​

  3. ​ Microsoft Excel не​​ документы»?​Сергей​ функциями Excel то​​ называются абсолютными и​

​ : сервис-параметры-вкладка вычисления,​ пункт «Параметры».​ должен быть перечень​ справляются плохо.​ нажатии кнопки​2. обновление делает подключение​Закройте конечную книгу.​ затронуты.​Нажмите стрелку рядом с​Определенные имена​нажмите кнопку​

Разрыв связей с источником

​Закройте все книги.​​ выполняет поиск нового​И галка «Сохранять​: Здравствуйте.​ всё хорошо автоматом​ относительными, соответственно. «​ надо поставить галочку​В открывшемся меню «Параметры​ названий книг. В​Требования к исходной таблице:​Обновить все подключения​​ к источнику данных,​

  1. ​Откройте книгу-источник.​​На вкладке​​ кнопкой​​нажмите кнопку​​Изменить связи​​Откройте книгу, содержащую связи.​​ значения, если это​

  2. ​ значения внешних связей»?​​Вопрос такой -​​ обновляется, а если​Drshall​

    • ​ около пункта автоматически​ сводной таблицы» нажать​ списке полей ставим​у каждого столбца есть​

    • ​.​ часто сохранили файл​

  3. ​Откройте конечную книгу.​​Файл​​Параметры вставки​

  4. ​Диспетчер имен​.​На вкладке​

    ​ не задано пользователем.​

  5. ​Сергей​​ в папке имеется​​ с помощью написанной​​: а если адрес​​К предыдущему ответу:​​ кнопку «Разметка и​​ птичку напротив поля​

  6. ​ заголовок (первый вариант​​Регулярное обновление​​ подключения, который определяет​Нажмите кнопку​нажмите кнопку​​, а затем​​.​

  7. ​Нажмите кнопку​Данные​Книга, содержащая связи, называется​: Галки стоят. Предложенная​ несколько десятков файлов​ пользовательской функцией то​ ячейки не вручную​

Замена одной формулы ее вычисляемым значением

​ знак $ фиксирует​ формат». Поставить галочки​ «Название». Данные столбца​ – неправильный; второй​Этот параметр автоматически обновляет​ все сведения, необходимые​Обновить​Параметры​​ выберите команду​ Кнопка ​В столбце​

  1. ​Запрос на обновление связей​
    ​в группе​ книгой назначения, а​ формула вообще только​ эксель, таблицы с​
    ​ возникает эта проблема.​​ прописывать, а при​

    1. ​ значение при копировании​ напротив следующих пунктов:​

    2. ​ имеют текстовый формат​​ – правильный);​​ данные интервалом времени,​​ для доступа к​​.​​и выберите категорию​​Значения​​Имя​​.​

    3. ​Подключения​​ книга, с которой​​ нули выдаёт ))​​ одинаковой структурой, но​​New​

  2. ​ написании формулы щелкать​​ формул, но не​​Закрыть окно, нажав кнопку​​ – автоматически попадают​​значения в одном столбце​​ заданные автором книги.​ Выноска 4​ и получить данные​

  3. ​Примечание:​​Дополнительно​ Изображение кнопки​.​

  4. ​выберите имя, которое​Щелкните​​нажмите кнопку​ Выноска 4​ установлена связь, называется​Придётся пока что​​ разным количеством строк​ Изображение кнопки​: А у вас​

Если известно, что подключение к исходному файлу отсутствует

​ их​​ влияет на пересчет,​​ ОК.​ в область «Названия​ имеют одинаковый формат​Подробнее о том, как​ из внешнего источника​Мы стараемся как​.​

Если требуется работать с имеющимися данными, а не заменять их новыми

​Нажмите кнопку​​ следует удалить, и​​Не отображать оповещение и​

Если обновление в последний раз заняло слишком много времени

​Изменить связи​​ исходной книгой. Если​​ 30+ файлов открывать,​ + один файл​ в написанных функциях​Makintosh​ цитатка из хелпа​Еще один вариант:​ строк». К значениям​​ (число, дата, текст);​​ определить подключения к​​ данных.​​ можно оперативнее обеспечивать​​В Excel 2007 нажмите​​Не обновлять​ нажмите кнопку​ не обновлять автоматические​

Если эта книга создана другим пользователем и вы не знаете, почему появился этот запрос

​.​​ открытая книга (конечный​​ чтобы значения в​ в который вытягиваются​ есть строка ?​: Уважаемые знатоки. Вот​»При копировании формул​​Открыть лист со сводным​​ сразу применяется сортировка​​все ячейки в строках​​ внешним источникам данных​​3. существует различных источников​​ вас актуальными справочными​

Если вы каждый раз одинаково отвечаете на этот запрос и хотите, чтобы он больше не отображался

​ кнопку Microsoft Office​. Обновление из источника​Удалить​ связи​

​Из списка​ файл) содержит связи​​ нужном собрать =)​

​ определенные значения из​Application.Volatile​ столкнулся с такой​ возникает необходимость управлять​ отчетом. На вкладке​ по алфавиту.​ и столбцах заполнены​

  1. ​ в книге Excel​​ данных, которые вы​​ материалами на вашем​​, щелкните​​ при отсутствии подключения​​.​​.​

    ​Источник​ с другими книгами​Изображение кнопки Office​ Хорошо, что это​​ этих таблиц. В​​Makintosh​​ проблемой.​​ изменением адресов ячеек​

  2. ​ «Разработчик» нажать кнопку​​Теперь ставим птичку напротив​​ значениями;​​ читайте в статье​ можете получать доступ,​​ языке. Эта страница​Параметры Excel​ к нему невозможно.​Если используется диапазон внешних​

​Возможно, связь была создана​выберите связанный объект,​​ или файлами (которые​

​ нечасто требуется.​​ этом файле более​: Нет, такой строки​Значение ячейки А1​ или ссылок. Для​ «Запись макроса».​ поля «Год выпуска».​данные из одной ячейки​ подключение к внешним​

  1. ​ таких как OLAP,​​ переведена автоматически, поэтому​​и выберите категорию​​ Например, если книга-источник​​ данных, параметр запроса​​ случайно путем перемещения​​ который необходимо изменить.​

  2. ​ называются исходными файлами),​​Спасибо за внимание!​​ 5к строк. Для​

  3. ​ нету.​

​ на Листе1 зависит​​ этого перед символами​Выполнить вручную обновление сводной​Сводная таблица сделана. С​

Если известно, что исходный файл доступен для подключения к нему

​ нельзя разнести в​​ данным (импорт) в​​ SQL Server, данных​ ее текст может​Дополнительно​

Если используется параметрический запрос

​ расположена в сети,​ может также использовать​ или копирования диапазона​

  1. ​Для выделения нескольких связей​​ а исходные файлы​​Serge_007​

  2. ​ вытягивания использую формулу:​

  3. ​R Dmitry​

  4. ​ от значения ячейки​

  5. ​ адреса ячейки или​​ таблицы – остановить​​ помощью нескольких кликов.​

support.office.com

Обновление внешних данных в книге, открытой в браузере

​ разные столбцы (без​​ справочной системе Microsoft​ OLEDB и драйверы​ содержать неточности и​.​ а подключение к​ данные из другой​ ячеек, листа или​ щелкните каждый связанный​ изменятся, то связи​: Значит работает, иначе​Формула работает, всё,​: Нет, такой строки​ В2 на Листе2.​ ссылки устанавливаются символы​ запись. Нажать на​ Такой способ представления​ объединения ячеек).​ Excel.​ ODBC.​ грамматические ошибки. Для​В разделе​

​ сети отсутствует.​ книги. Может потребоваться​ диаграммы из одной​ объект, удерживая нажатой​ в открываемой книге​ было-бы значение ошибки​ что нужно вытягивает.​ нету.{/post}{/quote}​ Вот если поменять​ “$”. Изменяться только​ кнопку «Макросы». Выбрать​ информации удобен для​Нерациональная организация информации:​Чтобы обновить данные из​4. обновление добавляет самых​ нас важно, чтобы​Общие​Нажмите кнопку​ проверить и удалить​ книги в другую.​ клавишу CTRL.​

В этой статье

​ могут указывать на​

​#ССЫЛКА!​ Проблема в том,​

​Function нннннн()​ значение В2 а​

Узнайте об обновлении данных

​ те атрибуты адреса​ из доступных макросов​ финансовых отчетов.​Нельзя будет вывести итоги,​

Основной процесс обновления внешних данных

​ внешнего источника данных​ последних данных в​ эта статья была​снимите флажок​

​Не обновлять​ эти типы связей.​ Откройте книгу, а​Чтобы выделить все связи,​ устаревшие данные.​Сергей​ что при первом​Application.Volatile True​ потом перейти на​

​ ячейки, перед которыми​ записанный – «выполнить».​От сводной таблицы больше​ например, только по​ в книге, открытой​ книге.​ вам полезна. Просим​

​Запрашивать об обновлении автоматических​.​В Excel формула удаляется​

​ затем найдите ненужные​

Параметры для обновления данных Excel

​ нажмите клавиши CTRL+A.​1. Конечная книга содержит​: Увы, пока Какуютокнигу​ открытии вместо значения​…​ лист1 то ячейка​ не стоит символ​Теперь сводный отчет при​ пользы, если она​ городу.​ в браузере, выполните​К началу страницы​ вас уделить пару​ связей​Нажмите кнопку​ при замене на​ связи и разорвите​Нажмите кнопку​ внешние ссылки.​

​ не открыть также​ выдаётся​…​ А1 не обновляется.​ “$”. Если перед​ открытии будет обновляться​

​ динамическая. То есть​

​Лучше значения ввести следующим​

​ следующие действия.​

​Не удается определить информации,​ секунд и сообщить,​. Если этот флажок​

​Не обновлять​

​ возвращаемое значение. Чтобы​ их или замените​Обновить значения​2. Внешняя ссылка (или​​ выдает #ССЫЛКА!, а​​Quote​

​…​

​ И что бы​ всеми атрибутами адреса​ программно.​ при внесении новых​​ таким образом.​​Откройте книгу, содержащую данные,​

​ необходимой для подключения​

​ помогла ли она​ снят, связи будут​. Если не требуется​

​ отменить случайную замену​ их значениями.​.​ связь) представляет собой​ затем меняет на​200?’200px’:»+(this.scrollHeight+5)+’px’);»>#ССЫЛКА! и необходимо открыть/закрыть​myFunction=…​ обновить данные нужно​ ячейки поставить символ​

Обновление данных из внешнего источника данных

​Есть например ячейка A1,​ данных в исходный​​ которые вы хотите​ к внешнему источнику​

  1. ​ вам, с помощью​ обновляться автоматически (без​ получение текущих данных,​

  2. ​ формулы ее значением,​​Важно:​​Можно настроить автоматическое обновление​

  3. ​ ссылку на диапазон​ нули. Проблема именно​

  4. ​ все книги, чтобы​​End Function​​ кликнуть 2 раза​ “$”, то при​ в которую берутся​

  5. ​ диапазон поля отчета​​Чтобы создать сводную таблицу​​ обновить.​ данных в книге​ кнопок внизу страницы.​

​ выдачи запроса).​

support.office.com

Обновление данных в сводных таблицах Excel

​ можно сэкономить время,​ немедленно после ввода​ При разрыве связей с​ связей при запуске​ ячеек в книге-источнике.​ в невозможности по​ собрать данные. В​New​ по ячейке А1​ копировании формулы ссылка​

О целесообразности и возможности сводных таблиц

​ данных из ячейки​ можно обновить. Как​ в качестве исходного​Щелкните значок​

  • ​ при работе в​
  • ​ Для удобства также​Одинаковый запрос для всех​ не обновляя все​ или вставки значения​ источником все формулы,​ или после запуска.​3. Книга-источник содержит ячейку,​ какой-то причине вытащить​

​ интернете встречал решения​

  • ​: А вы попробуйте​ и нажать на​ не изменится.​ F1 по формуле​
  • Заголовки.
  • ​ это сделать?​ диапазона возьмем каталог​данных​
  • ​ браузере. У вас​ приводим ссылку на​ пользователей этой книги​
  • ​ связи. После открытия​ нажмите кнопку​ использующие источник, заменяются​Предупреждение:​

​ значение из которой​

Информация.

​ данные из файлов,​ на ВБА, но​ добавьте её сразу​

Рационально.

​ Enter. Может можно​Например, если в​

​ =F1. По каким-то​

Как сделать сводную таблицу в Excel

​Вручную:​ учебной литературы:​на панели инструментов.​ открыть книгу в​

Каталог.

​ оригинал (на английском​    ​ книги нажмите на​Отменить​ на их текущее​ Этот режим влияет на​ загружается и помещается​ которые ещё не​ я в нём​

  1. ​ первой строкой под​ написать код который​ записи формулы ссылку​ причинам иногда после​Когда данные внесены в​Подразумевается, что данная таблица​Вставка.
  2. ​Выполните одно из указанных​ Microsoft Excel 2010​ языке) .​Предупреждение:​ вкладке​.​Параметры.
  3. ​ значение. Например, связь​ всех пользователей книги.​ в конечную книгу.​ открывались в эту​ не разбираюсь и,​ названием функции, вот​ бы обновлял все​Настройки.
  4. ​ на ячейку D7​ изменения данных в​Структура.
  5. ​ исходную таблицу, переходим​ состоит из сотен​ ниже действий.​ для определения сведений​При использовании книги в​ Этот режим влияет на​Данные​Выделите ячейку с формулой.​ =СУММ([Бюджет.xls]Годовой!C10:C25) будет заменена​ Если отключить обновление​Когда обе связанные книги​ сессию.​ так как решения​ так​ формулы на листе.​ записать в виде​Название.
  6. ​ ячейке F1 данные​ на лист со​

Год выпуска.

​ строк. Создадим сводный​Установите флажок​ о подключении и​ браузере, средство просмотра​ всех пользователей книги.​

Как обновить сводную таблицу в Excel

​в группе​Если формула является​ на =45. Эту​ связей и выдачу​ открыты на одном​Nad_Serg​ для единичной книги​Function МояСуперФункция()​

​ Подскажите, как можно​

  1. ​ $D7, то при​ в ячейке A1​ сводным отчетом и​ отчет для выведения​Обновить все подключения​ другие параметры, например​ веб-отображает данные, либо​ Если отключить обновление​Подключения​Обновить.
  2. ​ формула массива, выделите​ операцию нельзя отменить,​ запроса, пользователи этой​ компьютере, связи обновляются​: Сергей, я избавилась​ не могу сообразить,​Application.Volatile​Данные.
  3. ​ решить данную проблему.​ перемещении формулы будет​ не меняются автоматически,​ щелкаем в любом​

​ списка книг из​обновить все подключения​ способ отображения данных,​

  1. ​ хранится непосредственно в​ связей и выдачу​кнопку​ диапазон ячеек, содержащих​ поэтому стоит сохранить​ книги не будут​ автоматически. Когда конечная​ от этой проблемы​
  2. ​ что мне нужно​’ля-ля-ля​Заранее огромное спасибо!​ изменяться только номер​ а изменяются только​Параметры1.
  3. ​ его месте правой​ конкретной категории или​ к данным в​ который требуется обновить.​ книге, или в​

Пункты.

​ запроса, пользователи этой​Изменить связи​

​ формулу массива.​

  1. ​ версию файла​ знать, что данные​ книга открыта, а​ убрав все флажки​
  2. ​ сделать, чтобы данные​’ля-ля-ля​New​ строки “7”. Запись​ после захода в​ кнопкой мыши. В​

​ определенного года. Задача​ книге​ Во время настройки​

exceltable.com

Обновление данных в Excel

​ внешнему источнику данных,​ книги не будут​, а затем обновите​Выбор диапазона, содержащего массив​.​ устарели.​ книга-источник не открыта,​ (галочки) в на​ со всей кучи​End Function​: А версия Excel​ D$7 означает, что​ ячейку A1 вручную​ открывшемся меню выбираем​ сформулирована – перейдем​Выберите команду​ в Excel 2010,​ таких как базы​ знать, что данные​ связи только с​

​   ​​На вкладке​На вкладке​ в области сведений​ вкладке «защищенный просмотр»​

​ моих файлов подгружались​​вдруг поможет​ какая? Пересчёт какой​

​ при перемещении будет​​ и нажатия Enter.​ «Обновить».​ к реализации.​
​Обновить выбранное подключение​ при публикации книги​ данных или в​ устарели.​ нужными исходными файлами.​Щелкните любую ячейку в​
​Данные​Данные​ о документе возможно​ в «параметрах безопасности»​ в файл-сборщик :(​
​Makintosh​ стоит? Если ручной,​ изменяться только символ​ Когда таких ячеек​Активизируем нужное поле сводного​Активизируем любую ячейку в​
​для обновления определенного​ в Microsoft SharePoint​ кубе интерактивной аналитической​На вкладке​Нажмите кнопку​ диапазоне массив.​в группе​в группе​ появление запроса на​ (см файл)​Есть ли сравнительно​: Ребята, вы просто​ то поставьте Автоматический.​ столбца “D”. Если​ много, то выполнение​ отчета – становится​ исходном диапазоне –​
​ подключения для сводной​ Server 2010 сохраняются​ обработки (OLAP). Если​Данные​Не обновлять​На вкладке​Подключения​Подключения​ обновление связей. Можно​Сергей​ простое решение?​ мозги. Всё помогло.​В Excel 2003​ же записать адрес​ обновления всех данных​ доступен инструмент «Работа​ щелкаем мышкой. Переходим​ таблицы.​ параметры.​ книгу, которую вы​в группе​. Обратитесь к владельцу​Главная​нажмите кнопку​нажмите кнопку​ задать режим вывода​: Помогло изменение формулы.​П.С. Ранее структура​ Добавил строчку Application.Volatile​
​ — Сервис -​ в виде $D$7,​ вручную затруднительно. Как​ со сводными таблицами».​ на вкладку «Вставка»​К началу страницы​В таблице ниже приведены​ используете содержит данные​Подключения​

​ книги. Вы также​​в группе​Изменить связи​Изменить связи​ этого запроса, а​ Вместо таблицы использовал​

Не обновляются автоматически данные

​ таблиц была проще​​ и всё хорошо​ Параметры — Вычисления​ то ссылка при​

​ автометичски обновить все​ Открываем вкладку «Параметры».​ — «Таблица». Нажимаем​Большой диапазон данных в​ краткое описание обновления​ из внешнего источника​нажмите кнопку​ можете выяснить, какие​Редактирование​.​.​ также режим обновления​ диапазон.​ и для вытягивания​ стало.​ — Автоматически​ перемещении формулы на​ данные?​ В группе «Данные»​ кнопку «Сводная таблица».​

​ таблице Excel рационально​

​ данных, которые можно​​ данных, вы можете​Изменить связи​ связи находятся в​нажмите кнопку​
​В списке​Нажмите кнопку​ всех связей без​Старая​

​ значений я использовал​​New​New​ этот адрес не​Ваш песец​ нажимаем кнопку «Обновить».​

​Автоматически выделяется весь диапазон.​​ представить в виде​ выбрать при настройке​

​ обновить данные. Эта​​.​ книге. На вкладке​

​Найти и выделить​

​Источник​​Запрос на обновление связей​ вывода запроса. Кроме​Новая​ формулу:​: Мы такие ))​: Если Excel 2010​ изменится, и в​: а если просто​Выделить сводную таблицу или​ Открывается диалоговое окно​ сводного отчета. Структура​ подключений к данным​

​ операция извлекает самая​​Нажмите кнопку​Данные​и выберите команду​

​выберите связь, которую​

​.​​ того, если книга​Quote​

​Quote​​ Только учтите, что​ — вкладка Формулы​

​ расчетах будут участвовать​
​ страницу обновить, сохранив​
​ отдельное поле, нажать​
​ инструмента. Необходимо проверить​
​ данного инструмента позволяет​
​ в Microsoft Excel.​
​ новая версия данных,​

​Запрос на обновление связей​​в группе​Выделить группу ячеек​ требуется разорвать.​Выберите нужный режим.​ содержит несколько связей,​

​200?’200px’:»+(this.scrollHeight+5)+’px’);»>=ЕСЛИ(D1=»абв»;ВПР(A1;’G:ПАПКА[Какаятокнига.xlsx]Лист1′!A1:F10;2;ЛОЖЬ);ВПР(A1;’G:ПАПКА[Какаятокнига.xlsx]Лист1′!A1:F10;3;ЛОЖЬ))​
​200?’200px’:»+(this.scrollHeight+5)+’px’);»>=’G:ПАПКА[Какаятокнига.xlsx]Лист1′!A1​

​ написав эту строку​
​ — (справа вверху)​

​ данные из ячейки​

​ перед этим? не​

​ сочетание клавиш Alt​​ правильность параметров для​ получить быстрый доступ​Параметр обновления​ который включает в​.​

​Подключения​​.​Для выделения нескольких связанных​Примечание:​ можно обновлять только​Получается, что эксель​Использование этой формулы​ в вашей функции,​ Параметры вычисления -​ D7. Если в​ помогает?​ + F5.​ отчета (диапазон, куда​ к итогам, информации​Описание​ себя все изменения,​Выберите нужный режим.​нажмите кнопку​В диалоговом окне​ объектов щелкните каждый​

planetaexcel.ru

Обновление данных при открытии книги (Как взять данные из соседних книг эксель, не открывая их?)

​ Даже если запретить Excel​​ некоторые из них.​
​ не видит таблицы​ не требовало открытия​ ваша функция стала​ выбрать Автоматически​ формуле указан интервал​Евгений берегов​Как настроить автоматическое обновление​ выводить сводную таблицу).​ по определенному параметру.​Обновить при открытии​ внесенные с момента​Примечание:​Изменить связи​
​Выделить группу ячеек​ из них, удерживая​ выдавать запрос на​Закройте все книги. Если​ в закрытом файле,​ всех основных файлов.​​ «летучей», т.е. она​​R Dmitry​ ячеек G3:L9, то​: попробуй поставить не​ сводной таблицы в​Открывается окно для построения​ Рассмотрим создание и​Средство просмотра автоматическое обновление​ последнего обновления данных.​ При наличии разорванных связей​.​установите флажок​ нажатой клавишу CTRL.​ обновление связей, пользователь​ одна книга-источник будет​ но видит диапазоны.​
​П.П.С. Если решением​ теперь всегда будет​
​: может стоит включить​ управлять можно каждым​ =Ф1 а =Ф$1​ Excel:​ отчета, список полей.​
​ обновление сводных таблиц.​​ внешних данных при​
​Узнайте об обновлении данных​ будет появляться оповещение​Можно ответить на запрос​
​Текущий массив​Чтобы выделить все связи,​ будет получать сообщения​ открыта, а остальные​ По крайней мере​
​ будет изменение формулы,​

​ пересчитываться при любом​​ автоматическое вычисления?​
​ из четырех символов:​
​Алексей маслов​Открыть лист со сводным​ В правой нижней​Оптимально формировать сводный отчет​ открытии книги.​
​Параметры для обновления данных​ об этом.​

​ и запретить его​​.​ нажмите клавиши CTRL+A.​ о наличии разорванных​
​ закрыты, обновления не​ у меня.​ также буду благодарен.​ изменении на листе,​New​ “G”, “3”, “L”​
​: В следующий раз​

​ отчетом. Щелкнуть в​​ части страницы –​ на основе исходной​​Обновление вручную​

​ Excel​​Нажмите кнопку​ вывод для этой​На вкладке​Щелкните элемент​ связей​ будут одинаковыми.​Спасибо всем кто​ Может просто не​ в книге, в​: Можно это сделать​ и “9”, помещая​

​ пишите из какого​​ любом месте таблицы​ области для размещения​ таблицы, если она​Этот параметр применяется только​Обновление данных из внешнего​Обновить​ книги в будущем.​

​Главная​​Разорвать​.​Откройте книгу, содержащую связи.​
​ откликнулся!​
​ могу сообразить чего-то.​
​ другой открытой книги,​​ макросом​
​ перед ними символ​ офиса ексель )))​ левой кнопкой мыши.​ данных из исходного​ отвечает следующим параметрам:​ к сводным таблицам.​
​ источника данных​. Это позволит гарантировать​

excelworld.ru

​Не отображать запрос и​

Хитрости »

12 Январь 2023              903 просмотров


С выходом Power Query в массы все чаще стал появляться вопрос: как обновить запросы один за другим в заданном порядке?

Если еще не работали с этой надстройкой и не знаете что это такое, то для начала лучше ознакомиться со статьей: Power Query — что такое и почему её необходимо использовать в работе?
Описание проблемы

В книге может быть десять и более запросов. И только 4 из них надо обновлять постоянно, да еще и в заданном порядке. Например, у нас есть с десяток запросов по продажам, отгрузкам и прочей аналитике, но только 4 из них нам надо обновить. При этом обновить надо в строгой последовательности:

«Запрос — Отделы», «Запрос — Сотрудники», «Заказы и Продажи», «Запрос — Бюджет»

. При этом обязательно необходимо, чтобы «Запрос — Бюджет» обновился последним, т.к. он зависит от всех остальных.

Какие есть варианты решения?

  • Вручную
  • Кнопка Обновить все(Refresh All)
  • Написать собственный порядок обновления через Visual Basic for Applications

 
Что еще может пригодиться в решении задачи:

  • Вывести список имен имен всех подключений на лист

Обновление вручную

Можно обновить запросы стандартными методами, поочередно вручную обновляя каждый запрос. Но это не всегда удобно, особенно если запросов более 5. Значит этот вариант не разбираем в деталях в принципе — все его плюсы и минусы очевидны.


Данные -Обновить все

Кнопка Данные(Data)Обновить все(Refresh All) не просто обновляет все без исключения запросы в книге, но и порядок запросов при этом никак не определить, следовательно мы не можем быть уверены в том, что обновление произошло именно в нужном нам порядке. Но все же не станем отбрасывать этот вариант как не рабочий — если проблема лишь в порядке обновления, то решение все же есть.
На самом деле, если мы имеем дело с Power Query, то правильнее всего выстраивать все взаимосвязи уже на стадии создания этих запросов в любом случае. Т.е. создавать их в правильной последовательности и «затягивать» данные в основной запрос в самую последнюю очередь, ориентируясь на результаты вспомогательных запросов. Это оптимальный вариант, т.к. в этом случае достаточно будет просто обновить нужный запрос, а Power Query сама определит какие вспомогательные запросы необходимо обновить для корректного результата. При этом встроенный механизм Power Query достаточно хорошо справляется с кешированием данных и даже если обновление происходит через кнопку Обновить все(Refresh All), то даже если на один и тот же вспомогательный запрос будет завязано несколько других — он будет обновлен лишь один раз, а не при обновлении каждого запроса.
Но здесь у нас опять же возникает проблема — если нам не надо обновлять все запросы в книге — как Power Query узнает, какие из них надо обновлять, а какие нет? Ответ — никак. Поэтому хоть и следует всегда стараться выстраивать цепочки взаимодействий запросов в «правильном» порядке — нашу проблему с обновлением только части запросов это никак не решит. В этом случае можно создать мастер запрос, в который просто через объединение запросов собирать все нужные. И обновление этого запроса должно инициировать обновление всех указанных в нем запросов со всеми их цепочками. Как создать подобный мастер запрос:

Все, запрос готов. Теперь достаточно обновить только его, чтобы все связанные запросы обновились. Правда, есть одна проблема: если данных много, то такой запрос их увеличит вдвое — ведь мы в один запрос собираем все остальные…


Собственный порядок обновления через Visual Basic for Applications

В решении через мастер-запрос есть одна проблема — запросы могут быть не только Power Query, но и более старых версий. Здесь вариантов вообще не остается — только Visual Basic for Applications. Да и в случае, если запросы уже созданы ранее кем-то еще или навыков создать мастер-запрос нет.

'---------------------------------------------------------------------------------------
' Author : Щербаков Дмитрий(The_Prist)
'          Профессиональная разработка приложений для MS Office любой сложности
'          Проведение тренингов по MS Excel
'          https://www.excel-vba.ru
'          info@excel-vba.ru
' Purpose: Код обновляет поочередно указанные запросы в заданном порядке
'---------------------------------------------------------------------------------------
Sub RefreshConnections()
    Dim oc, xQuery, aConnections, xConName
    Dim IsBG_Refresh As Boolean
    'создаем перечисление всех запросов, которые надо обновить
    'располагаем их в том порядке, в котором необходимо обновлять
    aConnections = Array("Запрос — Отделы", "Запрос — Сотрудники", "Заказы и Продажи", "Запрос — Бюджет")
    'перебираем и обновляем все запросы поочередно
 
    For Each xConName In aConnections
        Set oc = ActiveWorkbook.Connections(xConName)
        Set xQuery = Nothing
        Select Case oc.Type
        Case Excel.XlConnectionType.xlConnectionTypeODBC
            Set xQuery = oc.ODBCConnection
        Case Excel.XlConnectionType.xlConnectionTypeOLEDB
            Set xQuery = oc.OLEDBConnection
        Case Else
            'запрос выгружен в таблицу на листе
            If oc.Ranges.Count > 0 Then
                Set xQuery = oc.Ranges(1).QueryTable
            End If
        End Select
        'непосредственно обновление запроса с ожиданием окончания обновления
        If Not xQuery Is Nothing Then
            'запоминаем значение обновления в фоне для запроса
            IsBG_Refresh = xQuery.BackgroundQuery
            'выставляем принудительно ждать завершения запроса
            xQuery.BackgroundQuery = False
            'обновляем запрос
            xQuery.Refresh
            'возвращаем обновление в фоне в первоначальное состояние
            xQuery.BackgroundQuery = IsBG_Refresh
        End If
    Next
End Sub

Как использовать: Для начала надо убедиться, что разрешены макросы и при необходимости включить их: почему не работает макрос. Затем копируем код выше, из Excel переходим в редактор VBA(Alt+F11) —InsertModule. Вставляем туда скопированный код. Теперь код можно вызывать нажатием клавиш Alt+F8 -выделяем RefreshConnectionsВыполнить(Run).
Чтобы использовать приведенный код для своих запросов достаточно в строке:

aConnections = Array("Запрос — Отделы", "Запрос — Сотрудники", "Заказы и Продажи", "Запрос — Бюджет")

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


Вывести список всех запросов в книге на лист

Что делать, если

я не знаю, как правильно называются запросы

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

'---------------------------------------------------------------------------------------
' Author : Щербаков Дмитрий(The_Prist)
'          Профессиональная разработка приложений для MS Office любой сложности
'          Проведение тренингов по MS Excel
'          https://www.excel-vba.ru
'          info@excel-vba.ru
' Purpose: Код выводит на лист все запросы в текущей книге
'---------------------------------------------------------------------------------------
Sub GetAllConnections()
    Dim ws As Worksheet
    Dim lr As Long
    Dim oc, aList()
    'создаем массив для запоминания имен всех запросов
    ReDim aList(1 To ActiveWorkbook.Connections.Count, 1 To 1)
    For Each oc In ActiveWorkbook.Connections
        lr = lr + 1 'увеличиваем счетчик
        aList(lr, 1) = oc.Name
    Next
    'создаем новый лист, в который записываем имена всех запросов
    Set ws = ActiveWorkbook.Worksheets.Add(before:=ActiveWorkbook.Worksheets(1))
    'оформляем заголовок(для эстетики)
    ws.Cells(1, 1).Value = "Имя запроса"
    ws.Cells(1, 1).Font.Bold = True
    'записываем имена всех запросов
    ws.Cells(2, 1).Resize(lr, 1).Value = aList
End Sub

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

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


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



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

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

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

Ссылка:

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

Описание

Мы хотим при помощи VBA обновить запросы выборочно. Напишем несколько простых VBA скриптов.

В первом скрипте мы просто научимся выводить на лист Excel названия всех подключений.

Во втором скрипте мы обновим запросы выборочно прямо в коде указав, какие запросы обновлять не нужно.

Для третьего скрипта мы предварительно создадим таблицу Excel с перечнем запросов для обновления.

Код

Код для вывода на лист Excel всех запросов в книге:

Sub ShowConnections()
    
    Dim Connection As WorkbookConnection
    
    rn = 1
    
    For Each Connection In ThisWorkbook.Connections
        Range("A" & rn).Value = Connection.Name
        i = i + 1
    Next Connection
    
End Sub

Код для обновления запросов выборочно с указанием запросов, которые обновлять не надо:

Sub RefreshConnections()
    Dim Connection As WorkbookConnection
    
    For Each Connection In ThisWorkbook.Connections
        If Not Connection.Name = "Запрос — pop_1" Then
            Connection.Refresh
        End If
    Next Connection
    
End Sub

Код, для которого мы предварительно создали таблицу с перечнем запросов к обновлению:

Sub RefreshSelectively()
    Dim Connection As WorkbookConnection
    Dim rng_Refresh As Range
    
    Set rng_Refresh = Range("Обновить_Запросы[Обновить_Запросы]")
    
    For Each Connection In ThisWorkbook.Connections
        If Not rng_Refresh.Find(Connection.Name) Is Nothing Then
            'MsgBox rng_Refresh.Find(Connection.Name).Address
            Connection.Refresh
        End If
    Next Connection
End Sub

Курс Power Query + VBA

Номер урока Урок Описание
1 Power Query + VBA №1. Обновить запросы выборочно, обновить все запросы кроме одного В этом уроке мы научимся выборочно обновлять запросы в книге Excel с помощью VBA.
2 Power Query + VBA №2. Путь к файлу папке при помощи VBA В этом уроке вы узнаете как задать путь к файлу-источнику для Power Query при помощи VBA.
3 Power Query + VBA №3. Обработать и сохранить много файлов В этом уроке вы узнаете как по очереди обработать и сохранить каждый нужный вам файл. Это еще один распространенный способ применения VBA в связке с Power Query.
4 Power Query + VBA №4. Обработать множество ссылок по одной В этом уроке вы узнаете как обработать большое количество web-страниц по одной, чтобы избежать ошибок и разрывов.

Время на прочтение
7 мин

Количество просмотров 31K

image
Всем привет.
Наступил новый 2016 год, а значит пора обновить инструменты для упрощения скучной механической работы. Отделы аналитики, маркетинга, продаж часто сталкиваются со следующими трудностями при обновлении отчетности:
1. Данные приходится собирать воедино из нескольких источников.
2. Отчеты составляются в Excel, что накладывает значительные ограничения на объем обрабатываемых данных.
3. Внесение изменений в заранее настроенные разработчиками выгрузки дело как правило не самое быстрое.

Если отчеты нужно обновлять еженедельно или даже ежедневно, то эта процедура становится весьма напряжной даже для самых терпеливых. С помощью надстройки Excel Power Query и записи данных в MySQL можно свести обновление большинства отчетов до простого нажатия кнопки «Обновить»:
1. Данные из любого количества источников импортируются через SQL-запросы в обычные таблицы Excel.
2. Даже из большой базы можно записывать в Excel только небольшую часть данных (например, итоговые суммы за нужный диапазон дат с группировкой только по нужным столбцам).
3. Изменения в отчет можно вносить просто поменяв SQL-запрос. Далее формируем нужный отчет стандартными средствами Excel.

В этой статье я покажу как настраивать и автоматически заполнять простые базы данных MySQL (на примере выгрузки статистики всех ключевых слов из Яндекс Метрики), а потом одной кнопкой обновлять отчеты в Excel, используя надстройку Power Query. Power Query имеет весьма странные особенности работы при составлении SQL-запросов (особенно динамических), которые мы разберем во второй части статьи.

Выбор MySQL (или любой другой популярной базы данных) вполне очевиден — бесплатно, относительно просто, возможность работать с довольно большими базами данных без технических хитростей. В качестве примера будем использовать Amazon Web Services: дешево (в большинстве случаев используемый инстанс будет бесплатен для вас в течение 12 месяцев).

Итак, начнем (если у вас уже есть базы данных с готовыми данными, то можно сразу переходить к разделу с Excel):
1. Регистрируемся на AWS (если еще нет учетки), запускаем самый простой инстанс t2.micro и заходим на него по SSH. Можно посмотреть краткую инструкцию в прошлом посте habrahabr.ru/post/265383. Обратите внимание, что нам потребуется первый в списке вариант инстанса на Amazon Linux AMI. Необходимо выставить правила, разрешающие обращение к инстансу по нужным портам:
image

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

2. Исполняем подряд команды, описанные в документации docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-ug.pdf. Нам нужна глава «Tutorial: Installing a LAMP Web Server on Amazon Linux». Запомните пароль, который вводите при выполнении команды «sudo mysql_secure_installation». Для удобства установите phpMyAdmin как описано в конце этой главы. Если будете копипастить из документации строчку «sudo sed -i -e ‘s/127.0.0.1/your_ip_address/g’ /etc/ht tpd/conf.d/phpMyAdmin.conf», то обратите внимание, что иногда при копировании в «httpd» появляется лишний пробел.

После этих действий на вашем инстансе должна открываться такая страница:
image

3. Заходим под пользователем root и паролем, который вводили при настройке. Для доступа к базе данных «извне» (т. е. из Excel) нам потребуется пользователь, отличный от root. Заводим его в интерфейсе phpMyAdmin в меню Пользователи —> Добавить пользователя. Добавим пользователя stats, зададим пароль и назначим ему привилегии SELECT и INSERT. Итого получим:
image

4. Теперь создадим базу данных data:
image

5. В данном примере будем наполнять базу статистикой посещений по ключевым словам из Яндекс Метрики. Для этого создадим таблицу seo (обратите внимание, что у столбца id надо отметить опцию A_I (auto increment)):
image

6. Для получения статистики по ключевым словам из Яндекс Метрики можно использовать следующий скрипт. В качестве параметров нужно указать начальную и конечную дату выгрузки (переменные $startDate и $endDate), авторизационный токен (в коде есть описание как его получить), номер счетчика, из которого нужно получить статистику, и параметры базы данных: ID инстанса, логин (у нас «stats»), пароль и название базы (у нас «data»). Скопируйте в корневую папку инстанса этот код и запустите командой «php seo.php».

Код PHP для выгрузки данных Яндекс Метрики

<?php

// начало и конец периода выгрузки
$startDate = '2015-10-01';
$endDate = '2015-12-31';

// токен для запросов к API Яндекс Метрики
// для получения токена создаем приложение на https://oauth.yandex.ru/
// даем приложению разрешение на чтение статистики Яндекс Метрики
// после создания берем параметр ID приложения и подставляем в конец https://oauth.yandex.ru/authorize?response_type=token&client_id=
// жмем Разрешить и получаем токен
$atoken = '';

// номер счетчика
$project = '';

// соединяемся с базой данных и проверяем все ли в порядке
$con = mysqli_connect("ec2-....compute.amazonaws.com","stats","здесь пароль", "data");

if (mysqli_connect_errno()) {
	echo "Failed to connect to MySQL: " . mysqli_connect_error();
	exit();
} else {
	echo "Connection successfull n";
}

if ($con->query("SET NAMES 'utf8'")) {
	echo "Names set n";
} else {
	printf("Error: %sn", $con->error);
	exit();
}

// файл, в который записываем результаты выгрузки (в случае ошибки записи в базу данных по нему можно увидеть какая строчка записалась последней и соответственно дала ошибку)
$fname = "data.txt";
$fp = fopen($fname, "w");
fclose($fp);

function getBatch($startDate, $endDate, $project, $offset, $limit, $atoken, $fname, $con) {
	// делаем запрос к API Яндекс Метрики
	// документация https://tech.yandex.ru/metrika/doc/api2/api_v1/attributes/visitssource_/search-docpage/
	$ch = curl_init();
	$options = array(
		CURLOPT_URL => 'https://api-metrika.yandex.ru/stat/v1/data?oauth_token='.$atoken.'&id='.$project.'&accuracy=full&date1='.$startDate.'&date2='.$endDate.'&dimensions=ym:s:<attribution>SearchPhrase&metrics=ym:s:visits&limit='.$limit.'&offset='.$offset,
		CURLOPT_RETURNTRANSFER => TRUE
	);

	curl_setopt_array($ch, $options);
	$data = curl_exec($ch);
	curl_close($ch);

	// переводим ответ запроса формата JSON в массив
	$data = json_decode($data, true);

	// смотрим какой ответ получили от Яндекс Метрики
	//var_dump($data);

	// проходим по массиву $data['data'] и записываем период выгрузки, ключевую фразу и количество визитов
	for ($i=0; $i < count($data['data']); $i++) {
		file_put_contents($fname, $startDate."t".$endDate."t".$data['data'][$i]['dimensions'][0]['name']."t".$data['data'][$i]['metrics'][0]."n", FILE_APPEND);

		if ($con->query("INSERT INTO seo (startDate, endDate, query, visits) VALUES ('".$startDate."', '".$endDate."', '".mysqli_real_escape_string($con, substr($data['data'][$i]['dimensions'][0]['name'], 0, 255))."', ".$data['data'][$i]['metrics'][0].")")) {
			//echo "Record done n";
	    } else {
	    	printf("Error: %sn", $con->error);
	    	exit();
	    }
	}

	if (count($data['data']) == 0) {
		return 'done';
	} else {
		return 'more';
	}
}

// https://tech.yandex.ru/metrika/doc/api2/api_v1/data-docpage/
// максимальное количество строк в одной таблице - 10 000
// в цикле выгружается по $limit строк, увеличивая при этом первую строчку выгрузки $offset на значение $limit
$offset = 1;
$limit = 10000;

$res = 'more';
do {
	$res = getBatch($startDate, $endDate, $project, $offset, $limit, $atoken, $fname, $con);
	$offset += $limit;
} while ($res == 'more');

mysqli_close($con);

Если возникнут ошибки при соединении с базой, то они отобразятся в консоли и выполнение будет прервано. В случае успешного выполнения получим статистику ключевых слов за выбранный период:
image

Отлично, данные получены. Посмотрим как получать их в Excel.

Использование Power Query для выгрузки данных в Excel
Power Query представляет собой надстройку, которая расширяет возможности Excel по выгрузке данных. Скачать можно тут www.microsoft.com/en-us/download/details.aspx?id=39379. Для работы с MySQL может потребоваться MySQL Connector и Visual Studio (предлагаются при установке из дистрибутива).

1. После установки выбираем MySQL:
image

2. В качестве базы указываем ID нашего инстанса (как было в скрипте) ec2-….compute.amazonaws.com. База данных data. Для ввода логина выбираем «База данных»:
image

3. В открывшемся окне дважды кликаем на таблицу seo и получаем:
image

В этом окне можно управлять запросами, изменяя столбцы и количество строчек. Когда база данных небольшая, то это работает. Однако если размер данных превышает даже 20MB, то Excel на большинстве компьютеров просто повиснет от такого запроса. К тому же неплохо бы менять даты запроса или другие параметры.

Динамические запросы в Power Query можно делать с помощью встроенного языка M msdn.microsoft.com/en-us/library/mt253322.aspx, однако запросы крайне неустойчивы в плане изменения каких-либо параметров в них. Чтобы запрос оставался «постоянным» сделаем следующий прием:

1. Сначала составляем таблицу, в которой указываем нужные нам параметры. В нашем примере это дата выгрузки. Формат ячеек со значениями лучше выставить как тестовый, т. к. Excel любит изменять формат ячеек по своему усмотрению:
image

2. Создадим запрос Power Query «Из таблицы», который будет просто дублировать эту таблицу:
image

3. В опциях запроса обязательно укажите формат второго столбца как Текст, иначе последующий SQL-запрос будет некорректным. Далее жмем «Закрыть и загрузить».
image

Итого мы получили запрос Power Query к обычной таблице, из которого будет брать значение начала и конца выгрузки.

Чтобы сделать SQL-запрос потребуется отключить одну опцию: заходим в Параметры и настройки —> Параметры запроса —> Конфиденциальность и выбираем «Игнорировать уровни конфиденциальности для возможного улучшения производительности». Жмем Ок.
image

4. Теперь делаем запрос к нашей базе данных, указывая в качестве начала и конца периода значения таблицы из пункта 3. Снова подключаемся к базе в Power Query и нажимаем «Расширенный редактор» в меню.
image

Например, мы хотим получить сумму визитов, которые принесли ключевые слова, содержащие «2015». На языке M запрос выглядит так:
let
Source = MySQL.Database("ec2-....compute.amazonaws.com", "data", [Query="select sum(visits) from seo where startDate>='"&Text.From(Таблица1{0}[Значение])&"' and endDate<='"&Text.From(Таблица1{1}[Значение])&"' and query like '%2015%';"])
in
Source

В параметрах startDate и endDate указываются значения в таблице из пункта 3. При запросе «Для выполнения этого собственного запроса к базе данных необходимы разрешения» жмем «Редактировать разрешение», проверяем, что все параметры подтянулись корректно и выполняем запрос. Теперь полученный ответ от SQL-запроса можно обработать обычными формулами Excel в привычном вам виде.

5. Важно! Когда вы будете обновлять выгрузку в следующий раз, то это приходится делать следующим способом (другие почему-то дают ошибку):
— меняем даты в таблице из пункта 1
— заходим в меню Данные —> Подключения и нажимаем «Обновить все»:
image

В этом случае все запросы выполнятся корректно и ваши отчеты обновятся автоматически. Итого для обновления отчета вам потребуется только изменить параметры запроса и нажать «Обновить все».

Понравилась статья? Поделить с друзьями:
  • Запросы на выборку данных excel
  • Запросы в vba excel примеры
  • Запросы в excel к sql server
  • Запросы в excel 2019
  • Запросы power query в этой книге могут быть несовместимы с текущей версией excel