Гид по технологиям

Функция QUERY в Google Sheets — руководство и практические примеры

6 min read Таблицы Обновлено 23 Dec 2025
Функция QUERY в Google Sheets: руководство
Функция QUERY в Google Sheets: руководство

Google Sheets

Быстрые ссылки

  • Использование функции QUERY
  • Продвинутые формулы QUERY

Введение

Функция QUERY приносит в электронную таблицу возможности, похожие на базу данных: SELECT, WHERE, GROUP BY, ORDER BY и т.д. Если вы знакомы с SQL хотя бы на базовом уровне, QUERY покажется естественной и мощной. В этой статье подробно разберём синтаксис, основные приёмы, типичные ошибки и альтернативные подходы.

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

Использование функции QUERY

Основной формат формулы:

=QUERY(data, query, headers)
  • data — диапазон ячеек, например “A2:D12” или “A:D”.
  • query — строка с командой SELECT/WHERE и другими ключевыми словами (в кавычках).
  • headers — необязательный аргумент: число строк верхнего заголовка в диапазоне (например, 1 или 2).

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

Данные в Google Sheets с таблицей сотрудников

Пример: у нас есть лист “Staff List” с колонками: идентификатор сотрудника, имя, фамилия, дата рождения, посещение тренинга (Yes/No).

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

=QUERY('Staff List'!A2:E12, "SELECT A, B, C, E WHERE E = 'No'")

Эта формула выбирает столбцы A, B, C и E из диапазона A2:E12, где в столбце E стоит текст “No”.

Пример использования QUERY для списка сотрудников

Совет по динамическому диапазону: если вы хотите, чтобы список автоматически расширялся при добавлении сотрудников, укажите открытый диапазон по строкам:

=QUERY('Staff List'!A2:E, "SELECT A, B, C, E WHERE E = 'No'")

Так формула пропустит заголовок в A1 и будет работать при любом числе строк далее.

Частые ошибки при базовом использовании

  • Неправильные кавычки внутри query: используйте одиночные кавычки для строк внутри двойных кавычек SQL, например “WHERE E = ‘No’”.
  • Неправильный тип данных: даты и числа должны быть в ожидаемом формате, иначе сравнения не сработают.
  • Пропущенный headers: если QUERY воспринимает первую строку как данные, а не как заголовок, результат может исказиться.

Продвинутые формулы QUERY

QUERY поддерживает логические операторы, сравнения, агрегаты и даже вложенные конструкции. Ниже — полезные приёмы с примерами.

Использование операторов сравнения

Добавим в список сотрудников колонку F — число наград. Чтобы вывести всех сотрудников с минимум одной наградой:

=QUERY('Staff List'!A2:F12, "SELECT A, B, C, D, E, F WHERE F > 0")

Оператор “>” фильтрует по значениям столбца F.

QUERY с оператором больше (>) для поиска значений

Использование AND и OR

Для комбинированных условий можно применять AND и OR. Пример: сотрудники, родившиеся с 1980 по 1989 год включительно:

=QUERY('Staff List'!A2:E12, "SELECT A, B, C, D, E WHERE D >= DATE '1980-1-1' and D <= DATE '1989-12-31'")

Здесь используются операторы >= и <= и ключевое слово DATE для корректного распознавания дат.

Если нужно исключить сотрудников из 80-х, используйте OR:

=QUERY('Staff List'!A2:E12, "SELECT A, B, C, D, E WHERE D >= DATE '1989-12-31' or D <= DATE '1980-1-1'")

QUERY с условиями на даты

Агрегация и GROUP BY

QUERY умеет группировать и подсчитывать. Пример: подсчитать, сколько сотрудников посещали/не посещали тренинг:

=QUERY('Staff List'!A2:E12, "SELECT E, COUNT(E) group by E")

Это вернёт две строки: “Yes” с числом и “No” с числом.

Пример COUNT + GROUP BY

Аналогично можно использовать SUM, AVG и т.д. — например, суммировать количество наград по группам или отделам.

Дополнительные ключевые слова

  • ORDER BY — сортировка результатов.
  • LIMIT — ограничение числа строк.
  • OFFSET — смещение.
  • LABEL — переименование колонок в выводе.
  • FORMAT — форматирование чисел и дат в выводе.

Пример: отсортировать по убыванию наград и переименовать колонку F:

=QUERY('Staff List'!A2:F, "SELECT A, B, C, F WHERE F > 0 ORDER BY F DESC LIMIT 10 LABEL F 'Awards'")

Работа с текстовыми и числовыми фильтрами

  • Для поиска подстроки используйте LIKE: “WHERE B CONTAINS ‘Ann’” или “WHERE B LIKE ‘%Ann%’” (в QUERY синтаксис CONTAINS часто удобней).
  • Для чисел следите за региональными форматами десятичных разделителей (в Google Sheets внутри QUERY требуется точка как разделитель в строке запроса).

Сравнение с альтернативными подходами

Когда выбрать QUERY, а когда — другие инструменты:

  • FILTER — проще для простых условий и когда нужен динамический массив формул; но сложные группировки удобнее в QUERY.
  • VLOOKUP/INDEX+MATCH — нужны для поиска по ключу; QUERY лучше для множественных фильтров и агрегирования.
  • Сводные таблицы — удобны для интерактивного анализа и форматирования; QUERY хороша для автоматизированных выводов и формул.
  • Apps Script — если нужны сложные трансформации, внешние API или циклы, используйте скрипты.

Mermaid-диаграмма выбора:

flowchart TD
  A[Нужно ли агрегировать?] -->|Да| B[Используйте QUERY]
  A -->|Нет| C[Нужен только фильтр/поиск]
  C -->|Одно условие| D[FILTER]
  C -->|По ключу| E[VLOOKUP / INDEX+MATCH]
  B --> F[Добавить GROUP BY / COUNT / SUM]
  F --> G[ORDER BY / LABEL по необходимости]

Паттерны использования и чеклист по ролям

Руководитель (HR/People): получить список сотрудников без тренинга и рассылка по ним.

  • Шаги:
    • Указать динамический диапазон A2:E
    • Использовать WHERE E = ‘No’
    • Добавить ORDER BY по фамилии
    • Поставить LIMIT/OFFSET для постраничного вывода

Аналитик: агрегировать по отделам и считать среднюю зарплату (пример):

=QUERY('Payroll'!A2:F, "SELECT C, AVG(F) WHERE F IS NOT NULL GROUP BY C ORDER BY AVG(F) DESC")

SRE/администратор: автоматизировать отчёт — встроить формулу QUERY в лист отчётов и использовать Apps Script для экспорта CSV.

Шаблоны / полезные сниппеты

  • Динамический список непрошедших тренинг:
=QUERY('Staff List'!A2:E, "SELECT A, B, C, E WHERE E = 'No' ORDER BY C")
  • Подсчёт по категориям с переименованием:
=QUERY('Staff List'!A2:E, "SELECT E, COUNT(E) GROUP BY E LABEL COUNT(E) 'Count'")
  • Диапазон с фильтром по дате с использованием TODAY(): (встроить значение даты через конкатенацию)
=QUERY('Staff List'!A2:E, "SELECT A, B, C WHERE D <= date '" & TEXT(TODAY(), "yyyy-MM-dd") & "'")

Обратите внимание: при объединении строк и функций Google Sheets используйте амперсанд & и TEXT для форматирования даты.

Когда QUERY даёт неверный результат — отладка

  • Убедитесь, что диапазон данных не содержит смешанных типов (текст + число в одной колонке).
  • Проверьте корректность заголовков и аргумента headers.
  • Если даты не распознаются, преобразуйте их с помощью VALUE или используйте вспомогательный столбец с форматом YYYY-MM-DD.
  • Для сложных строковых операций временно добавляйте колонку-помощник с UPPER() или TRIM(), затем проводите выборку по этой колонке.

Показатели зрелости: от новичка до продвинутого

  • Уровень 1 — базовые SELECT и WHERE, динамический диапазон.
  • Уровень 2 — логические условия AND/OR, сравнения дат, ORDER BY.
  • Уровень 3 — GROUP BY, агрегаты (COUNT/SUM/AVG), LABEL и FORMAT.
  • Уровень 4 — сочетание QUERY с ARRAYFORMULA, сложные динамические диапазоны, автоматизация через Apps Script.

Советы по производительности

  • Уменьшайте диапазон данных, если возможно (например, A2:F1000 вместо A:F), это возвращает результаты быстрее.
  • Для больших таблиц используйте промежуточные сводные таблицы или предобработку столбцов.
  • Если QUERY часто пересчитывается, рассмотрите кэширование результатов в отдельный лист и обновление по расписанию через Apps Script.

Примеры ошибок и обходные пути

  • Проблема: “#VALUE!” при использовании QUERY с датами. Решение: убедитесь, что внутри строки запроса даты в формате yyyy-MM-dd и что в диапазоне действительно даты, а не текст.
  • Проблема: нечёткое сравнение строк с апострофами. Решение: экранируйте или замените апострофы, либо используйте другое поле-идентификатор.

Критерии приёмки

  • Формула возвращает ожидаемое число строк при контрольных проверках.
  • Даты и числа в выводе имеют корректный формат и сортировку.
  • При добавлении новой строки в исходный диапазон результат обновляется автоматически.

Краткая сводка — что нужно запомнить

  • QUERY — мощный инструмент для SQL-подобных операций в Google Sheets.
  • Используйте динамические диапазоны (A2:E) для автоматического обновления.
  • Для сложной агрегации и группировок QUERY часто проще и эффективнее, чем набор FILTER + ARRAYFORMULA.

Важно: если вы работаете с региональными форматами дат и чисел, проверяйте, как Google Sheets интерпретирует значения в вашем аккаунте и используйте TEXT/VALUE при необходимости.

Глоссарий (одна строка каждый)

  • SELECT — выбирает столбцы для вывода.
  • WHERE — фильтрует строки по условию.
  • GROUP BY — группирует строки для агрегирования.
  • ORDER BY — сортирует вывод.
  • LABEL — задаёт пользовательские имена столбцов в результате.

Дополнительные ресурсы и альтернативы

  • Используйте FILTER для простых динамических фильтров.
  • Для интерактивного анализа используйте сводные таблицы (Pivot Table).
  • Для сложной автоматизации и экспорта данных — Google Apps Script.

Сводка: QUERY экономит время и код при работе с таблицами — от фильтрации и поиска до агрегации и отчётности. Начните с простых SELECT/WHERE и постепенно добавляйте GROUP BY, LABEL и FORMAT для чистых, готовых к использованию отчётов.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Как настроить Single Sign‑On на Apple TV
Руководство

Как настроить Single Sign‑On на Apple TV

Форматирование диска в Ubuntu — пошагово
Linux

Форматирование диска в Ubuntu — пошагово

Агрегационный pipeline в MongoDB — руководство
Базы данных

Агрегационный pipeline в MongoDB — руководство

Горячие клавиши Zoom — руководство и шпаргалка
Продуктивность

Горячие клавиши Zoom — руководство и шпаргалка

Регистрация пользователей на Python с SQLite
Python

Регистрация пользователей на Python с SQLite

Как изменить имя в Zoom — быстро и надёжно
Инструкции

Как изменить имя в Zoom — быстро и надёжно