Запрос в Microsoft Excel не выполняется, если вы пытаетесь извлечь данные из внешнего источника (базы данных, веб-страницы или другого файла) без предварительной настройки подключения. Чаще всего проблема возникает при использовании инструмента Power Query (вкладка Данные → Получить данные), когда пользователь пропускает шаг аутентификации или неправильно указывает параметры соединения. Например, при попытке импортировать таблицу с сайта Excel может выдавать ошибку #NAME? или 403 Forbidden, если сервер блокирует автоматические запросы.
В 80% случаев решение лежит на поверхности: достаточно обновить драйверы для подключения к SQL Server, проверить права доступа к файлу или исправить синтаксис в ручном запросе SQL. Но если вы впервые работаете с запросами, даже простая фильтрация данных через Фильтр → Текстовые фильтры может вызвать вопросы. Ниже разберём все варианты — от базовых до профессиональных, с примерами кода и скриншотами процессов.
1. Базовые запросы: фильтрация и сортировка данных
Начнём с самого простого — встроенных инструментов Excel для обработки данных без подключения к внешним источникам. Если вам нужно отобразить только строки с определённым значением (например, продажи за январь 2026 года), используйте автофильтр. Для этого:
- Выделите заголовки столбцов (например,
A1:D1). - Нажмите
Данные → Фильтр(или сочетание клавишCtrl+Shift+L). - Щёлкните по стрелке в столбце с датами и выберите
Фильтр по дате → Январь.
Для более сложных условий (например, "показать товары с ценой > 1000 руб. И остатком < 50 шт.") используйте расширенный фильтр:
- 📌 Создайте отдельную область с критериями фильтрации (например, в ячейках
F1:G2укажите заголовки "Цена" и "Остаток", а вF2:G2— значения ">1000" и "<50"). - 🔍 Перейдите в
Данные → Сортировка и фильтр → Расширенный фильтр. - 📋 Укажите диапазон исходных данных и диапазон критериев.
⚠️ Внимание: Если после применения фильтра данные не отображаются, проверьте формат ячеек с критериями. Например, число "1000" в текстовом формате не будет распознано как числовое значение для сравнения.
2. Запросы к внешним данным: Power Query
Power Query (или Get & Transform Data в новых версиях Excel) — это инструмент для импорта, преобразования и объединения данных из разных источников: SQL-баз, JSON-файлов, веб-страниц и даже SharePoint. Чтобы создать запрос:
- Перейдите на вкладку
Данные → Получить данные. - Выберите источник (например,
Из базы данных → Из SQL Server). - Введите параметры подключения (имя сервера, базы данных) и нажмите
ОК. - В окне Power Query Editor выберите нужные таблицы и примените преобразования (удалите столбцы, измените типы данных и т.д.).
- Нажмите
Закрыть и загрузить, чтобы вернуть данные в 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.
3. Запросы с помощью функций Excel
Если вам не нужны внешние данные, а требуется извлечь информацию из текущей таблицы, используйте функции поиска и ссылок. Например:
- 🔍
=ВПР(искомое_значение; диапазон; номер_столбца; [интервальный_просмотр])— ищет значение в первом столбце диапазона и возвращает данные из указанного столбца. - 📊
=ИНДЕКС(диапазон; номер_строки; [номер_столбца])— возвращает значение из пересечения строки и столбца. - 🔗
=ПОИСКПОЗ(искомое_значение; диапазон; [тип_сопоставления])— находит позицию значения в диапазоне.
Пример использования ВПР для поиска цены товара по артикулу:
=ВПР(A2; Таблица1!A:B; 2; ЛОЖЬ)
Где:
A2 — ячейка с артикулом,
Таблица1!A:B — диапазон с данными (столбец A — артикулы, столбец B — цены),
2 — номер столбца с ценой,
ЛОЖЬ — точное сопоставление.
Что делать, если ВПР возвращает #Н/Д?
Ошибка #Н/Д в функции ВПР означает, что искомое значение не найдено. Проверьте:
- 🔹 Правильность написания данных (регистр, пробелы).
- 🔹 Формат ячеек (текст vs число).
- 🔹 Диапазон поиска (возможно, значение находится за его пределами).
Если проблема остаётся, используйте комбинацию ИНДЕКС+ПОИСКПОЗ как более гибкую альтернативу.
4. Динамические запросы с Power Pivot
Power Pivot — это надстройка Excel для работы с большими объёмами данных и созданием связей между таблицами (аналог SQL JOIN). Чтобы активировать её:
- Перейдите в
Файл → Параметры → Надстройки. - Внизу окна выберите
Управление: Надстройки COMи нажмитеПерейти. - Отметьте
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
Чтобы запустить макрос:
- Нажмите
Alt + F11, чтобы открыть редактор VBA. - Вставьте код в новый модуль (
Insert → Module). - Вернитесь в Excel и нажмите
Alt + F8, выберитеImportCSVи нажмитеВыполнить.
⚠️ Внимание: Макросы могут содержать вредоносный код. Никогда не запускайте VBA-скрипты из ненадёжных источников. Перед выполнением проверьте код на наличие подозрительных функций, таких какShellилиSendKeys.
6. Оптимизация и устранение ошибок в запросах
Даже правильно составленный запрос может работать медленно или выдавать ошибки. Вот типичные проблемы и их решения:
| Ошибка | Возможная причина | Решение |
|---|---|---|
#NAME? |
Опечатка в имени функции или диапазона | Проверьте синтаксис и регистр символов |
403 Forbidden (при импорте с сайта) |
Сервер блокирует автоматические запросы | Используйте прокси или ручной экспорт данных |
| Медленная загрузка Power Query | Слишком много преобразований или большие объёмы данных | Разбейте запрос на этапы или оптимизируйте источник |
| Ошибка подключения к SQL | Неверные учётные данные или драйвер | Обновите драйвер ODBC и проверьте права доступа |
Для ускорения работы с большими таблицами:
- 📉 Преобразуйте диапазоны в умные таблицы (
Ctrl + T). - 🔄 Отключите автоматический пересчёт формул (
Формулы → Параметры вычислений → Вручную). - 🗃️ Используйте
Power Pivotвместо обычных формул для сводных отчётов.
FAQ: Ответы на частые вопросы
Можно ли сделать запрос к Google Таблицам из Excel?
Да, но только через Power Query. Для этого:
- В Google Таблице опубликуйте лист (
Файл → Опубликовать в интернете) в форматеCSV. - В Excel выберите
Данные → Получить данные → Из файла → Из CSV. - Вставьте ссылку на опубликованный
CSV-файл.
Обратите внимание: данные будут статичными. Для автоматического обновления потребуется VBA-скрипт.
Как обновить данные в запросе Power Query?
Щёлкните правой кнопкой по любой ячейке в импортированной таблице и выберите Обновить. Либо нажмите Данные → Обновить все.
Если запрос подключён к внешней базе, Excel запросит повторную аутентификацию.
Почему Power Query не видит мою базу данных?
Возможные причины:
- 🔌 Не установлен драйвер ODBC для вашей СУБД (скачайте его с сайта производителя, например, драйвер для SQL Server).
- 🔒 Брандмауэр блокирует подключение (добавьте исключение для Excel).
- 📡 Сервер базы данных недоступен (проверьте сетевое подключение).
Можно ли в Excel сделать запрос к API?
Да, но для этого потребуется:
- Использовать Power Query с веб-запросом (формат
JSONилиXML). - Или написать 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. Чтобы использовать их в другом файле:
- Откройте Power Query Editor (
Данные → Получить данные → Запросы). - Щёлкните правой кнопкой по запросу и выберите
Копировать. - Вставьте запрос в новую книгу через
Данные → Получить данные → Из других источников → Пустой запрос.