В любой базе данных‚ где хранятся сведения о специалистах‑гадалках (имя‚ город‚ услуги‚ описание‚ ссылка и т.д.)‚ часто возникает необходимость быстро отобрать только те записи‚ где в тексте встречаются определённые ключевые слова: «гадалка»‚ «таро»‚ «предсказание» и пр. В Google Таблицах для такой задачи удобно использовать функцию FIND (в русской версии – НАЙТИ).
В статье мы разберём:
- Что делает FIND и чем отличается от SEARCH;
- Как построить простые и сложные запросы поиска;
- Как соединить FIND с другими функциями (FILTER‚ INDEX‚ ПОИСКПОЗ‚ ARRAYFORMULA);
- Практический пример – создание «дашборда» по гадалкам.
Основы функции FIND (НАЙТИ)
Синтаксис функции:
FIND(искомый_текст; текст; [нач_позиция]) - искомый_текст – строка‚ которую нужно найти (можно указать в кавычках или ссылкой на ячейку);
- текст – ячейка или диапазон‚ где производится поиск;
- нач_позиция (необязательно) – номер символа‚ с которого начинается поиск (по умолчанию 1).
Функция возвращает номер первого символа‚ с которого найдено совпадение. Если строка не найдена – возникает ошибка #VALUE!. FIND учитывает регистр и ищет слева направо.
Пример:
| A | B |
|---|---|
| Описание | Опытный гадалка из Санкт‑Петербурга |
| Формула | =FIND(«гадалка»; B2) |
Результат – 9 (позиция первой буквы «г»);
Подготовка данных: пример таблицы «Гадалки»
Предположим‚ у вас есть лист Гадалки со следующими колонками:
| A | B | C | D | E |
|---|---|---|---|---|
| Имя | Город | Услуги | Описание | Ссылка |
| Ирина | Москва | Таро‚ руны | Профессиональная гадалка с 10‑летним стажем | … |
| Ольга | Казань | Нумерология | Эксперт по предсказанию будущего | … |
| Светлана | Санкт‑Петербург | Таро | Опытный таролог‚ иногда называют «гадалка» | … |
Наша цель – отобрать только те строки‚ где в колонке D (Описание) встречается слово «гадалка».
Простой поиск слова «гадалка»
Для проверки наличия слова в ячейке удобно использовать комбинацию FIND + ISNUMBER + IFERROR:
=IFERROR(ISNUMBER(FIND("гадалка"; D2)); FALSE) Эта формула возвращает TRUE‚ если слово найдено‚ и FALSE в противном случае (ошибку #VALUE! мы «проглатываем» с помощью IFERROR).
Чтобы сразу отфильтровать нужные строки‚ используем функцию FILTER:
=FILTER(A2:E; ISNUMBER(FIND("гадалка"; D2:D))) Результат – таблица‚ содержащая только те гадалки‚ у которых в описании есть слово «гадалка».
Поиск нескольких вариантов слов
Часто требуется искать не одно‚ а несколько вариантов: «гадалка»‚ «таро»‚ «предсказание». Есть несколько подходов.
Сочетание нескольких FIND через OR
=FILTER(
A2:E;
(ISNUMBER(FIND("гадалка"; D2:D))) +
(ISNUMBER(FIND("таро"; D2:D))) +
(ISNUMBER(FIND("предсказание"; D2:D))) > 0
) Знак «+» работает как логическое OR (если хотя бы один из условий TRUE‚ сумма будет >0).
Использование REGEXMATCH (регулярные выражения)
=FILTER(
A2:E;
REGEXMATCH(LOWER(D2:D); "гадалка|таро|предсказание")
) Здесь REGEXMATCH автоматически игнорирует регистр (благодаря LOWER) и ищет любые из перечисленных слов.
Комбинация SEARCH (не учитывает регистр)
=FILTER(
A2:E;
ISNUMBER(SEARCH("гадалка"; D2:D))
) Если регистр не важен‚ SEARCH проще‚ чем FIND.
Интеграция FIND с INDEX и ПОИСКПОЗ (MATCH)
Предположим‚ нужно найти телефон (столбец F) гадалки‚ у которой в описании встречается слово «гадалка».
- Сначала получаем номер строки с помощью ПОИСКПОЗ (MATCH):
=ПОИСКПОЗ(TRUE; ARRAYFORMULA(ISNUMBER(FIND("гадалка"; D2:D)))); 0) Эта формула возвращает относительный номер строки внутри диапазона D2:D.
- Затем используем INDEX для получения нужного значения:
=INDEX(F2:F; ПОИСКПОЗ(TRUE; ARRAYFORMULA(ISNUMBER(FIND("гадалка"; D2:D)))); 0) Если нужно сразу вернуть несколько столбцов‚ можно обернуть всё в FILTER (см. пункт 3).
Массовый поиск с ARRAYFORMULA
Чтобы не писать формулу в каждой строке‚ используем массивный вариант:
=ARRAYFORMULA(IFERROR(FIND("гадалка"; D2:D); "")) В результате в столбце появятся позиции найденных слов‚ а пустые ячейки – там‚ где слово отсутствует.
Ограничения и подводные камни функции FIND
- Учет регистра. «Гадалка» и «гадалка» различаются. Если нужен регистронезависимый поиск – используйте SEARCH или REGEXMATCH.
- Ошибка #VALUE! появляется‚ когда слово не найдено. Всегда оборачивайте FIND в IFERROR или проверяйте ISNUMBER.
- Поиск только слева направо. Функция ищет первое вхождение. Если нужно найти последнее‚ используйте комбинацию LEN + SUBSTITUTE или REGEXEXTRACT.
- Ограничения диапазона. FIND работает с одной ячейкой; для диапазонов используйте ARRAYFORMULA или FILTER.
Альтернативные методы поиска
| Метод | Плюсы | Минусы |
|---|---|---|
| FIND | Точный поиск‚ учитывает регистр | Возникает ошибка‚ если нет совпадения |
| SEARCH | Не учитывает регистр‚ проще в использовании | Тоже выдаёт ошибку #VALUE! при отсутствии совпадения |
| REGEXMATCH | Поддержка нескольких вариантов‚ регистронезависимый при LOWER | Требует знания регулярных выражений |
| QUERY | SQL‑подобный синтаксис‚ удобно для сложных фильтров | Не поддерживает функции FIND напрямую‚ только CONTAINS |
Практический кейс: дашборд «Гадалки по городам»
Задача – вывести количество гадалок в каждом городе‚ у которых в описании встречается слово «гадалка».
- Создаём вспомогательный столбец F с формулой:
=ARRAYFORMULA(IF(ISNUMBER(FIND("гадалка"; D2:D)); 1; 0)) Столбец F будет содержать 1 – если слово найдено‚ и 0 – иначе.
- Используем PIVOT TABLE (Сводную таблицу):
- Строки – Город (столбец B);
- Значения – Сумма столбца F (количество найденных).
Получаем быстрый отчёт‚ где видно‚ в каких городах больше всего гадалок.
Автоматизация: подсветка строк с помощью Apps Script
Если хочется‚ чтобы строки с найденным словом автоматически подсвечивались цветом‚ можно добавить простой скрипт:
function highlightDiviners {
const sheet = SpreadsheetApp.getActiveSpreadsheet.getSheetByName('Гадалки');
const range = sheet.getRange('D2:D' + sheet.getLastRow);
const values = range.getValues;
const backgrounds = [];
for (let i = 0; i < values.length; i++) {
const text = values[i][0];
if (text && text.toLowerCase.includes('гадалка')) {
backgrounds.push(['#ffeb3b']); // желтый
} else {
backgrounds.push([null]);
}
}
range.setBackgrounds(backgrounds);
}
Запуск функции highlightDiviners подсветит желтым все ячейки столбца D‚ где встречается слово «гадалка».
- Функция FIND – простой и быстрый способ найти точное вхождение текста с учётом регистра.
- Для более гибкого поиска используйте SEARCH‚ REGEXMATCH или комбинацию нескольких FIND.
- Сочетание FIND с FILTER‚ ARRAYFORMULA‚ INDEX и ПОИСКПОЗ позволяет создавать мощные запросы без скриптов.
- Не забывайте обрабатывать ошибки (IFERROR) и о том‚ что FIND чувствителен к регистру.
- Для визуального контроля удобно использовать условное форматирование или небольшие скрипты Apps Script.
С помощью описанных приёмов вы сможете быстро отбирать нужные записи о гадалках‚ строить аналитические отчёты и автоматизировать работу с большими таблицами в Google Sheets.