Можно ли писать запросы в 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

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

Содержание

  • Создание SQL запроса в Excel
    • Способ 1: использование надстройки
    • Способ 2: использование встроенных инструментов Excel
    • Способ 3: подключение к серверу SQL Server
  • Вопросы и ответы

SQL в Microsoft Excel

SQL – популярный язык программирования, который применяется при работе с базами данных (БД). Хотя для операций с базами данных в пакете Microsoft Office имеется отдельное приложение — Access, но программа Excel тоже может работать с БД, делая SQL запросы. Давайте узнаем, как различными способами можно сформировать подобный запрос.

Читайте также: Как создать базу данных в Экселе

Язык запросов SQL отличается от аналогов тем, что с ним работают практически все современные системы управления БД. Поэтому вовсе не удивительно, что такой продвинутый табличный процессор, как Эксель, обладающий многими дополнительными функциями, тоже умеет работать с этим языком. Пользователи, владеющие языком SQL, используя Excel, могут упорядочить множество различных разрозненных табличных данных.

Способ 1: использование надстройки

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

Скачать надстройку XLTools

  1. После того, как вы скачали файл надстройки xltools.exe, следует приступить к его установке. Для запуска инсталлятора нужно произвести двойной щелчок левой кнопки мыши по установочному файлу. После этого запустится окно, в котором нужно будет подтвердить согласие с лицензионным соглашением на использование продукции компании Microsoft — NET Framework 4. Для этого всего лишь нужно кликнуть по кнопке «Принимаю» внизу окошка.
  2. Принятие лицензиного соглашение на использование компонента Microsoft NET Framework 4

  3. После этого установщик производит загрузку обязательных файлов и начинает процесс их установки.
  4. Загрузка обязательных файлов

  5. Далее откроется окно, в котором вы должны подтвердить свое согласие на установку этой надстройки. Для этого нужно щелкнуть по кнопке «Установить».
  6. Окно подтверждения согласия на установку надстройки

  7. Затем начинается процедура установки непосредственно самой надстройки.
  8. Установка надстройки

  9. После её завершения откроется окно, в котором будет сообщаться, что инсталляция успешно выполнена. В указанном окне достаточно нажать на кнопку «Закрыть».
  10. Закрытие окна установщика надстройки

  11. Надстройка установлена и теперь можно запускать файл Excel, в котором нужно организовать SQL запрос. Вместе с листом Эксель открывается окно для ввода кода лицензии XLTools. Если у вас имеется код, то нужно ввести его в соответствующее поле и нажать на кнопку «OK». Если вы желаете использовать бесплатную версию на 14 дней, то следует просто нажать на кнопку «Пробная лицензия».
  12. Окно лицензии надстройки XLTools

  13. При выборе пробной лицензии открывается ещё одно небольшое окошко, где нужно указать своё имя и фамилию (можно псевдоним) и электронную почту. После этого жмите на кнопку «Начать пробный период».
  14. Окно активации пробного периода надстройки XLTools

  15. Далее мы возвращаемся к окну лицензии. Как видим, введенные вами значения уже отображаются. Теперь нужно просто нажать на кнопку «OK».
  16. Активация пробной лицензии надстройки XLTools

  17. После того, как вы проделаете вышеуказанные манипуляции, в вашем экземпляре Эксель появится новая вкладка – «XLTools». Но не спешим переходить в неё. Прежде, чем создавать запрос, нужно преобразовать табличный массив, с которым мы будем работать, в так называемую, «умную» таблицу и присвоить ей имя.
    Для этого выделяем указанный массив или любой его элемент. Находясь во вкладке «Главная» щелкаем по значку «Форматировать как таблицу». Он размещен на ленте в блоке инструментов «Стили». После этого открывается список выбора различных стилей. Выбираем тот стиль, который вы считаете нужным. На функциональность таблицы указанный выбор никак не повлияет, так что основывайте свой выбор исключительно на основе предпочтений визуального отображения.
  18. Переход к созданию умной таблицы в Microsoft Excel

    Lumpics.ru

  19. Вслед за этим запускается небольшое окошко. В нем указываются координаты таблицы. Как правило, программа сама «подхватывает» полный адрес массива, даже если вы выделили только одну ячейку в нем. Но на всякий случай не мешает проверить ту информацию, которая находится в поле «Укажите расположение данных таблицы». Также нужно обратить внимание, чтобы около пункта «Таблица с заголовками», стояла галочка, если заголовки в вашем массиве действительно присутствуют. Затем жмите на кнопку «OK».
  20. Окно форматирования таблицы в Microsoft Excel

  21. После этого весь указанный диапазон будет отформатирован, как таблица, что повлияет как на его свойства (например, растягивание), так и на визуальное отображение. Указанной таблице будет присвоено имя. Чтобы его узнать и по желанию изменить, клацаем по любому элементу массива. На ленте появляется дополнительная группа вкладок – «Работа с таблицами». Перемещаемся во вкладку «Конструктор», размещенную в ней. На ленте в блоке инструментов «Свойства» в поле «Имя таблицы» будет указано наименование массива, которое ему присвоила программа автоматически.
  22. Наименование таблицы по умолчанию в Microsoft Excel

  23. При желании это наименование пользователь может изменить на более информативное, просто вписав в поле с клавиатуры желаемый вариант и нажав на клавишу Enter.
  24. Измененное наименование таблицы в Microsoft Excel

  25. После этого таблица готова и можно переходить непосредственно к организации запроса. Перемещаемся во вкладку «XLTools».
  26. Переход во вкладку XLTools в Microsoft Excel

  27. После перехода на ленте в блоке инструментов «SQL запросы» щелкаем по значку «Выполнить SQL».
  28. Переход в окно выполнения SQL надстройки XLTools в программе Microsoft Excel

  29. Запускается окно выполнения SQL запроса. В левой его области следует указать лист документа и таблицу на древе данных, к которой будет формироваться запрос.

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

    Далее пишется текст команды, которую вы хотите применить к выбранным объектам. Команды составляются при помощи специальных операторов. Вот основные операторы SQL:

    • ORDER BY – сортировка значений;
    • JOIN – объединение таблиц;
    • GROUP BY – группировка значений;
    • SUM – суммирование значений;
    • DISTINCT – удаление дубликатов.

    Кроме того, в построении запроса можно использовать операторы MAX, MIN, AVG, COUNT, LEFT и др.

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

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

Окно выполнения SQL запроса надстройкой XLTools в Microsoft Excel

Урок: «Умные» таблицы в Экселе

Способ 2: использование встроенных инструментов Excel

Существует также способ создать SQL запрос к выбранному источнику данных с помощью встроенных инструментов Эксель.

  1. Запускаем программу Excel. После этого перемещаемся во вкладку «Данные».
  2. Переход во вкладку Данные в Microsoft Excel

  3. В блоке инструментов «Получение внешних данных», который расположен на ленте, жмем на значок «Из других источников». Открывается список дальнейших вариантов действий. Выбираем в нем пункт «Из мастера подключения данных».
  4. Переход в Мастер подключения данных в Microsoft Excel

  5. Запускается Мастер подключения данных. В перечне типов источников данных выбираем «ODBC DSN». После этого щелкаем по кнопке «Далее».
  6. Окно Мастера подключения данных в Microsoft Excel

  7. Открывается окно Мастера подключения данных, в котором нужно выбрать тип источника. Выбираем наименование «MS Access Database». Затем щелкаем по кнопке «Далее».
  8. Окно выбора типа источника Мастера подключения данных в Microsoft Excel

  9. Открывается небольшое окошко навигации, в котором следует перейти в директорию расположения базы данных в формате mdb или accdb и выбрать нужный файл БД. Навигация между логическими дисками при этом производится в специальном поле «Диски». Между каталогами производится переход в центральной области окна под названием «Каталоги». В левой области окна отображаются файлы, расположенные в текущем каталоге, если они имеют расширение mdb или accdb. Именно в этой области нужно выбрать наименование файла, после чего кликнуть на кнопку «OK».
  10. Окно выбора базы данных в Microsoft Excel

  11. Вслед за этим запускается окно выбора таблицы в указанной базе данных. В центральной области следует выбрать наименование нужной таблицы (если их несколько), а потом нажать на кнопку «Далее».
  12. Окно выбора таблицы базы данных в Microsoft Excel

  13. После этого открывается окно сохранения файла подключения данных. Тут указаны основные сведения о подключении, которое мы настроили. В данном окне достаточно нажать на кнопку «Готово».
  14. Окно сохранения файла подключения данных в Microsoft Excel

  15. На листе Excel запускается окошко импорта данных. В нем можно указать, в каком именно виде вы хотите, чтобы данные были представлены:
    • Таблица;
    • Отчёт сводной таблицы;
    • Сводная диаграмма.

    Выбираем нужный вариант. Чуть ниже требуется указать, куда именно следует поместить данные: на новый лист или на текущем листе. В последнем случае предоставляется также возможность выбора координат размещения. По умолчанию данные размещаются на текущем листе. Левый верхний угол импортируемого объекта размещается в ячейке A1.

    После того, как все настройки импорта указаны, жмем на кнопку «OK».

  16. Окно импорта данных в Microsoft Excel

  17. Как видим, таблица из базы данных перемещена на лист. Затем перемещаемся во вкладку «Данные» и щелкаем по кнопке «Подключения», которая размещена на ленте в блоке инструментов с одноименным названием.
  18. Переход в окно подключений в Microsoft Excel

  19. После этого запускается окно подключения к книге. В нем мы видим наименование ранее подключенной нами базы данных. Если подключенных БД несколько, то выбираем нужную и выделяем её. После этого щелкаем по кнопке «Свойства…» в правой части окна.
  20. Переход в свойства базы данных в Microsoft Excel

  21. Запускается окно свойств подключения. Перемещаемся в нем во вкладку «Определение». В поле «Текст команды», находящееся внизу текущего окна, записываем SQL команду в соответствии с синтаксисом данного языка, о котором мы вкратце говорили при рассмотрении Способа 1. Затем жмем на кнопку «OK».
  22. Окно свойств подключения в Microsoft Excel

  23. После этого производится автоматический возврат к окну подключения к книге. Нам остается только кликнуть по кнопке «Обновить» в нем. Происходит обращение к базе данных с запросом, после чего БД возвращает результаты его обработки назад на лист Excel, в ранее перенесенную нами таблицу.

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

Способ 3: подключение к серверу SQL Server

Кроме того, посредством инструментов Excel существует возможность соединения с сервером SQL Server и посыла к нему запросов. Построение запроса не отличается от предыдущего варианта, но прежде всего, нужно установить само подключение. Посмотрим, как это сделать.

  1. Запускаем программу Excel и переходим во вкладку «Данные». После этого щелкаем по кнопке «Из других источников», которая размещается на ленте в блоке инструментов «Получение внешних данных». На этот раз из раскрывшегося списка выбираем вариант «С сервера SQL Server».
  2. Переход к окну подключения к серверу SQL Server в Microsoft Excel

  3. Происходит открытие окна подключения к серверу баз данных. В поле «Имя сервера» указываем наименование того сервера, к которому выполняем подключение. В группе параметров «Учетные сведения» нужно определиться, как именно будет происходить подключение: с использованием проверки подлинности Windows или путем введения имени пользователя и пароля. Выставляем переключатель согласно принятому решению. Если вы выбрали второй вариант, то кроме того в соответствующие поля придется ввести имя пользователя и пароль. После того, как все настройки проведены, жмем на кнопку «Далее». После выполнения этого действия происходит подключение к указанному серверу. Дальнейшие действия по организации запроса к базе данных аналогичны тем, которые мы описывали в предыдущем способе.

Окно Мастера подключения данных в программе Microsoft Excel

Как видим, в Экселе SQL запрос можно организовать, как встроенными инструментами программы, так и при помощи сторонних надстроек. Каждый пользователь может выбрать тот вариант, который удобнее для него и является более подходящим для решения конкретно поставленной задачи. Хотя, возможности надстройки XLTools, в целом, все-таки несколько более продвинутые, чем у встроенных инструментов Excel. Главный же недостаток XLTools заключается в том, что срок бесплатного пользования надстройкой ограничен всего двумя календарными неделями.

Еще статьи по данной теме:

Помогла ли Вам статья?

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

Выйти из подобной ситуации поможет Excel.

Уверен, что ни для кого не секрет, что MS Excel имеет встроенный модуль VBA и надстройки, позволяющие подключаться к внешним источникам данных, то есть по сути является мощным инструментом для аналитики, а значит идеально подходит для решения подобных задач.

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

Создаем в MS Excel книгу, на листе которой размещаем таблицу с идентификаторами, по которым будем в дальнейшем формировать запрос (если у нас есть уникальный идентификатор, для обеспечения максимальной скорости обработки таблицу лучше представить в виде одного столбца), сохраняем книгу в формате *.xlsm, после чего приступаем к созданию макроса.

Через меню «Разработчик» открываем встроенный VBA редактор и начинаем творить.

Sub job_sql() — Пусть наш макрос называется job_sql.

Пропишем переменные для подключения к БД, записи данных и запроса:

Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim sql As String

Опишем параметры подключения:

sql = «Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=True;Data Source=Storoge.company.ru Storoge.»

Объявим процедуру свойства, для присвоения значения:

Set cn = New ADODB.Connection
cn.Provider = » SQLOLEDB.1″
cn.ConnectionString = sql
cn.ConnectionTimeout = 0
cn.Open

Вот теперь можно приступать непосредственно к делу.

Организуем цикл:

For i = 2 To 1000

Как вы уже поняли конечное значение i=1000 здесь только для примера, а в реальности конечное значение соответствует количеству строк в Вашей таблице. В целях унификации можно использовать автоматический способ подсчета количества строк, например, вот такую конструкцию:

Dim LastRow As Long
LastRow = ActiveSheet.UsedRange.Row — 1 + ActiveSheet.UsedRange.Rows.Count

Тогда открытие цикла будет выглядеть так:

For i = 2 To LastRow

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

If Cells(i, 2) = «Ваше условие» Then

Итак, мы определились с объемом и условиями выборки, организовали подключение к БД и готовы формировать запрос. Предположим, что нам нужно получить информацию о размере ежемесячного платежа [Ежемесячный платеж] из таблицы [payments].[refinans_credit], но только по тем случаям, когда размер ежемесячного платежа больше 0

sql = «select [Ежемесячный платеж] from [PAYMENTS].[refinans_credit] » & _
«where [Ежемесячный платеж]>0 and [Номер заявки] ='» & Cells(i, 1) & «‘ «

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

«where [Ежемесячный платеж]>0 and [Номер заявки] = ‘» & Cells(i, 1) & «‘ » & _
» and [Дата платежа]='» & Cells(i, 2) & «‘»

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

Cells(i, 3) = sql

в третьем столбце записываются запросы.

Выполняем SQL запрос:

Set rs = cn.Execute(sql)

А чтобы хоть как-то наблюдать за выполнением макроса выведем изменение i в статус-бар

Application.StatusBar = «Execute script …» & i
Application.ScreenUpdating = False

Теперь нам нужно записать полученные результаты. Для этого будем использовать оператор Do While:

j = 0
Do While Not rs.EOF
For ii = 0 To rs.Fields.Count — 1
Cells(i, 4 + j + ii) = rs.Fields(0 + ii) ‘& «;»

Указываем ячейки для вставки полученных данных (4 в примере это номер столбца с которого начинаем запись результатов)

Next ii
j = j + rs.Fields.Count
s.MoveNext
Loop
rs.Close
End If

— закрываем цикл If, если вводили дополнительные условия

Next i
cn.Close
Application.StatusBar = «Готово»
End Sub

— закрываем макрос.

В дополнение хочу отметить, что данный макрос позволяет обращаться как к БД на MS SQL так и к БД Oracle, разница будет только в параметрах подключения и собственно в синтаксисе SQL запроса.

В приведенном примере для авторизации при подключении к БД используется доменная аутентификация.

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

sql = «Provider= SQLOLEDB.1;Password=********;User ID=********;Data Source= Storoge.company.ru Storoge;APP=SFM»

Но в этом случае при использовании макроса возникает риск компрометации Ваших учетных данных. Поэтому лучше программно удалять учетные данные после выполнения макроса. Разместим поля для ввода пароля и логина на листе и изменим макрос следующим образом:

sql = «Provider= SQLOLEDB.1;Password=» & Sheets(«Лист аутентификации»).TextBox1.Value & «;User ID=» & Sheets(«Лист аутентификации «).TextBox2.Value & «;Data Source= Storoge.company.ru Storoge;APP=SFM»

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

Sheets(«Выгрузка»).TextBox1.Value = «« Sheets(»Выгрузка«).TextBox2.Value = »»

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

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

You can do a lot of powerful things with Excel, for example connecting to other data sources. In this article, we are going to look at how we can use SQL within Excel.

What is SQL?

SQL stands for “Structured Query Language.” Microsoft SQL Server is just one of the many databases that use it. In a database:

  • you store data in tables
  • you can run SQL queries to retrieve data.

The advantages of using a database such as Microsoft SQL Server to store your data include:

  • The data is strongly typed, meaning that you cannot store a number in a date field. This makes your data instantly validated.
  • It can be a central data repository for your data on multiple projects.
  • Multiple people can access the same data at the same time. This reduces duplication and inconsistencies.
  • It is also well-protected with built-in security within the Relational Database Management Systems. Microsoft SQL Server offers several layers of security.

For more information, please see my Udemy article “Excel vs SQL Server.”

How do you access an SQL Server? First, you need a data connection. If you are using a work SQL Server, then you will be given details of your server by your IT department. This will include:

  • The Server Name: It can also take this from the Connection String if you have it.
  • Authentication Method: You will use either:
    • Windows Authentication, using your Windows username and password
    • SQL Server Authentication, using a separate username and password

If you have Microsoft SQL Server on your own computer, then the server name could be “localhost” or “.”, and you will probably use Windows Authentication.

You can use this connection to retrieve the Microsoft SQL Server data.

There are three different places in Excel where you can load SQL data:

  • In the main Excel window
  • In the Get and Transform window (also known as the Power Query editor)
  • In the Power Pivot window (also known as the Data Model)

We will have a look at each of these places.

Connecting SQL to the main Excel window

The main Excel window is the one you use every time you open Excel. To load data from SQL Server, go to Data – Get Data – From Database – From SQL Server Database. This has superseded previously used methods such as Microsoft Query.

You will then have to provide the Server Name.

There are four SQL Server data sources that you could query to return the results.

  1. You may want the data from a table. This is the raw data.
  2. You may want the query results from a previously created view. This results from an SQL Server data analysis.
  3. You may want the results from a stored procedure. This could be a more complex analysis, or one that involves parameters. For example, you may just want all sales from the state of Florida. Here, ‘Florida’ would be a parameter.
  4. You may want to run an ad hoc SQL query using the SELECT statement.

If you want to run a Stored Procedure or an ad hoc query, then at this stage, you will need to click on “Advanced options” and write the query in the box provided. You will also need to enter the name of the database as well.

Next, you need to provide the Authentication mode and any credentials required:

If you want to retrieve the results of a table or query, you can select the table or query. If you then click “Load,” it will be loaded into your Excel Workbook. We will look at what happens if you click “Transform Data” in the next section of this article.

Once you have made the link, it will load the data into an Excel Table. You can then use it just like other data stored in a table.

You can refresh the data whenever you want by right-hand clicking inside the table and choosing Refresh, or by going to Table Design – Refresh.

Connecting SQL to Get and Transform

The second way to connect to SQL data is by using the Get and Transform window.

This follows the same process for connecting to SQL Server as mentioned above, except that you press “Transform Data” instead of Load.

Once you have done this, then the data is in the Get and Transform window, also known as the Power Query Editor. 

You can also load data directly from the Power Query Editor. To do this, go to Home – New Source.

You can then perform additional manipulations before the data transfer into Excel. For example, you might want to:

  • Hide some columns or rows (by going to Home – Choose/Remove Columns)
  • Add additional columns using formulas. (However, Power Query uses a language called M, which differs significantly from Excel.)
  • Summarise the data using the Group By function

If you do this in Power Query, it will reduce the amount of data that goes into Excel. Power Query reduces the amount of data that it receives from SQL Server through a process called Query Folding. For example, you could retrieve all the contents of a table into Power Query, limit the number of rows to just 50, and reduce the number of columns used to just two. 

This reduction will be incorporated into the SQL statement so that Excel only retrieves the needed rows and columns from SQL Server. This reduces network traffic and increases the speed of retrieving that data.

When you leave the Power Query window by going to Home – Close & Load, it would then load the data into an Excel Table as before. 

However, if you go to “Home – Close & Load To…” instead, you could then:

  • Use it in a Pivot Table or Chart without loading the data in Excel as a Table.
  • Save it as a Connection (without loading the data into an Excel Table).

If you save it as a connection, you can use it later as the data source in any new Pivot Tables.

In “Save & Load To…”, there is a checkbox for “Add this data to the Data Model.” If you click on this, Excel will then export the data into Power Pivot, also known as the Data Model. We’ll have a look at the Data Model in the next part of this Article.

Connecting SQL to Power Pivot

The third way of connecting SQL to Excel directly is by using the Data Model, also known as Power Pivot. To open the Data Model, you need to go to Data – Manage Data Model. 

Then you can import the data into Power Pivot by going to Home – Get External Data – From Database – From SQL Server. You then connect to SQL Server in a similar process as before.

Once you have imported the data, you can then create calculation columns or measures. Power Pivot uses a formula language called DAX to build formulas. DAX is an extended version of the Excel formulas.

Once you have finished, you can then create a Power Pivot Table by going to Home – PivotTable – PivotTable.

This allows you to create Pivot Tables or charts from this data.

Where to go for more information

I hope that you have enjoyed this article.

Are you interested in Power Query or Power Pivot? Then why not join me in my “Analyzing and Visualizing Data with Microsoft Excel” course, where we have a look at these topics, together with Pivot Tables.

Do you want to learn SQL statements quickly? Please have a look at my “SQL Server Essentials in an hour” course. We will look at the six principal clauses of the SQL SELECT Statement: SELECT, FROM, WHERE, GROUP BY, HAVING, and ORDER BY.


Загрузить PDF


Загрузить PDF

Эта статья поможет пользователям вставить SQL-запрос в Excel 2010 и создать в Excel динамическую связь.

Шаги

  1. Изображение с названием Embed a SQL Query in Microsoft Excel Step 1

    1

    Перейдите на вкладку «Данные» и выберите «Из других источников», как показано ниже.

  2. Изображение с названием Embed a SQL Query in Microsoft Excel Step 2

    2

    В выпадающем меню выберите “Из мастера подключения данных”.

  3. Изображение с названием Embed a SQL Query in Microsoft Excel Step 3

    3

    Откроется Мастер подключения данных. Из доступных вариантов выберите “ODBC DSN” и нажмите “Далее”.

  4. Изображение с названием Embed a SQL Query in Microsoft Excel Step 4

    4

    Появится окно «Подключение к источнику данных ODBC». Там будет показан список баз данных, доступных в вашей организации. Выберите соответствующую базу данных и нажмите “Далее”.

  5. Изображение с названием Embed a SQL Query in Microsoft Excel Step 5

    5

    Появится окно выбора базы данных и таблицы.

  6. Изображение с названием Embed a SQL Query in Microsoft Excel Step 6

    6

    Мы можем выбрать базу данных и таблицу, откуда хотим получать данные. Соответственно, выберите нужную базу данных и таблицу.

  7. Изображение с названием Embed a SQL Query in Microsoft Excel Step 7

    7

    В окне “Сохранить файл подключения к данным и завершить” выберите «Завершить». Это окно выберет имя файла на основе вашего выбора на предыдущих экранах.

  8. Изображение с названием Embed a SQL Query in Microsoft Excel Step 8

    8

    Появится окно импортирования данных, где мы можем выбрать нужные варианты и нажать OK.

  9. Изображение с названием Embed a SQL Query in Microsoft Excel Step 9

    9

    В выпадающем меню выберите “Из мастера подключения данных”.

  10. Изображение с названием Embed a SQL Query in Microsoft Excel Step 10

    10

    Перейдите на вкладку «Данные» и нажмите на «Соединения». В следующем окне нажмите на «Свойства».

  11. Изображение с названием Embed a SQL Query in Microsoft Excel Step 11

    11

    В следующем окне перейдите на вкладку «Определения».

  12. Изображение с названием Embed a SQL Query in Microsoft Excel Step 12

    12

    В поле “Текст команды” введите SQL-запрос и нажмите OK. Excel отобразит результат согласно запроса.

  13. Изображение с названием Embed a SQL Query in Microsoft Excel Step 13

    13

    Теперь перейдите в Microsoft Excel и проверьте, что результаты соответствуют указанному SQL-запросу.

    Реклама

Об этой статье

Эту страницу просматривали 29 249 раз.

Была ли эта статья полезной?

На чтение 21 мин. Просмотров 310 Опубликовано 21.02.2021

Я пытаюсь создать подтаблицу из другой таблицы со всеми полями фамилий, отсортированными от A до Z, в которых есть поле номера телефона, которое не равно нулю. Я мог бы сделать это довольно легко с SQL, но я понятия не имею, как выполнить SQL-запрос в Excel. У меня возникает соблазн импортировать данные в postgresql и просто запросить их там, но это кажется немного чрезмерным.

Для того, что я пытаюсь сделать, SQL-запрос SELECT lastname, firstname, phonenumber WHERE phonenumber IS NOT NULL ORDER BY lastname сделает свое дело. Это кажется слишком простым для того, чтобы быть чем-то, что Excel не может делать изначально. Как я могу выполнить такой SQL-запрос из Excel?


Есть много прекрасных способов сделать это, которые уже предлагали другие. Следуя пункту «получить данные Excel через дорожку SQL», вот несколько указателей.

  1. В Excel есть «Мастер подключения данных», который позволяет импортировать или ссылку из другого источника данных или даже в том же файле Excel.

  2. В составе Microsoft Office (и ОС) есть два интересных поставщика: старый ” Microsoft.Jet.OLEDB »и последний« Microsoft.ACE.OLEDB ». Ищите их при настройке соединения (например, с помощью мастера подключения к данным).

  3. После подключения к книге Excel рабочий лист или диапазон являются эквивалентом таблицы или представления. Имя таблицы рабочего листа – это имя рабочего листа со знаком доллара («$»), добавленным к нему и заключенным в квадратные скобки («[» и «]»); диапазона, это просто имя диапазона. Чтобы указать безымянный диапазон ячеек в качестве источника записей, добавьте стандартную нотацию строк/столбцов Excel в конец имени листа в квадратных скобках.

  4. Собственный SQL будет (более или менее) SQL Microsoft Access. (В прошлом он назывался JET SQL; однако Access SQL эволюционировал, и я считаю, что JET устарел, старая технология.)

  5. Пример, чтение рабочего листа : SELECT * FROM [Sheet1 $]

  6. Пример чтения диапазона: SELECT * FROM MyRange

  7. Пример, чтение безымянного диапазона ячеек: SELECT * FROM [Sheet1 $ A1: B10]

  8. Существует много-много книг и веб-сайтов, которые помогут вам разобраться в деталях.

=== Дополнительные примечания ===

По умолчанию предполагается, что первая строка вашего источника данных Excel содержит заголовки столбцов, которые можно использовать в качестве имен полей. Если это не так, необходимо отключить этот параметр, иначе первая строка данных «исчезнет» и будет использоваться в качестве имен полей. Это делается путем добавления необязательного параметра HDR = в Расширенные свойства строки подключения. По умолчанию, указывать его необязательно: HDR = Yes .. Если у вас нет заголовков столбцов, вам необходимо указать HDR = No ; поставщик называет ваши поля F1, F2 и т. д.

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

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

Типы данных (стоит попробовать) для C REATE TABLE: Short , Long, Single, Double, Currency, DateTime, Bit, Byte, GUID, BigBinary, LongBinary, VarBinary, LongText, VarChar, Decimal .

Подключение к “старой технологии” Excel ( файлы с расширением xls): Provider = Microsoft.Jet.OLEDB.4.0; Data Source = C: MyFolder MyWorkbook.xls; Extended Properties = Excel 8.0; . Используйте исходную базу данных Excel 5.0 для книг Microsoft Excel 5.0 и 7.0 (95) и используйте исходную базу данных Excel 8.0 для книг Microsoft Excel 8.0 (97), 9.0 (2000) и 10.0 (2002).

Подключение к “последней” версии Excel (файлы с расширением xlsx): Provider = Microsoft.ACE.OLEDB.12.0; Data Source = Excel2007file.xlsx; Extended Properties = "Excel 12.0 Xml; HDR = ДА; "

Обработка данных как текста: настройка IMEX обрабатывает все данные как текст. Provider = Microsoft.ACE.OLEDB.12.0; Data Source = Excel2007file.xlsx; Extended Properties = "Excel 12.0 Xml; HDR = YES; IMEX = 1";

(Подробнее на http://www.connectionstrings.com/excel)

Дополнительная информация на http://msdn.microsoft.com/en-US/library/ms141683(v= sql.90) .aspx и по адресу http://support.microsoft.com/kb/316934

Подключение к Excel через ADODB через VBA, подробное описание см. на http://support.microsoft.com/ kb/257819

Microsoft JET 4 подробности на http://support.microsoft.com/kb/275561


tl; dr; Все это делает Excel изначально – используйте фильтры и/или таблицы

(http://office.microsoft.com/en-gb/excel-help/filter-data-in- an-excel-table-HA102840028.aspx)

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

Но вы можете делайте все, что вы просите, без формул, только фильтры.

  1. щелкните в любом месте данных , на которые вы смотрите
  2. , перейдите к данным на полоса ленты
  3. выберите «Фильтр» , она примерно посередине и выглядит как воронка
    • теперь есть стрелки на стороне каждой ячейки в первой строке таблицы.
  4. щелкните стрелку на номере телефона и де- выберите пробелы (последний вариант)
  5. щелкните стрелку на фамилии и выберите порядок z (верхний вариант)

поиграйте … кое-что на заметку:

  1. вы можете выбрать отфильтрованные строки и вставить их в другое место
  2. в строке состояния слева вы увидите, сколько строк соответствует критериям фильтрации из общего количества строк. (например, 308 из 313 найденных записей)
  3. вы можете фильтровать по цвету в excel 2010 на палатах
  4. Иногда я создаю вычисляемые столбцы, которые показывают статусы или очищенные версии данных, которые вы затем можно фильтровать или сортировать по тезисам. (например, как формулы в других ответах)

ДЕЛАЙТЕ это с фильтрами, если вы не собираетесь делать это много или вы хотите автоматизировать импорт данных где-то или что-то в этом роде .. но для полнота:

Вариант c #:

  OleDbConnection ExcelFile = new OleDbConnection (String.Format ("Provider  = Microsoft.ACE.OLEDB.12.0; Источник данных = {0}; Расширенные свойства =  "Excel 12.0; HDR = ДА " ", имя файла));  ExcelFile.Open ();  

удобное место для начала – взглянуть на схему, поскольку там может быть больше, чем вы думаете:

  List  excelSheets = new List  ();//Добавляем имя листа в строковый array.foreach (строка DataRow в dt.Rows) {string temp = row ["TABLE_NAME"]  .Нанизывать();  если (temp [temp.Length - 1] == '$') {excelSheets.Add (row ["TABLE_NAME"]. ToString ());  }}  

затем, когда вы хотите запросить лист:

  OleDbDataAdapter da = new OleDbDataAdapter ("выберите * из ["  + лист + "]", ExcelFile);  dt = новый DataTable ();  da.Fill (dt);  

ПРИМЕЧАНИЕ. Используйте таблицы в excel !:

Excel имеет “таблицы “функциональность, которая заставляет данные вести себя больше как таблица … это дает вам большие преимущества, но не позволит вам выполнять все типы запросов.

http://office.microsoft.com/en-gb/excel-help/overview-of-excel-tables-HA010048546.aspx

Для табличных данных в Excel это мой вариант по умолчанию. Первое, что я делаю, это нажимаю на данные, затем выбираю «форматировать как таблицу» в домашнем разделе на ленте. это дает вам фильтрацию и сортировку по умолчанию и позволяет вам получать доступ к таблице и полям по имени (например, table [fieldname]), это также позволяет агрегировать функции для столбцов, например. макс. и среднее

отредактировал 24 сен ’13 в 9:38

ответил 24 сен ’13 в 9:20

  • , если вы хотите уменьшить количество столбцов, я лично копирую отфильтрованные строки на новый лист и удаляю столбцы, которые мне не нужны. их можно было спрятать, но это того не стоит. – user359135, 24 сен. ’13 в 9:22

  • using System.Data.OleDb; using System.Data; – user359135, 24 сен., 24 сен., 13:25

  • Я фильтрую каждый день и C # для доступа электронные таблицы несколько раз в неделю. при использовании С # он, как правило, заключается в импорте данных в базу данных, чтобы действительно поиграть с ней .. для фактического запроса его фильтров или sql, когда данные находятся на сервере sql, на самом деле не стоит делать на промежуточном уровне sql to excel. – user359135, 24 сен. ’13 в 9:33

добавить комментарий |


tl; dr; Все это делает Excel изначально – используйте фильтры и/или таблицы

(http://office.microsoft.com/en-gb/excel-help/filter-data-in- an-excel-table-HA102840028.aspx)

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

Но вы можете делайте все, что вы просите, без формул, просто фильтров.

  1. щелкните в любом месте данных , на которые вы смотрите
  2. перейти к данным на панели ленты
  3. выбрать «Фильтр» примерно посередине и выглядит как воронка
    • теперь у вас будут стрелки на узкой стороне каждой ячейки в первой строке таблицы.
  4. щелкните стрелку на номере телефона и отмените выбор пробелов (последний вариант)
  5. щелкните стрелку на фамилии и выберите аз-порядок (верхний вариант)

поиграйте … кое-что на заметку:

  1. вы можете выберите отфильтрованные строки и вставьте их в другое место.
  2. в строке состояния слева вы увидите, сколько строк соответствует критериям фильтрации из общего числа строк. (например, 308 из 313 найденных записей)
  3. вы можете фильтровать по цвету в excel 2010 на палатах
  4. Иногда я создаю вычисляемые столбцы, которые показывают статусы или очищенные версии данных, которые вы затем можно фильтровать или сортировать по тезисам. (например, как формулы в других ответах)

СДЕЛАЙТЕ это с фильтрами, если вы не собираетесь делать это много или вы хотите автоматизировать импорт данных где-то или что-то в этом роде.. но для полноты:

Вариант c #:

  OleDbConnection ExcelFile = new OleDbConnection (String.Format (  "Provider = Microsoft.ACE.OLEDB.12.0; Data Source = {0}; Extended Properties = " Excel 12.0; HDR = YES  "", имя файла));  ExcelFile.Open ();  

удобное место для начала – взглянуть на схему, поскольку там может быть больше, чем вы думаете:

  List  excelSheets = new List  ();//Добавляем имя листа в строковый array.foreach (строка DataRow в dt.Rows) {string temp = row ["TABLE_NAME"]  .Нанизывать();  если (temp [temp.Length - 1] == '$') {excelSheets.Add (row ["TABLE_NAME"]. ToString ());  }}  

затем, когда вы хотите запросить лист:

  OleDbDataAdapter da = new OleDbDataAdapter ("выберите * из ["  + лист + "]", ExcelFile);  dt = новый DataTable ();  da.Fill (dt);  

ПРИМЕЧАНИЕ. Используйте таблицы в excel !:

Excel имеет “таблицы “функциональность, которая заставляет данные вести себя больше как таблица … это дает вам большие преимущества, но не позволит вам выполнять все типы запросов.

http://office.microsoft.com/en-gb/excel-help/overview-of-excel-tables-HA010048546.aspx

Для табличных данных в Excel это мой вариант по умолчанию. Первое, что я делаю, это нажимаю на данные, затем выбираю «форматировать как таблицу» в домашнем разделе на ленте. это дает вам фильтрацию и сортировку по умолчанию и позволяет вам получать доступ к таблице и полям по имени (например, table [fieldname]), это также позволяет агрегировать функции для столбцов, например. макс. и среднее


Вы можете сделать это изначально следующим образом:

  1. Выберите таблицу и используйте Excel, чтобы отсортировать ее по фамилии.
  2. Создайте критерии расширенного фильтра из 2 строк и 1 столбца, скажем, inE1 и E2, где E1 пусто, а E2 содержит формулу = C6 = "" , где C6 – первая ячейка данных столбца с телефонным номером.
  3. Выберите таблицу и используйте расширенный фильтр, скопируйте в диапазон, используя диапазон критериев в E1: E2 и укажите, куда вы хотите скопировать вывод в

Если вы хотите сделать это программно, я предлагаю вам использовать Macro Recorder для записи вышеуказанных шагов и посмотреть на код.

отредактировано 02 апр. ’14 в 17:52

wkschwartz

3,20611 золотых знаков2222 серебряных знака3333 бронзовых знака

ответил 17 сен ’13 в 18:47

  • Вопрос определяет SQL. – S Meaden 08 окт. ’18 в 8:27

добавить комментарий |


Вы можете сделать это изначально следующим образом:

  1. Выбрать таблицу и используйте Excel для сортировки ее по фамилии.
  2. Создайте критерии расширенного фильтра из 2 строк и 1 столбца, скажем, inE1 и E2, где E1 пусто, а E2 содержит формулу = C6 = "" , где C6 – первая ячейка данных столбца с телефонным номером.
  3. Выберите таблицу и используйте расширенный фильтр, скопируйте в диапазон, используя диапазон критериев в E1: E2 и укажите, куда вы хотите скопировать вывод

. Если вы хотите сделать это программно, я предлагаю вам использовать Macro Recorder для записи вышеуказанных шагов и просмотра кода.


Вы можете используйте SQL в Excel. Он только хорошо скрыт. См. Это руководство:

http://smallbusiness.chron.com/use-sql-statements-ms-excel-41193.html

ответ дан 24 сен ’13 в 12:50

  • Похоже, он использует SQL для выбора данных для импорта в Excel, но не запускать запросы к текущей таблице? – Рап, 14 сен 2016, 09:47

  • Вам просто нужно создать имена для каждой таблицы в Excel (в диспетчере имен) или просто выбрать таблицу и ввести имя в поле, где отображается адрес ячейки. Затем вы можете использовать его для запроса к рабочему листу. В запросе у вас есть полный адрес листа, поэтому, если вы переместите электронную таблицу в другое место на диске, запрос не будет работать – Петрик 5 октября 2017 г., 13:01

добавить комментарий |


Вы можете использовать SQL в Excel. Он только хорошо скрыт. См. Это руководство:

http://smallbusiness.chron.com/use-sql-statements-ms-excel-41193. html


Могу я предложить дать QueryStorm попробуйте – это плагин для Excel, который позволяет очень удобно использовать SQL в Excel.

Кроме того, это freemium. Если вас не интересует автозаполнение, волнистые линии ошибок и т. Д., Вы можете использовать его бесплатно. Просто скачайте и установите, и у вас будет поддержка SQL в Excel.

Отказ от ответственности: я автор.

отредактировано 12 декабря ’17 в 14:19

ответил 13 июня ’17 в 14: 05

  • К сожалению, хотя это отличный инструмент, теперь он, похоже, только платный, за исключением 30-дневной пробной версии. – Marc 14 марта ’19 в 15:31

добавить комментарий |


Могу я предложить попробовать QueryStorm – это плагин для Excel, который делает использование SQL в Excel весьма удобным.

Кроме того, это бесплатная версия. Если вас не интересует автозаполнение, волнистые линии ошибок и т. Д., Вы можете использовать его бесплатно. Просто скачайте и установите, и у вас будет поддержка SQL в Excel.

Отказ от ответственности: я автор.


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

Предположим, ваши данные находятся в таблице DataSheet и начинаются в строке 2 следующих столбцов:

  • A: фамилия
  • B: имя
  • C: номер телефона

Вам нужны два вспомогательных столбца на этом листе .

  • D2: = if (A2 = "", 1, 0) , это столбец фильтра, соответствующий вашему условию where
  • E2: = if (D2 1, "", sumifs (D $ 2: D $ 1048576, A $ 2: A $ 1048576, ", это соответствует порядку

Скопируйте эти формулы по мере поступления ваших данных.

На листе, который должен отображать ваш результат, создайте следующие столбцы.

  • A: последовательность чисел, начинающаяся с 1 в строке 2, это ограничивает общее количество строк, которое вы можете получить (вроде как ограничение в дальнейшем)
  • B2: = match (A2, DataSheet! $ E $ 2: $ E $ 1048576, 0) , это строка соответствующих данных
  • C2: = iferror (index (DataSheet! A $ 2: A $ 1048576, $ B2), "") , это фактические данные или пусто, если данных не существует

Скопируйте формулы в B2 и C2 и скопируйте столбец C в D и E.

ответил 21 сен ’13 в 18:38


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

Предположим, ваши данные находятся в таблице данных и начинаются со строки 2 следующих столбцов:

  • A: фамилия
  • B: имя
  • C: номер телефона

Вам нужны два вспомогательных столбца на этом листе.

  • D2: = if (A2 = "", 1, 0) , это столбец фильтра, соответствующий вашему условию where
  • E2: = if (D2 1, "", sumifs (D $ 2: D $ 1048576, A $ 2: A $ 1048576, ", это соответствует порядку, в котором

Скопируйте эти формулы по мере ваших данных.

На листе, который должен отображать ваш результат, создайте следующие столбцы.

  • A: последовательность чисел, начинающаяся с 1 в строке 2, это ограничивает общее количество строк, которые вы можете получить (вроде лим это в дальнейшем)
  • B2: = match (A2, DataSheet! $ E $ 2: $ E $ 1048576, 0) , это строка соответствующих данных
  • C2: = iferror (index (DataSheet! A $ 2: A $ 1048576, $ B2), "") , это фактические данные или пусто, если нет данные существуют

Скопируйте формулы в B2 и C2 и скопируйте столбец C в D и E.


Вы можете поэкспериментировать с собственным драйвером БД для Excel на языке/платформе по вашему выбору. В мире Java вы можете попробовать http://code.google.com/p/sqlsheet/, который предоставляет драйвер JDBC для непосредственной работы с листами Excel. Аналогичным образом можно получить драйверы для технологии БД для других платформ.

Однако я могу гарантировать, что вы скоро столкнетесь с проблемой количества функций, которые предоставляют эти библиотеки-оболочки. Лучше будет использовать Apache HSSF/POI или аналогичный уровень библиотеки, но для этого потребуется больше усилий по кодированию..

ответил 14 сен ’13 в 17:16


Вы можете поэкспериментировать с собственным драйвером БД для Excel на языке/платформе по вашему выбору. В мире Java вы можете попробовать http://code.google.com/p/sqlsheet/, который предоставляет драйвер JDBC для непосредственной работы с листами Excel. Аналогичным образом можно получить драйверы для технологии БД для других платформ.

Однако я могу гарантировать, что вы скоро столкнетесь с проблемой количества функций, которые предоставляют эти библиотеки-оболочки. Лучшим способом будет использовать Apache HSSF/POI или аналогичный уровень библиотеки, но для этого потребуется больше усилий по кодированию.


Возможно, я неправильно понял меня, но разве это не то, что делает сводная таблица? У вас есть данные в таблице или только в отфильтрованном списке? Если это не таблица, сделайте ее одной (ctrl + l), если это так, просто активируйте любую ячейку в таблице и вставьте сводную таблицу на другой лист. Затем добавьте столбцы фамилия, имя, номер телефона в раздел строк. Затем добавьте номер телефона в раздел фильтра и отфильтруйте нулевые значения. Теперь выполните сортировку как обычно.

ответил 20 сен. ’13 в 23:47


Возможно, я неправильно понял меня, но разве это не то, что делает сводная таблица? У вас есть данные в таблице или только в отфильтрованном списке? Если это не таблица, сделайте ее одной (ctrl + l), если это так, просто активируйте любую ячейку в таблице и вставьте сводную таблицу на другой лист. Затем добавьте столбцы фамилия, имя, номер телефона в раздел строк. Затем добавьте номер телефона в раздел фильтра и отфильтруйте нулевые значения. Теперь выполните сортировку как обычно.


I Предлагаем вам взглянуть на механизм хранения CSV MySQL, который, по сути, позволяет вам загружать любой файл CSV (легко созданный из Excel) в базу данных, как только вы его получите, вы можете использовать любую команду SQL, которую хотите.

Стоит взглянуть на это.

ответил 24 сен ’13 в 1:44


Я предлагаю вам взглянуть на механизм хранения CSV MySQL, который, по сути, позволяет загружать любой файл CSV (легко создается из Excel) в базу данных, когда она у вас есть, вы можете использовать любую команду SQL, какую захотите.

Стоит взглянуть на нее.


Если у вас есть GDAL/OGR , скомпилированный с Библиотека Expat, вы можете использовать драйвер XLSX для чтения файлов .xlsx и запускать выражения SQL из командной строки. Например, из оболочки osgeo4w в том же каталоге, что и электронная таблица, используйте утилиту ogrinfo :

  ogrinfo -dialect sqlite -sql "  SELECT name, count (*) FROM sheet1 GROUP BY name "Book1.xlsx  

запустит запрос SQLite на sheet1 и выведет запрос результат в необычной форме:

  ИНФОРМАЦИЯ: Открытие `Book1.xlsx 'с использованием драйвера` XLSX' выполнено успешно. Имя слоя: SELECTGeometry: NoneFeature Count: 36Layer SRS WKT: (unknown  ) name: String (0.0) count (*): Integer (0.0) OGRFeature (SELECT): 0 name (String) = Red count (*) (Integer) = 849OGRFeature (SELECT): 1 name (String) = Green count (  *) (Целое число) = 265 ...  

Или выполните тот же запрос с помощью ogr2ogr , чтобы создать простой файл CSV:

  $ ogr2ogr -f CSV out.csv -dialect sqlite  -sql "ВЫБРАТЬ имя, количество (*) FROM sheet1 GROUP BY name" Book1.xlsx $ cat out.csvname, count (*  ) Красный, 849Зеленый, 265 ...  

Чтобы сделать то же самое со старыми файлами .xls, вы должны Мне нужен драйвер XLS, созданный на основе библиотеки FreeXL, что не очень распространено (например, не из OSGeo4w).


Если у вас есть GDAL/OGR , скомпилированный с библиотекой Expat, вы можете использовать XLSX драйвер для чтения файлов .xlsx и запуска выражений SQL из командной строки. Например, из оболочки osgeo4w в том же каталоге, что и электронная таблица, используйте утилиту ogrinfo :

  ogrinfo -dialect sqlite -sql "  ВЫБРАТЬ имя, количество (*) ИЗ листа1 ГРУППА ПО имени "Книга1. xlsx  

выполнит запрос SQLite на sheet1 и выдаст результат запроса в необычной форме:

   ИНФОРМАЦИЯ: Открытие `Book1.xlsx 'с использованием драйвера` XLSX' успешно. Имя слоя: SELECTGeometry: NoneFeature Count: 36Layer SRS WKT: (unknown) name: String (0.0) count (*): Integer (0.0  ) OGRFeature (SELECT): 0 name (String) = Red count (*) (Integer) = 849OGRFeature (SELECT): 1 name (String) = Green count (*) (Integer) = 265 ...  

Или выполните тот же запрос с помощью ogr2ogr , чтобы создать простой файл CSV:

  $ ogr2ogr -f CSV  out.csv -dialect sqlite  -sql "ВЫБРАТЬ имя, количество (*) ИЗ листа1 ГРУППА ПО имени" Book1.xlsx $ cat out.csvname, count (*) Красный, 849Зеленый, 265 ...  

Чтобы сделать то же самое со старыми файлами .xls, вам понадобится драйвер XLS, созданный на основе библиотеки FreeXL, которая не очень распространена (например, не из OSGeo4w).


Microsoft Access и LibreOffice Base могут открывать электронную таблицу в качестве источника и запускать по ней sql-запросы. Это был бы самый простой способ выполнять все виды запросов и избегать беспорядка, связанного с запуском макросов или написанием кода.

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

ответил 20 сентября ’13 в 0:52


Microsoft Access и LibreOffice Base могут открывать электронную таблицу в качестве источника и запускать по ней sql-запросы. Это был бы самый простой способ выполнять все виды запросов и избегать беспорядка, связанного с запуском макросов или написанием кода.

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



Выполнение SQL-запросов в Excel

Раньше я использовал запросы ODBC в Excel, но всегда с хранимыми процедурами на сервере. Теперь я хотел бы иметь возможность определять в Excel запросы SQL произвольной формы, которые извлекают данные из MS SQL Server. Я играл около 30 минут и искал в Google, как это сделать, но, похоже, ничего не нашел. Как мне создавать и отлаживать SQL-запросы в Excel?

Спасибо!


Привет, @ Dave7

Лучший способ получить данные с SQL Server – использовать Power Query в Excel, вы уже сталкивались с этим?


Спасибо, @Wyn Hopkins. Я должен был сказать, что да, я попал в Power Query, но не мог понять, как использовать его для написания простого SQL. Расширенный редактор, похоже, использует другой язык (очевидно, PowerQuery). Неужели просто невозможно написать простой SQL? Если это так, я уверен, что смогу разобраться в PowerQuery, хотя, если у вас есть хороший учебник, я все слышу.


@ Dave7

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

В Power Query большая часть задач может быть выполнена с помощью пользовательского интерфейса без написания кода на M-скрипте (внутренний язык Power Query). Запрос к базе данных SQL также может быть сгенерирован из пользовательского интерфейса.


Hi @ Dave7

При подключении к базе данных SQL у вас есть возможность написать здесь простой SQL …

Если вы используете интерфейс Power Query для выполнения преобразований, тогда, если это преобразование можно преобразовать в SQL, оно будет выполнено автоматически в фоновом режиме … Часто (но не всегда) вы можете увидеть, как это происходит, щелкнув правой кнопкой мыши по шагу и просмотр собственного запроса:

Примечание:

Вы можете повысить производительность, используя шаги Power Query и позволяя ему преобразовывать и «складывать» большую часть запроса обратно в SQL Server.

Написание собственного SQL-запроса с нуля прерывает «сворачивание запроса», и обработка данных будет выполняться на вашем компьютере.

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

Этой статьей я открываю цикл про выполнение запросов в Excel и оптимизацию работы с крупными таблицами Excel.

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

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

Пускай наша таблица содержит такие поля:

  • Таб_N
  • Фамилия
  • Имя
  • Отчество
  • Пол
  • Дата рождения
  • ИНН
  • Должность
  • Отдел
  • Последний отпуск (дата)
  • Прием на работу (дата)
  • Уволен (дата)

Думаю, для иллюстрации работы этого будет достаточно.

Теперь немного напомню, какие требования к таблице стоит соблюдать:

  1. Она не упорядочена сверху вниз — поэтому я не вводил нумерацию, а оставил табельный номер. Новых сотрудников можно просто добавлять снизу или даже куда-нибудь в середину.
  2. Нет одинаковых строк — у нас в любом случае за это отвечает табельный номер.
  3. Данные в столбцах должны представлять собой логически неделимую информацию. Хорошо видно на Ф.И.О. Если мы укажем всё в одном столбце, то найти человека или отсортировать данные по имени-отчеству будет проблематично.

Ещё один момент! Этой таблице нужно присвоить ИМЯ. Допустим, банально, но привычно — Кадры. 🙂 Я имею в виду не имя файла, а задать имя для таблицы средствами редактора. Это делается командой Имя таблицы, расположенной на закладке Конструктор таблицы в области Свойства. Благодаря имени мы сможет обращаться к таблице из других файлов (книг) Excel и видеть её поля и данные.

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

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

Вот такую таблицу мы получим:

запросы в Excel

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

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

Понравилась статья? Поделить с друзьями:
  • Можно ли печатать excel файл
  • Можно ли переформатировать pdf в word
  • Можно ли с помощью служб microsoft word восстановить забытый пароль для открытия документа
  • Можно ли редактировать в astra linux документы созданные в microsoft word
  • Можно ли распечатать файл excel