Функция SEARCH в Excel

Функция SEARCH в Excel возвращает расположение одной текстовой строки внутри другой. ПОИСК возвращает позицию искомого_текста внутри внутреннего_текста  в виде числа. SEARCH поддерживает подстановочные знаки и не чувствителен к регистру.

Цель

Получить расположение подстроки в строке.

Возвращаемое значение

Число, представляющее расположение подстроки.

Аргументы

  • find_text — подстрока для поиска.
  • within_text — текст для поиска.
  • start_num — [необязательный] Начальная позиция. Необязательно, по умолчанию 1.

Синтаксис

=SEARCH(find_text, within_text , [start_num])

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

Функция SEARCH возвращает позицию (в виде числа) одной текстовой строки внутри другой. Если искомая строка встречается несколько раз, функция ПОИСК возвращает позицию первого вхождения.

ПОИСК не чувствителен к регистру, но поддерживает  подстановочные знаки. Используйте функцию FIND, чтобы выполнить поиск с учетом регистра. Когда ПОИСК ничего не находит, он возвращает #VALUE! ошибка. Обратите внимание, что если искомый_текст пуст, функция SEARCH вернет 1. Это может привести к ложному срабатыванию, если искомый_текст является пустой ячейкой.

Основной пример

Функция SEARCH предназначена для поиска внутри текстовой строки определенной подстроки. Если функция находит подстроку, он возвращает позицию подстроки в тексте в виде числа. Если подстрока не найдена, ПОИСК возвращает ошибку #VALUE. Например:

=SEARCH("p","apple") // returns 2
=SEARCH("z","apple") // returns #VALUE!

Обратите внимание, что текстовые значения, введенные непосредственно в ПОИСК, должны быть заключены в двойные кавычки («»).

ИСТИННЫЙ или ЛОЖНЫЙ результат

Чтобы принудительно получить результат TRUE или FALSE, вложите SEARCH внутрь функции ISNUMBER. Она возвращает TRUE для чисел и FALSE для всего остального. Если ПОИСК находит подстроку, он возвращает позицию в виде числа, а ISNUMBER возвращает TRUE:

=ISNUMBER(SEARCH("p","apple")) // returns TRUE
=ISNUMBER(SEARCH("z","apple")) // returns FALSE

Если ПОИСК не находит подстроку, он возвращает ошибку, а ISNUMBER возвращает FALSE.

Стартовый номер

Функция ПОИСК имеет необязательный аргумент с именем start_num, который определяет, где ПОИСК должен начинать поиск подстроки. Чтобы найти первое совпадение «the», вы можете опустить start_num, который по умолчанию равен 1:

=SEARCH("the","The cat in the hat") // returns 1

Чтобы начать поиск с символа 4, введите 4 для start_num:

=SEARCH("the","The cat in the hat",4) // returns 12

Подстановочные знаки

Хотя ПОИСК не чувствителен к регистру, он поддерживает подстановочные знаки (*?~). Например, подстановочный знак вопросительного знака (?) соответствует любому одному символу. Приведенная ниже формула ищет 3-символьную подстроку, начинающуюся с «x» и заканчивающуюся на «y»:

=ISNUMBER(SEARCH("x?z","xyz")) // TRUE
=ISNUMBER(SEARCH("x?z","xbz")) // TRUE
=ISNUMBER(SEARCH("x?z","xyy")) // FALSE

Подстановочный знак звездочка (*) не так полезен в функции SEARCH, потому что ПОИСК уже ищет подстроку. Например, может показаться, что следующая формула проверяет значение, оканчивающееся на «z»:

=SEARCH("*z",text)

Однако, поскольку SEARCHавтоматически ищет подстроку , все следующие формулы возвращают в результате 1, даже если текст в первой формуле является единственным текстом, заканчивающимся на «z»:

=SEARCH("*z","XYZ") // returns 1
=SEARCH("*z","XYZXY") // returns 1
=SEARCH("*z","XYZXY123") // returns 1
=SEARCH("x*z","XYZXY123") // returns 1

Однако можно использовать подстановочный знак звездочки (*) следующим образом:

=SEARCH("x*2*b","AAAXYZ123ABCZZZ") // returns 4
=SEARCH("x*2*b","NXYZ12563JKLB") // returns 2

Здесь мы ищем «x», «2» и «b» в указанном порядке с любым количеством символов между ними. Наконец, используйте тильду (~) в качестве escape-символа, чтобы указать, что следующий символ является литералом, подобным  этому:

=SEARCH("~*","apple*") // returns 6
=SEARCH("~?","apple?") // returns 6
=SEARCH("~~","apple~") // returns 6

В приведенных выше формулах используется ПОИСК, чтобы найти буквальную звездочку (*), вопросительный знак (?) и тильду (~) в указанном порядке.

Если ячейка содержит

Чтобы вернуть пользовательский результат с помощью функции SEARCH, используйте функцию IFследующим образом:

=IF(ISNUMBER(SEARCH(substring,A1)), "Yes", "No")

Вместо возврата TRUE или FALSE приведенная выше формула вернет «Да», если подстрока найдена, и «Нет», если нет.

Примечания

  • SEARCH в Excel возвращает позицию первого  искомого_текста в пределах_текста .
  • Start_num является необязательным и по умолчанию равен 1.
  • Используйте функцию FIND для поиска с учетом регистра.
  • SEARCH позволяет использовать подстановочные знаки, знак вопроса (?) и звездочку (*) в find_text:
    • ? соответствует любому одиночному символу и
    • * соответствует любой последовательности символов.
    • Чтобы найти литерал? или *, используйте тильду (~) перед символом, т.е. ~* и ~?.
Автор А. Днепров

Обучаю основам работы с офисными программами.

Функция SEARCH в Excel
Глава 10. Подготовка составных отчетов