Как написать запрос в Excel: от базовых фильтров до Power Query

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

Многие ошибочно думают, что запросы в Excel — это прерогатива программистов или аналитиков. На самом деле даже базовые знания позволяют автоматизировать 80% рутинных операций: от сортировки клиентской базы до объединения данных из разных файлов. Главное — понимать, какой инструмент использовать: стандартные фильтры, функции рабочего листа (например, ВПР или ИНДЕКС-ПОИСКПОЗ), Power Query для сложных трансформаций или язык M для кастомизации.

В этой статье мы разберём все уровни работы с запросами — от элементарных до профессиональных. Вы узнаете, как извлекать нужную информацию из огромных массивов данных, объединять таблицы без дубликатов, и даже подключаться к внешним источникам (SQL, веб-страницы, JSON). А в конце вас ждёт чек-лист, который поможет избежатьных ошибок новичков.

Что такое запрос в Excel и зачем он нужен

Термин "запрос" (query) в контексте Excel обозначает процесс извлечения, фильтрации или преобразования данных по заданным критериям. Это может быть как простая сортировка строк по алфавиту, так и сложный многоэтапный процесс слияния таблиц из разных источников. Основная цель запроса — автоматизировать обработку данных, чтобы избежать ручного копирования и потенциальных ошибок.

Представьте, что у вас есть таблица с 10 000 строк о продажах за год. Вам нужно:

  • 📊 Вывести только продажи конкретного менеджера
  • 💰 Посчитать сумму продаж по каждому региону
  • 📅 Отфильтровать данные за последний квартал
  • 🔄 Объединить эти данные с таблицей возвратов товаров

Без запросов вам пришлось бы вручную просматривать каждую строку, копировать данные в новые таблицы и рисковать пропустить что-то важное. С запросами же все эти операции выполняются за несколько кликов — или даже автоматически при обновлении исходных данных.

Excel предлагает несколько инструментов для создания запросов:

Инструмент Уровень сложности Когда использовать
Стандартный фильтр ⭐ Базовый Простая сортировка и отбор данных в одной таблице
Расширенный фильтр ⭐⭐ Средний Сложные условия отбора, извлечение данных в другое место
Функции рабочего листа (ВПР, ИНДЕКС) ⭐⭐ Средний Поиск и связывание данных между таблицами
Power Query ⭐⭐⭐ Продвинутый Объединение, очистка и трансформация данных из разных источников
Язык M ⭐⭐⭐⭐ Эксперт Кастомизация запросов в Power Query, работа с API
⚠️ Внимание: Если вы работаете с конфиденциальными данными (например, персональной информацией клиентов), никогда не сохраняйте запросы в облачных сервисах (OneDrive, Google Drive) без шифрования. Power Query может кэшировать данные в открытом виде.

Базовые запросы: фильтры и сортировка

Начнём с самого простого — стандартных фильтров. Этот инструмент доступен даже в самых старых версиях Excel и позволяет быстро отобрать нужные строки по одному или нескольким критериям.

Чтобы применить фильтр:

  1. Выделите заголовки столбцов (первую строку таблицы).
  2. Перейдите на вкладку ДанныеФильтр (или нажмите Ctrl+Shift+L).
  3. Нажмите на стрелку в заголовке столбца, по которому нужно фильтровать.
  4. Выберите нужные значения или задайте условие (например,"больше чем 1000").

Пример: у вас есть таблица продаж с колонками Менеджер, Регион, Сумма. Чтобы увидеть продажи только менеджера Иванова в Центральном регионе на сумму больше 5000 рублей, примените фильтры последовательно к каждому столбцу.

Для более гибкой фильтрации используйте расширенный фильтр:

  • 📌 Создайте отдельную область с условиями (например, в столбцах выше или справа от таблицы).
  • 🔍 Перейдите в ДанныеРасширенный фильтр.
  • 📋 Укажите исходный диапазон и диапазон условий.
  • 💾 Выберите, куда вывести результат (можно в другое место на листе).

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

📊 Какой инструмент для запросов вы используете чаще всего?
Стандартный фильтр
Расширенный фильтр
Функции ВПР/ИНДЕКС
Power Query
Не использую запросы

Функции рабочего листа для запросов: ВПР, ИНДЕКС, XLOOKUP

Когда фильтров недостаточно — например, вам нужно найти значение в одной таблице и подставить его в другую — на помощь приходят функции. Самые популярные из них: ВПР (VLOOKUP), ИНДЕКС-ПОИСКПОЗ (INDEX-MATCH) и XLOOKUP (в новых версиях Excel).

Разберём каждую на примере. Допустим, у вас есть две таблицы:

  • Таблица 1: Список заказов с колонками Номер заказа, Клиент, Дата.
  • Таблица 2: Список клиентов с колонками Клиент, Регион, Менеджер.

Задача: добавить в Таблицу 1 колонки Регион и Менеджер, подтянув их из Таблицы 2 по имени клиента.

1. Функция ВПР (VLOOKUP)

Синтаксис:

=ВПР(искомое_значение; таблица_поиска; номер_столбца; [интервальный_просмотр])

Для нашего примера формула будет выглядеть так:

=ВПР(B2; Клиенты!$A$2:$C$100; 2; ЛОЖЬ)

Где:

  • B2 — ячейка с именем клиента в Таблице 1.
  • Клиенты!$A$2:$C$100 — диапазон Таблицы 2 (с абсолютными ссылками, чтобы не сбивался при копировании).
  • 2 — номер столбца в Таблице 2, откуда берём данные (Регион).
  • ЛОЖЬ — точный поиск (обязательно указывайте для избежания ошибок).
⚠️ Внимание: ВПР ищет значение только в первом столбце указанного диапазона. Если ваша таблица поиска не упорядочена по ключевому столбцу, функция может вернуть неверный результат. Всегда проверяйте порядок столбцов!

2. Комбинация ИНДЕКС-ПОИСКПОЗ (INDEX-MATCH)

Эта пара функций гибче, чем ВПР, потому что:

  • 🔍 Ищет значение в любом столбце (не только в первом).
  • 🔄 Работает слева направо и справа налево.
  • 🚀 Быстрее обрабатывает большие массивы данных.

Формула для нашего примера:

=ИНДЕКС(Клиенты!$B$2:$B$100; ПОИСКПОЗ(B2; Клиенты!$A$2:$A$100; 0))

Где:

  • Клиенты!$B$2:$B$100 — столбец с регионами (откуда берём данные).
  • ПОИСКПОЗ(B2; Клиенты!$A$2:$A$100; 0) — ищет позицию клиента в столбце A Таблицы 2.

3. Функция XLOOKUP (Excel 365 и 2021)

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

=XLOOKUP(искомое_значение; массив_поиска; массив_вывода; [если_не_найдено]; [тип_совпадения]; [метод_поиска])

Для нашего примера:

=XLOOKUP(B2; Клиенты!$A$2:$A$100; Клиенты!$B$2:$B$100;"Не найден")

Преимущества XLOOKUP:

  • 🔍 Ищет в любом направлении (вверх, вниз, влево, вправо).
  • 📌 Может возвращать несколько столбцов сразу.
  • 🚫 Умеет обрабатывать ошибки (параметр [если_не_найдено]).
Почему ВПР считается устаревшей функцией?

Хотя ВПР до сих пор широко используется, у неё есть критические недостатки:

1. Медленная работа с большими массивами (тысячи строк).

2. Не может искать значения слева от ключевого столбца.

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

4. Нет встроенной обработки ошибок (при отсутствии значения возвращает #Н/Д).

В новых версиях Excel Microsoft рекомендует переходить на XLOOKUP или ИНДЕКС-ПОИСКПОЗ.

Power Query: инструмент для сложных запросов

Если вам нужно объединить данные из нескольких файлов, очистить их от ошибок или преобразовать в другой формат, стандартных функций Excel будет недостаточно. Здесь на помощь приходит Power Query — встроенный ETL-инструмент (Extract, Transform, Load).

Power Query позволяет:

  • 📂 Импортировать данные из Excel, CSV, SQL, JSON, XML и даже веб-страниц.
  • 🧹 Очищать данные: удалять дубликаты, исправлять опечатки, заменять значения.
  • 🔗 Объединять таблицы по ключевым полям (как в SQL-запросах).
  • 📊 Трансформировать данные: разворачивать столбцы, группировать строки, добавлять вычисляемые поля.
  • 🔄 Автоматически обновлять результаты при изменении исходных данных.

Чтобы начать работу с Power Query:

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

Рассмотрим практический пример: у вас есть два файла — Продажи_2023.xlsx и Продажи_2026.xlsx. Вам нужно объединить их в одну таблицу, удалить пустые строки и посчитать итоги по регионам.

Выбрать Данные → Получить данные → Из файла → Из папки

Указать папку с файлами и нажать ОК

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

Выбрать столбцы для объединения (например, Регион и Продукт)

Удалить ненужные столбцы и пустые строки

Добавить столбец с итогами (например, Сумма продаж)

Нажать Закрыть и загрузить

-->

Одним из самых мощных инструментов Power Query является возможность объединения таблиц (мердж). Это аналог операции JOIN в SQL. Существует четыре типа объединений:

Тип объединения Описание Когда использовать
Внутреннее (INNER JOIN) Только строки с совпадающими значениями в обеих таблицах Когда нужны только полные совпадения (например, заказы с существующими клиентами)
Левое внешнее (LEFT OUTER JOIN) Все строки из первой таблицы + совпадения из второй Когда нужно сохранить все записи основной таблицы (например, все заказы, даже без привязанного клиента)
Правое внешнее (RIGHT OUTER JOIN) Все строки из второй таблицы + совпадения из первой Когда вторая таблица — основная (например, все клиенты, даже без заказов)
Полное внешнее (FULL OUTER JOIN) Все строки из обеих таблиц Когда нужны все данные без исключений (например, для анализа покрытия)
⚠️ Внимание: При объединении больших таблиц (более 100 000 строк) Power Query может зависнуть или выдавать ошибку нехватки памяти. В таких случаях:

  • Разбейте задачу на части (объединяйте таблицы поочерёдно).
  • Удалите ненужные столбцы до объединения.
  • Используйте 64-битную версию Excel (она поддерживает больший объём данных).

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

Язык M: кастомизация запросов в Power Query

Если стандартных операций Power Query недостаточно, вы можете использовать язык M — специализированный язык для написания запросов. Он позволяет создавать сложные трансформации, которые невозможно реализовать через интерфейс.

Например, вам нужно:

  • 📌 Извлечь данные из JSON API с аутентификацией.
  • 🔍 Отфильтровать строки по сложному условию (например,"даты между 01.01.2023 и 31.12.2023, но только по понедельникам").
  • 🔄 Динамически изменять путь к файлу в зависимости от текущей даты.

Пример кода на языке M для извлечения данных из JSON:

let

// Указываем URL API

Source = Json.Document(Web.Contents("https://api.example.com/sales")),

// Преобразуем в таблицу

sales_table = Table.FromRecords(Source),

// Фильтруем продажи за 2023 год

filtered_sales = Table.SelectRows(sales_table, each [Date] >= #date(2023, 1, 1) and [Date] <= #date(2023, 12, 31)),

// Группируем по региону и считаем сумму

grouped_sales = Table.Group(filtered_sales, {"Region"}, {{"Total", each List.Sum([Amount]), type number}})

in

grouped_sales

Чтобы редактировать код M:

  1. Откройте Редактор Power Query.
  2. В панели Параметры запроса выберите ДополнительноРедактор дополнительных параметров.
  3. Внесите изменения в код и нажмите Готово.

Преимущества языка M:

  • 🔧 Полный контроль над процессом трансформации.
  • 🚀 Возможность работать с данными, которые нельзя обработать стандартными средствами (например, вложенные JSON-структуры).
  • 🔄 Автоматизация рутинных операций (например, ежемесячное обновление отчётов).

Однако у языка M есть и недостатки:

  • 📚 Высокий порог входа (нужно изучать синтаксис).
  • 🐛 Ошибки в коде могут привести к падению запроса без понятного сообщения.
  • 🔍 Отладка занимает больше времени, чем работа через интерфейс.

Запросы к внешним источникам: SQL, веб, API

Excel умеет не только работать с данными внутри файла, но и подключаться к внешним источникам: базам данных, веб-страницам, облачным сервисам. Это открывает возможности для создания динамических отчётов, которые обновляются в реальном времени.

1. Подключение к базе данных SQL

Если ваши данные хранятся в Microsoft SQL Server, MySQL, PostgreSQL или другой СУБД, вы можете импортировать их напрямую в Excel:

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

Пример SQL-запроса для импорта:

SELECT

o.OrderID,

c.CustomerName,

o.OrderDate,

SUM(od.Quantity * od.UnitPrice) AS TotalAmount

FROM

Orders o

JOIN

Customers c ON o.CustomerID = c.CustomerID

JOIN

OrderDetails od ON o.OrderID = od.OrderID

WHERE

o.OrderDate BETWEEN'2023-01-01' AND'2023-12-31'

GROUP BY

o.OrderID, c.CustomerName, o.OrderDate

⚠️ Внимание: При работе с производственными базами данных никогда не импортируйте данные напрямую в Excel без предварительной фильтрации на стороне SQL. Большие запросы могут:

  • 🐢 Замедлить работу сервера.
  • 💥 Привести к тайм-ауту подключения.
  • 🔓 Нарушить политику безопасности компании (если данные конфиденциальны).

Всегда согласовывайте такие операции с администратором базы данных.

2. Импорт данных с веб-страниц

Excel может извлекать данные с веб-страниц, если они представлены в виде таблиц. Например, вам нужно получить курс валют с сайта Центрального банка:

  1. Перейдите в ДанныеПолучить данныеИз других источниковИз веб.
  2. Введите URL страницы (например, https://www.cbr.ru/currency_base/daily/).
  3. Выберите таблицу с курсами валют и загрузите её.

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

3. Работа с API

Многие сервисы (например, Google Analytics, Яндекс.Метрика, ) предоставляют данные через API. Чтобы получить их в Excel:

  1. Узнайте URL API и параметры запроса (обычно это описано в документации сервиса).
  2. В Power Query выберите Из других источниковИз вебДополнительно.
  3. Введите URL с параметрами (например, https://api.example.com/sales?date_from=2023-01-01&date_to=2023-12-31).
  4. При необходимости укажите заголовки аутентификации (например, Authorization: Bearer YOUR_TOKEN).
  5. Преобразуйте полученный JSON/XML в таблицу.

Пример запроса к API с аутентификацией на языке M:

let

// URL API с параметрами

url ="https://api.example.com/reports",

// Заголовки для аутентификации

headers = [

#"Authorization" ="Bearer" & ApiKey,

#"Accept" ="application/json"

],

// Получаем данные

source = Json.Document(Web.Contents(url, [Headers=headers])),

// Преобразуем в таблицу

reports = Table.FromRecords(source[reports])

in

reports

Типичные ошибки и как их избежать

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

Ошибка Причина Решение
#Н/Д в функциях ВПР/ИНДЕКС Искомое значение отсутствует в таблице поиска Используйте ЕСЛИОШИБКА или XLOOKUP с параметром [если_не_найдено]
Power Query не обновляет данные Отключено автоматическое обновление или изменён источник Проверьте настройки в Данные → Запросы и подключения → Свойства
Ошибка"Недостаточно памяти" в Power Query Слишком большой объём данных или сложные трансформации Разбейте запрос на части или используйте 64-битную версию Excel
Некорректные результаты при объединении таблиц Несовпадение типов данных в ключевых столбцах Преобразуйте столбцы к одному типу (текст, число) перед объединением
Медленная работа запросов Слишком много ненужных столбцов или строк Удалите лишние данные на ранних этапах обработки

Ещё несколько советов для избежания ошибок:

  • 🔄 Всегда проверяйте исходные данные на наличие пустых строк, опечаток или несоответствий типов (например, числа, сохранённые как текст).
  • 📌 Используйте именованные диапазоны вместо ссылок на ячейки (например, =ВПР(A2; ТаблицаКлиентов; 2; ЛОЖЬ) вместо =ВПР(A2; Лист2!$A$2:$C$100; 2; ЛОЖЬ)). Это упрощает поддержку формул.
  • 🔍 Для сложных запросов ведите журнал изменений: комментируйте шаги в Power Query или добавляйте описания к формулам.

Автоматизация запросов: макросы и VBA

Если вам нужно регулярно выполнять одни и те же запросы (например, еженедельно обновлять отчёт), их можно автоматизировать с помощью макросов или VBA (Visual Basic for Applications).

Пример макроса для обновления всех запросов в книге:

Sub UpdateAllQueries

Dim conn As WorkbookConnection

For Each conn In ThisWorkbook.Connections

conn.Refresh

Next conn

MsgBox"Все запросы успешно обновлены!", vbInformation

End Sub

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

  1. Перейдите на вкладку ВидМакросыЗаписать макрос.
  2. Выполните действия, которые нужно автоматизировать (например, обновление запроса).
  3. Остановите запись и сохраните макрос.

Преимущества автоматизации:

  • ⏰ Экономия времени (не нужно повторять одни и те же действия).
  • 📅 Возможность запуска по расписанию (например, каждый понедельник в 9:00).
  • 🔄 Снижение риска ошибок (макрос всегда выполняет действия одинаково).

Однако у VBA есть и недостатки:

  • 🛠 Требует знаний программирования (для сложных задач).
  • 🔒 Макросы могут быть заблокированы политикой безопасности компании.
  • 🐛 Ошибки в коде могут привести к потере данных.

Альтернатива VBA — Power Automate (ранее Microsoft Flow). Этот инструмент позволяет создавать автоматизированные рабочие процессы без написания кода. Например