Функция 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:
- ? соответствует любому одиночному символу и
- * соответствует любой последовательности символов.
- Чтобы найти литерал? или *, используйте тильду (~) перед символом, т.е. ~* и ~?.