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

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

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

В этой статье мы разберём 5 основных способов создания запросов в Excel — от самых простых до продвинутых, — а также покажем, как избежатьных ошибок и оптимизировать работу с большими массивами данных. Если вы когда-нибудь задавались вопросом "как вытащить из Excel только те строки, которые соответствуют моим критериям?" или "можно ли автоматизировать обновление данных из внешнего источника?", то вы точно по адресу.

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

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

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

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

Для более сложных условий используйте расширенный фильтр (Данные → Сортировка и фильтр → Расширенный). Он позволяет:

  • 🔍 Фильтровать данные по нескольким критериям одновременно (например,"цена > 1000" И"регион = Москва").
  • 📤 Копировать отфильтрованные результаты в другое место листа.
  • 🔄 Использовать формулы в критериях (например, =И(A2>100; B2="Да")).
⚠️ Внимание: Если ваши данные содержат пустые строки или столбцы, Excel может неправильно определить диапазон для фильтра. Всегда проверяйте, что выделен весь нужный блок ячеек включая заголовки.

Пример расширенного фильтра с формулой:

Критерий 1 (столбец A)Критерий 2 (столбец B)
=И(A2>1000; B2="Москва")=ИЛИ(C2="Да"; C2="Одобрено")

Такой подход позволяет создавать динамические запросы, которые обновляются при изменении исходных данных.

📊 Как часто вы используете фильтры в Excel?
Ежедневно
Несколько раз в неделю
Редко
Никогда

2. Запросы с помощью функций: ВПР, ИНДЕКС/ПОИСКПОЗ и XLOOKUP

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

Самая известная (и часто критикуемая) функция — ВПР (VLOOKUP). Она ищет значение в первом столбце диапазона и возвращает данные из указанного столбца той же строки. Пример:

=ВПР("Яблоки"; A2:B10; 2; ЛОЖЬ)

Где:

  • "Яблоки" — искомое значение;
  • A2:B10 — диапазон поиска;
  • 2 — номер столбца, откуда брать результат;
  • ЛОЖЬ — точный поиск (без приближений).

Однако ВПР имеет ограничения:

  • 🚫 Не может искать влево (только вправо от первого столбца).
  • 🚫 Медленно работает с большими массивами.
  • 🚫 Требует точной сортировки для приблизительного поиска.

Более гибкая альтернатива — комбинация ИНДЕКС/ПОИСКПОЗ:

=ИНДЕКС(B2:B10; ПОИСКПОЗ("Яблоки"; A2:A10; 0))

А в новых версиях Excel (2019+) появилась функция XLOOKUP, которая решает большинство проблем ВПР:

=XLOOKUP("Яблоки"; A2:A10; B2:B10;"Не найдено"; 0)
⚠️ Внимание: Если вы используете ВПР с параметром ИСТИНА (приблизительный поиск), убедитесь, что данные в первом столбце отсортированы по возрастанию. В противном случае функция может вернуть некорректный результат.

3. Power Query: профессиональные запросы к данным

Power Query (или Get & Transform Data в английской версии) — это революционный инструмент для работы с данными в Excel, который позволяет:

  • 🔌 Подключаться к внешним источникам (SQL, API, веб-страницы, JSON/CSV-файлы).
  • 🔄 Трансформировать данные (объединять таблицы, изменять типы, очищать ошибки).
  • 📊 Автоматически обновлять результаты при изменении исходных данных.

Чтобы создать запрос через Power Query:

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

Пример трансформации в Power Query:

ДействиеОписаниеКод M (язык Power Query)
Удалить пустые строкиФильтрация строк, где все ячейки пустыеTable.SelectRows(#"Исходные данные", each not List.IsEmpty(List.RemoveNulls(Record.FieldValues(_))))
Разделить столбецРазбить"ФИО" на"Фамилия","Имя","Отчество"Table.SplitColumn(#"Предыдущий шаг","ФИО", Splitter.SplitTextByEachDelimiter({""}, QuoteStyle.None, false), {"Фамилия","Имя","Отчество"})
Объединить таблицыСвязать две таблицы по ключевому столбцуTable.NestedJoin(#"Таблица1","ID", #"Таблица2","ID","НоваяТаблица", JoinKind.LeftOuter)

Power Query сохраняет все шаги преобразования, поэтому при обновлении исходных данных (например, при добавлении новых строк в CSV-файл) достаточно нажать"Обновить все" на вкладке"Данные", и все трансформации применятся автоматически.

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

Проверить типы данных (даты, числа, текст)|

Заменить ошибки (#N/A, #VALUE!) на нули или пустые значения|

Проверить кодировку (особенно при импорте из CSV/ТXT)-->

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

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

  • 🗃️ Подключение к SQL-базам (Microsoft SQL Server, MySQL, PostgreSQL).
  • 🌐 Импорт данных из API (JSON/XML).
  • ☁️ Облачные источники (SharePoint, Azure, Google Sheets).

Чтобы подключиться к SQL-базе:

  1. Перейдите в Данные → Получить данные → Из базы данных → Из SQL Server.
  2. Введите имя сервера и название базы данных.
  3. Выберите режим подключения (импорт или прямой запрос).
  4. Введите SQL-запрос (например, SELECT * FROM Customers WHERE City ='Москва') или выберите таблицу.

Для работы с API (например, получение курса валют с сайта Центробанка):

  1. В Power Query выберите Из других источников → Из веб.
  2. Введите URL API (например, https://www.cbr.ru/scripts/XML_daily.asp).
  3. Преобразуйте JSON/XML в таблицу с помощью встроенных инструментов.
⚠️ Внимание: При подключении к внешним источникам Excel может запрашивать учётные данные (логины/пароли) или параметры аутентификации (например, API-ключи). Никогда не сохраняйте пароли в файлах, которые отправляете третьим лицам!
Как обновить данные из внешнего источника автоматически?

Чтобы данные обновлялись при открытии файла:

1. Перейдите в Данные → Свойства для вашего запроса.

2. Установите флажок Обновлять при открытии файла.

3. Настройте периодичность автоматического обновления в Параметры → Формулы → Параметры вычислений.

5. DAX-запросы в Power Pivot

Если вы работаете с моделями данных (например, в Power Pivot), то для создания запросов используется язык DAX (Data Analysis Expressions). Он похож на Excel-формулы, но оптимизирован для работы с большими наборами данных и сложными вычислениями.

Примеры DAX-запросов:

  • 📊 Вычисление общей суммы продаж:
    TotalSales = SUM(Sales[Amount])
  • 📈 Годовой рост в %:
    YoY Growth = DIVIDE([TotalSales] - [TotalSales PY], [TotalSales PY], 0)
  • 🎯 Топ-5 клиентов по продажам:
    TOP 5 Customers = TOPN(5, Customers, [TotalSales], DESC)

DAX позволяет создавать меры (dynamic calculations) и вычисляемые столбцы, которые автоматически обновляются при изменении данных. Например, можно написать меру, которая будет считать конверсию лидов в продажи только для выбранного региона и периода.

Чтобы создать меру в Power Pivot:

  1. Откройте вкладку Power PivotУправление моделью данных.
  2. Выберите таблицу, в которой хотите создать меру.
  3. В строке формул введите DAX-выражение (например, Profit Margin:= DIVIDE([TotalProfit], [TotalSales], 0)).

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

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

  • 🤖 Автоматизировать повторяющиеся запросы (например, ежедневный импорт данных из API).
  • 🔧 Создавать пользовательские функции для уникальных запросов.
  • 📁 Обрабатывать данные в фоновом режиме без ручного вмешательства.

Пример VBA-кода для импорта данных из SQL:

Sub ImportFromSQL

Dim conn As Object, rs As Object

Dim strConn As String, strSQL As String

Dim i As Integer

' Подключение к базе

strConn ="Driver={SQL Server};Server=myServer;Database=myDB;Uid=user;Pwd=password;"

' SQL-запрос

strSQL ="SELECT * FROM Customers WHERE Country ='Russia'"

' Создание подключения

Set conn = CreateObject("ADODB.Connection")

Set rs = CreateObject("ADODB.Recordset")

' Открытие соединения и выполнение запроса

conn.Open strConn

rs.Open strSQL, conn

' Вывод данных на лист

Sheets("Data").Range("A1").CopyFromRecordset rs

' Закрытие соединения

rs.Close

conn.Close

End Sub

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

  • Скорость: Обработка больших объёмов данных быстрее, чем через формулы.
  • 🔄 Гибкость: Можно написать логику для любых, даже самых нестандартных запросов.
  • 📅 Автоматизация: Запуск макросов по расписанию или при открытии файла.
⚠️ Внимание: VBA-макросы могут содержать вредоносный код. Никогда не запускайте макросы в файлах, полученных из ненадёжных источников. Перед выполнением проверяйте код или используйте песочницу (например, виртуальную машину).

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

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

ОшибкаПричинаРешение
#N/A в ВПРИскомое значение не найденоИспользуйте ЕСЛИОШИБКА(ВПР(...);"Не найдено") или проверьте регистр текста
Медленная работа ВПРБольшой диапазон поиска или неоптимизированные формулыЗамените на ИНДЕКС/ПОИСКПОЗ или используйте умные таблицы
Ошибка подключения к SQLНеверные учётные данные или драйверПроверьте строку подключения и установленные ODBC-драйверы
Power Query не обновляет данныеИзменился источник или структура данныхОткройте редактор Power Query и обновите шаги вручную
DAX возвращает неверный результатНеправильный контекст фильтраИспользуйте CALCULATE для явного задания контекста

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

  • 🔍 Проверяйте типы данных: Excel может неявно преобразовывать тексты в числа и наоборот, что приводит к ошибкам в запросах.
  • 📏 Используйте абсолютные ссылки: В формулах фиксируйте диапазоны с помощью $ (например, $A$2:$B$100), чтобы они не сбивались при копировании.
  • 🔄 Тестируйте на небольших данных: Перед применением запроса к большой таблице проверьте его на маленьком фрагменте.

8. Какой метод выбрать? Сравнение подходов

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

МетодСложностьОбъём данныхАвтоматизацияКогда использовать
Фильтры и сортировкаМалыйБыстрый анализ без формул
ВПР/ИНДЕКС/ПОИСКПОЗ⭐⭐СреднийПоиск данных в одной таблице
Power Query⭐⭐⭐БольшойИмпорт и трансформация данных из разных источников
SQL/DAX⭐⭐⭐⭐Очень большойРабота с базами данных или сложный анализ
VBA⭐⭐⭐⭐⭐ЛюбойАвтоматизация рутинных задач или уникальные запросы

Если вы только начинаете осваивать запросы в Excel, начните с фильтров и функций поиска. Для работы с внешними данными изучите Power Query — это самый универсальный инструмент на сегодняшний день. А если вам нужна максимальная гибкость, обратите внимание на DAX и VBA.

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

Можно ли в Excel сделать запрос как в SQL (с JOIN, GROUP BY)?

Да, но не напрямую. Варианты:

  • Используйте Power Query для объединения таблиц (аналог JOIN) и группировки (аналог GROUP BY).
  • В Power Pivot (DAX) есть функции RELATED (для связей) и SUMMARIZE (для группировки).
  • Для сложных запросов подключитесь к базе данных через Данные → Из других источников → Из SQL Server и напишите SQL-запрос прямо в Excel.
Почему мой запрос в Power Query работает медленно?

Причины и решения:

  • 🐢 Слишком много шагов: Объедините несколько преобразований в один (например, вместо 10 замен используйте одну функцию Table.ReplaceValue с несколькими правилами).
  • 🗃️ Большой объём данных: Фильтруйте данные на ранних этапах (например, сразу после импорта).
  • 🔄 Частые обновления: Отключите фоновое обновление (Файл → Параметры → Формулы → Автоматический пересчёт).
  • 🖥️ Недостаточно ресурсов: Закройте другие программы или разбейте запрос на несколько меньших.
Как сделать запрос к данным на другом листе или в другой книге?

Способы:

  • 📄 Ссылка на лист: В формулах используйте Лист2!A1:B10.
  • 📑 Ссылка на книгу: Откройте обе книги и используйте [Книга1.xlsx]Лист1!A1 (убедитесь, что путь к файлу не изменится).
  • 🔗 Power Query: Импортируйте данные из другой книги как из внешнего источника (Данные → Получить данные → Из файла → Из Excel).
⚠️ Внимание: При ссылке на закрытую книгу Excel покажет последнее сохранённое значение, но не обновит его, пока книга не будет открыта.
Можно ли в Excel сделать рекурсивный запрос (как в SQL)?

В чистом Excel — нет, но есть обходные пути:

  • 🔁 Итеративные вычисления: Включите в параметрах (Файл → Параметры → Формулы → Включить итеративные вычисления) и используйте формулы, ссылающиеся на самих себя.
  • 🤖 VBA: Напишите макрос с циклом для обхода иерархических данных (например, дерева категорий).
  • 🗃️ Power Query + DAX: Для иерархий (например,"родитель-ребёнок") используйте функцию PATH в DAX.
Как сохранить запрос, чтобы его мог использовать другой человек?

Чтобы запрос работал на другом компьютере:

  • 📎 Power Query: Все шаги сохраняются в файле Excel. Убедитесь, что источник данных доступен (например, файл CSV лежит в той же папке или путь к SQL-серверу не изменится).
  • 🔑 Внешние источники: Если запрос подключается к базе данных, убедитесь, что у другого пользователя есть права доступа.
  • 📂 Пути к файлам: Используйте относительные пути (например, .\Data\file.csv) или размещайте все файлы в одной папке.
  • 🔄 Макросы: Сохраните файл с расширением .xlsm и убедитесь, что на другом ПК разрешено выполнение макросов.