Как сделать запрос в Excel: 5 способов для разных задач

Запрос в Microsoft Excel не выполняется, если вы пытаетесь извлечь данные из внешнего источника (базы данных, веб-страницы или другого файла) без предварительной настройки подключения. Чаще всего проблема возникает при использовании инструмента Power Query (вкладка Данные → Получить данные), когда пользователь пропускает шаг аутентификации или неправильно указывает параметры соединения. Например, при попытке импортировать таблицу с сайта Excel может выдавать ошибку #NAME? или 403 Forbidden, если сервер блокирует автоматические запросы.

В 80% случаев решение лежит на поверхности: достаточно обновить драйверы для подключения к SQL Server, проверить права доступа к файлу или исправить синтаксис в ручном запросе SQL. Но если вы впервые работаете с запросами, даже простая фильтрация данных через Фильтр → Текстовые фильтры может вызвать вопросы. Ниже разберём все варианты — от базовых до профессиональных, с примерами кода и скриншотами процессов.

1. Базовые запросы: фильтрация и сортировка данных

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

  1. Выделите заголовки столбцов (например, A1:D1).
  2. Нажмите Данные → Фильтр (или сочетание клавиш Ctrl+Shift+L).
  3. Щёлкните по стрелке в столбце с датами и выберите Фильтр по дате → Январь.

Для более сложных условий (например, "показать товары с ценой > 1000 руб. И остатком < 50 шт.") используйте расширенный фильтр:

  • 📌 Создайте отдельную область с критериями фильтрации (например, в ячейках F1:G2 укажите заголовки "Цена" и "Остаток", а в F2:G2 — значения ">1000" и "<50").
  • 🔍 Перейдите в Данные → Сортировка и фильтр → Расширенный фильтр.
  • 📋 Укажите диапазон исходных данных и диапазон критериев.
⚠️ Внимание: Если после применения фильтра данные не отображаются, проверьте формат ячеек с критериями. Например, число "1000" в текстовом формате не будет распознано как числовое значение для сравнения.

2. Запросы к внешним данным: Power Query

Power Query (или Get & Transform Data в новых версиях Excel) — это инструмент для импорта, преобразования и объединения данных из разных источников: SQL-баз, JSON-файлов, веб-страниц и даже SharePoint. Чтобы создать запрос:

  1. Перейдите на вкладку Данные → Получить данные.
  2. Выберите источник (например, Из базы данных → Из SQL Server).
  3. Введите параметры подключения (имя сервера, базы данных) и нажмите ОК.
  4. В окне Power Query Editor выберите нужные таблицы и примените преобразования (удалите столбцы, измените типы данных и т.д.).
  5. Нажмите Закрыть и загрузить, чтобы вернуть данные в Excel.

Пример кода для ручного SQL-запроса в Power Query:

SELECT [Наименование], [Цена], [Дата продажи]

FROM [Продажи]

WHERE [Дата продажи] > '2026-01-01'

ORDER BY [Цена] DESC

Источник данных Тип подключения Требуемая аутентификация
SQL Server ODBC или OLE DB Да (логин/пароль или Windows-аутентификация)
Excel-файл Файловый импорт Нет (если файл в открытом доступе)
Веб-страница HTTP-запрос Иногда (зависит от сайта)
SharePoint Microsoft 365 Да (корпоративная учётная запись)
⚠️ Внимание: При импорте данных из веб-страниц Excel может блокировать запросы к сайтам с защитой от ботов (например, Cloudflare). В этом случае используйте альтернативные методы, такие как парсинг через Python или ручной экспорт данных в CSV.
📊 Какой источник данных вы чаще всего импортируете в Excel?
Базы данных (SQL, MySQL)
Файлы (CSV, TXT)
Веб-страницы
Другие источники

3. Запросы с помощью функций Excel

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

  • 🔍 =ВПР(искомое_значение; диапазон; номер_столбца; [интервальный_просмотр]) — ищет значение в первом столбце диапазона и возвращает данные из указанного столбца.
  • 📊 =ИНДЕКС(диапазон; номер_строки; [номер_столбца]) — возвращает значение из пересечения строки и столбца.
  • 🔗 =ПОИСКПОЗ(искомое_значение; диапазон; [тип_сопоставления]) — находит позицию значения в диапазоне.

Пример использования ВПР для поиска цены товара по артикулу:

=ВПР(A2; Таблица1!A:B; 2; ЛОЖЬ)

Где: A2 — ячейка с артикулом, Таблица1!A:B — диапазон с данными (столбец A — артикулы, столбец B — цены), 2 — номер столбца с ценой, ЛОЖЬ — точное сопоставление.

Что делать, если ВПР возвращает #Н/Д?

Ошибка #Н/Д в функции ВПР означает, что искомое значение не найдено. Проверьте:

  • 🔹 Правильность написания данных (регистр, пробелы).
  • 🔹 Формат ячеек (текст vs число).
  • 🔹 Диапазон поиска (возможно, значение находится за его пределами).

Если проблема остаётся, используйте комбинацию ИНДЕКС+ПОИСКПОЗ как более гибкую альтернативу.

4. Динамические запросы с Power Pivot

Power Pivot — это надстройка Excel для работы с большими объёмами данных и созданием связей между таблицами (аналог SQL JOIN). Чтобы активировать её:

  1. Перейдите в Файл → Параметры → Надстройки.
  2. Внизу окна выберите Управление: Надстройки COM и нажмите Перейти.
  3. Отметьте Microsoft Power Pivot for Excel и нажмите ОК.

После активации на вкладке Power Pivot вы сможете:

  • 🔗 Создавать связи между таблицами по ключевым полям (например, ID_товара).
  • 📈 Строить вычисляемые столбцы с формулами на языке DAX (например, =SUM([Продажи]) * 1.2 для расчёта с наценкой).
  • 🔄 Обновлять данные из источников одним кликом.

Пример DAX-формулы для расчёта доли продаж по регионам:


Доля продаж =

DIVIDE(

SUM([Продажи]),

CALCULATE(SUM([Продажи]), ALL(Таблица1[Регион]))

)

📋 Убедитесь, что все таблицы имеют уникальные ключевые столбцы (например, ID).

🔍 Проверьте типы данных (даты должны быть в формате Дата, а не Текст).

🔗 Создайте связи между таблицами через Управление отношениями.

📊 Используйте Сводные таблицы для визуализации связанных данных.-->

5. Автоматизация запросов с помощью VBA

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


Sub ImportCSV()

Dim ws As Worksheet

Set ws = ThisWorkbook.Sheets("Лист1")

' Импорт данных

With ws.QueryTables.Add(Connection:="TEXT;C:\Data\sales.csv", _

Destination:=ws.Range("A1"))

.TextFileParseType = xlDelimited

.TextFileCommaDelimiter = True

.Refresh

End With

' Применение фильтра

ws.Range("A1").AutoFilter Field:=3, Criteria1:=">1000"

End Sub

Чтобы запустить макрос:

  1. Нажмите Alt + F11, чтобы открыть редактор VBA.
  2. Вставьте код в новый модуль (Insert → Module).
  3. Вернитесь в Excel и нажмите Alt + F8, выберите ImportCSV и нажмите Выполнить.

⚠️ Внимание: Макросы могут содержать вредоносный код. Никогда не запускайте VBA-скрипты из ненадёжных источников. Перед выполнением проверьте код на наличие подозрительных функций, таких как Shell или SendKeys.

6. Оптимизация и устранение ошибок в запросах

Даже правильно составленный запрос может работать медленно или выдавать ошибки. Вот типичные проблемы и их решения:

Ошибка Возможная причина Решение
#NAME? Опечатка в имени функции или диапазона Проверьте синтаксис и регистр символов
403 Forbidden (при импорте с сайта) Сервер блокирует автоматические запросы Используйте прокси или ручной экспорт данных
Медленная загрузка Power Query Слишком много преобразований или большие объёмы данных Разбейте запрос на этапы или оптимизируйте источник
Ошибка подключения к SQL Неверные учётные данные или драйвер Обновите драйвер ODBC и проверьте права доступа

Для ускорения работы с большими таблицами:

  • 📉 Преобразуйте диапазоны в умные таблицы (Ctrl + T).
  • 🔄 Отключите автоматический пересчёт формул (Формулы → Параметры вычислений → Вручную).
  • 🗃️ Используйте Power Pivot вместо обычных формул для сводных отчётов.

FAQ: Ответы на частые вопросы

Можно ли сделать запрос к Google Таблицам из Excel?

Да, но только через Power Query. Для этого:

  1. В Google Таблице опубликуйте лист (Файл → Опубликовать в интернете) в формате CSV.
  2. В Excel выберите Данные → Получить данные → Из файла → Из CSV.
  3. Вставьте ссылку на опубликованный CSV-файл.

Обратите внимание: данные будут статичными. Для автоматического обновления потребуется VBA-скрипт.

Как обновить данные в запросе Power Query?

Щёлкните правой кнопкой по любой ячейке в импортированной таблице и выберите Обновить. Либо нажмите Данные → Обновить все.

Если запрос подключён к внешней базе, Excel запросит повторную аутентификацию.

Почему Power Query не видит мою базу данных?

Возможные причины:

  • 🔌 Не установлен драйвер ODBC для вашей СУБД (скачайте его с сайта производителя, например, драйвер для SQL Server).
  • 🔒 Брандмауэр блокирует подключение (добавьте исключение для Excel).
  • 📡 Сервер базы данных недоступен (проверьте сетевое подключение).
Можно ли в Excel сделать запрос к API?

Да, но для этого потребуется:

  1. Использовать Power Query с веб-запросом (формат JSON или XML).
  2. Или написать VBA-скрипт с объектом MSXML2.XMLHTTP.

Пример VBA-кода для запроса к публичному API:


Sub GetAPIData()

Dim http As Object, url As String, response As String

Set http = CreateObject("MSXML2.XMLHTTP")

url = "https://api.example.com/data"

http.Open "GET", url, False

http.Send

response = http.responseText

' Обработка JSON-ответа (требуется парсер, например, VBA-JSON)

End Sub

Как сохранить запрос Power Query для повторного использования?

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

  1. Откройте Power Query Editor (Данные → Получить данные → Запросы).
  2. Щёлкните правой кнопкой по запросу и выберите Копировать.
  3. Вставьте запрос в новую книгу через Данные → Получить данные → Из других источников → Пустой запрос.