Функции Excel FIND и SEARCH с примерами формул

  • Поделись Этим
Michael Brown

В учебнике объясняется синтаксис функций Excel FIND и SEARCH и приводятся примеры формул для расширенного нетривиального использования.

В прошлой статье мы рассмотрели основы диалога Excel "Найти и заменить". Однако во многих ситуациях вам может понадобиться, чтобы Excel автоматически находил и извлекал данные из других ячеек на основе ваших критериев. Итак, давайте подробнее рассмотрим, что могут предложить функции поиска Excel.

    Функция Excel FIND

    Функция FIND в Excel используется для возврата позиции определенного символа или подстроки в текстовой строке.

    Синтаксис функции Excel Найти выглядит следующим образом:

    FIND(find_text, within_text, [start_num])

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

    • Найти_текст - символ или подстроку, которую вы хотите найти.
    • Внутри_текста - текстовая строка, в которой будет производиться поиск. Обычно она предоставляется в виде ссылки на ячейку, но вы также можете ввести строку непосредственно в формулу.
    • начальное_число - необязательный аргумент, указывающий, с какого символа начинается поиск. Если он опущен, поиск начинается с 1-го символа строки within_text.

    Если функция FIND не находит символ(ы) find_text, возвращается ошибка #VALUE!

    Например, формула =FIND("d", "find") возвращает 4, потому что "d" - это 4-я буква в слове " найти ". Формула =FIND("a", "find") возвращает ошибку, потому что нет буквы "a" в " найти ".

    Функция Excel FIND - что нужно помнить!

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

    1. Функция FIND - это с учётом регистра Если вы ищете совпадение без учета регистра, используйте функцию ПОИСК.
    2. Функция FIND в Excel не позволяет использовать символы подстановочного знака .
    3. Если аргумент find_text содержит несколько символов, функция FIND возвращает позицию первый символ Например, формула FIND("ap", "happy") возвращает 2, потому что "a" - вторая буква в слове "happy".
    4. Если в пределах_текста содержится несколько случаев Например, FIND("l", "hello") возвращает 3, что является позицией первого символа "l" в слове "hello".
    5. Если find_text является пустая строка "", формула Excel FIND возвращает первый символ в строке поиска.
    6. Функция Excel FIND возвращает значение ошибка #VALUE! если произойдет одно из следующих событий:
      • Find_text не существует в within_text.
      • Start_num содержит больше символов, чем within_text.
      • Start_num - 0 (ноль) или отрицательное число.

    Функция ПОИСК в Excel

    Функция ПОИСКПОЗ в Excel очень похожа на функцию FIND, поскольку она также возвращает местоположение подстроки в текстовой строке. Синтаксис и аргументы схожи с аргументами FIND:

    ПОИСК(найти_текст, внутри_текста, [начальное_число])

    В отличие от функции FIND, функция SEARCH является без учета регистра и позволяет использовать символы подстановки, как показано в следующем примере.

    А вот несколько основных формул ПОИСК в Excel:

    =SEARCH("рынок", "супермаркет") возвращает 6, потому что подстрока "market" начинается с 6-го символа слова "supermarket".

    =SEARCH("e", "Excel") возвращает 1, потому что "e" является первым символом в слове "Excel", игнорируя регистр.

    Как и FIND, функция ПОИСК в Excel возвращает ошибку #VALUE!, если:

    • Значение аргумента find_text не найдено.
    • Аргумент start_num больше длины within_text.
    • Start_num равно или меньше нуля.

    Далее в этом руководстве вы найдете еще несколько примеров формул, демонстрирующих использование функции ПОИСКПОЗ в рабочих листах Excel.

    Как уже упоминалось, функции FIND и SEARCH в Excel очень похожи по синтаксису и применению. Однако у них есть несколько различий.

    1. Поиск с учетом регистра в сравнении с поиском без учета регистра

    Самое существенное различие между функциями ПОИСК и НАЙТИ в Excel заключается в том, что ПОИСК не чувствителен к регистру, а НАЙТИ - чувствителен к регистру.

    Например, SEARCH("e", "Excel") возвращает 1, потому что игнорирует регистр "E", а FIND("e", "Excel") возвращает 4, потому что учитывает регистр.

    2. Поиск с использованием символов подстановки

    В отличие от FIND, функция Excel SEARCH принимает символы подстановки в аргументе find_text:

    • Вопросительный знак (?) соответствует одному символу, а
    • Звездочка (*) соответствует любой серии символов.

    Чтобы увидеть, как это работает на реальных данных, рассмотрим следующий пример:

    Как видно на скриншоте выше, формула SEARCH("function*2013", A2) возвращает позицию первого символа ("f") в подстроке, если текстовая строка, указанная в аргументе within_text, содержит и "function", и "2013", независимо от того, сколько других символов находится между ними.

    Совет. Чтобы найти вопросительный знак (?) или звездочку (*), введите тильду (~) перед соответствующим символом.

    На практике функции Excel FIND и SEARCH редко используются сами по себе. Обычно они применяются в сочетании с другими функциями, такими как MID, LEFT или RIGHT, и следующие примеры формул демонстрируют некоторые реальные случаи их использования.

    Пример 1. Найти строку, предшествующую или следующую за заданным символом

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

    Предположим, у вас есть столбец имен (столбец A), и вы хотите вытащить имя и фамилию в отдельные столбцы.

    Чтобы получить первое имя, можно использовать FIND (или SEARCH) в сочетании с функцией LEFT:

    =LEFT(A2, FIND(" ", A2)-1)

    или

    =LEFT(A2, SEARCH(" ", A2)-1)

    Как вы, вероятно, знаете, функция Excel LEFT возвращает заданное количество крайних левых символов в строке. И вы используете функцию FIND для определения позиции пробела (" "), чтобы функция LEFT знала, сколько символов нужно извлечь. При этом вы вычитаете 1 из позиции пробела, потому что вы не хотите, чтобы возвращаемое значение включало пробел.

    Чтобы извлечь фамилию, используйте комбинацию функций RIGHT, FIND / SEARCH и LEN. Функция LEN необходима для получения общего количества символов в строке, из которого вычитается позиция пробела:

    =RIGHT(A2,LEN(A2)-FIND(" ",A2))

    или

    =RIGHT(A2,LEN(A2)-SEARCH(" ",A2))

    Следующий снимок экрана демонстрирует результат:

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

    Пример 2. Найти N-ое вхождение заданного символа в текстовой строке

    Предположим, что у вас есть несколько текстовых строк в столбце A, скажем, список SKU, и вы хотите найти позицию 2-й тире в строке. Следующая формула работает отлично:

    =FIND("-", A2, FIND("-",A2)+1)

    Первые два аргумента легко интерпретировать: найти тире ("-") в ячейке A2. В третий аргумент (start_num) вы вставляете еще одну функцию FIND, которая указывает Excel начать поиск с символа, идущего сразу после первого вхождения тире (FIND("-",A2)+1).

    Чтобы вернуть положение 3-е явление Вы вставляете приведенную выше формулу в аргумент start_num другой функции FIND и прибавляете 2 к возвращаемому значению:

    =FIND("-",A2, FIND("-", A2, FIND("-",A2)+1) +2)

    Другой и, вероятно, более простой способ поиска N-го вхождения заданного символа - использование функции Excel FIND в сочетании с CHAR и SUBSTITUTE:

    =FIND(CHAR(1),SUBSTITUTE(A2,"-",CHAR(1),3))

    Где "-" - рассматриваемый символ, а "3" - N-ое вхождение, которое вы хотите найти.

    В приведенной выше формуле функция SUBSTITUTE заменяет 3-е вхождение тире ("-") на CHAR(1), который является непечатаемым символом "Начало заголовка" в системе ASCII. Вместо CHAR(1) вы можете использовать любой другой непечатаемый символ от 1 до 31. А затем функция FIND возвращает позицию этого символа в текстовой строке. Итак, общая формула выглядит следующим образом:

    FIND(CHAR(1),SUBSTITUTE( ячейка , персонаж , CHAR(1), N-ое возникновение ))

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

    Примечание. Пожалуйста, помните, что функция Excel FIND чувствительна к регистру. В нашем примере это не имеет значения, но если вы работаете с буквами и вам нужно без учета регистра совпадение, используйте функцию ПОИСК вместо FIND.

    Пример 3. Извлечение N символов, следующих за определенным символом

    Чтобы найти подстроку заданной длины в любой текстовой строке, используйте Excel FIND или Excel SEARCH в сочетании с функцией MID. Следующий пример демонстрирует, как можно использовать такие формулы на практике.

    В нашем списке SKU, предположим, вы хотите найти первые 3 символа, следующие за первым тире, и вытащить их в другой столбец.

    Если группа символов, предшествующая первому тире, всегда содержит одинаковое количество элементов (например, 2 символа), это будет тривиальной задачей. Вы можете использовать функцию MID, чтобы вернуть 3 символа из строки, начиная с позиции 4 (пропуская первые 2 символа и тире):

    =MID(A2, 4, 3)

    В переводе на английский язык формула звучит так: "Загляните в ячейку A2, начните извлечение с символа 4 и верните 3 символа".

    Однако в реальных рабочих листах подстрока, которую вам нужно извлечь, может начинаться в любом месте текстовой строки. В нашем примере вы можете не знать, сколько символов предшествует первому тире. Чтобы справиться с этой проблемой, используйте функцию FIND, чтобы определить начальную точку подстроки, которую вы хотите извлечь.

    Формула FIND для возврата позиции 1-го тире выглядит следующим образом:

    =FIND("-",A2)

    Поскольку вы хотите начать с символа, следующего за тире, добавьте 1 к возвращаемому значению и встройте приведенную выше функцию во второй аргумент (start_num) функции MID:

    =MID(A2, FIND("-",A2)+1, 3)

    В этом сценарии функция ПОИСК в Excel работает одинаково хорошо:

    =MID(A2, SEARCH("-",A2)+1, 3)

    Это замечательно, но что если группа символов, следующая за первым тире, содержит другое количество символов? Хм... это может быть проблемой:

    Как видно на скриншоте выше, формула отлично работает для строк 1 и 2. В строках 4 и 5 вторая группа содержит 4 символа, но возвращаются только первые 3 символа. В строках 6 и 7 во второй группе только 2 символа, поэтому наша формула поиска Excel возвращает тире после них.

    Если бы вы хотели вернуться все символы между 1-м и 2-м вхождениями определенного символа (в данном примере - тире), как вы поступите? Вот ответ:

    =MID(A2, FIND("-",A2)+1, FIND("-", A2, FIND("-",A2)+1) - FIND("-",A2)-1)

    Чтобы лучше понять эту формулу MID, давайте рассмотрим ее аргументы по очереди:

    • Первый аргумент (текст). Это текстовая строка, содержащая символы, которые вы хотите извлечь, ячейка A2 в данном примере.
    • Второй аргумент (start_position). Задает позицию первого символа, который вы хотите извлечь. Вы используете функцию FIND, чтобы найти первое тире в строке и добавить 1 к этому значению, потому что вы хотите начать с символа, следующего за тире: FIND("-",A2)+1.
    • 3-й аргумент (num_chars). Указывает количество символов, которое вы хотите вернуть. В нашей формуле это самая сложная часть. Вы используете две функции FIND (или SEARCH), одна определяет позицию первого тире: FIND("-",A2). А другая возвращает позицию второго тире: FIND("-", A2, FIND("-",A2)+1). Затем вы вычитаете первое из второго, а затем вычитаете 1, потому что вы не хотите, чтобыВ результате вы получите количество символов между 1-м и 2-м тире, что как раз то, что нам нужно. Это значение вы передаете в аргумент num_chars функции MID.

    Аналогичным образом можно вернуть 3 символа после 2-го тире:

    =MID(A2, FIND("-",A2, FIND("-", A2, FIND("-",A2)+1) +2), 3)

    Или извлеките все символы между 2-м и 3-м тире:

    =MID(A2, FIND("-", A2, FIND("-", A2)+1)+1, FIND("-", A2, FIND("-", A2, FIND("-", A2)+1)+2) - FIND("-", A2, FIND("-", A2)+1)-1)

    Пример 4. Найти текст между круглыми скобками

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

    Для этого вам понадобится функция MID, чтобы вернуть нужное количество символов из строки, и функция Excel FIND или SEARCH, чтобы определить, с чего начать и сколько символов извлечь.

    =MID(A2,SEARCH("(",A2)+1, SEARCH(")",A2)-SEARCH("(",A2)-1)

    Логика этой формулы похожа на те, которые мы обсуждали в предыдущем примере. И снова, самой сложной частью является последний аргумент, который сообщает формуле, сколько символов нужно вернуть. Это довольно длинное выражение в аргументе num_chars делает следующее:

    • Во-первых, вы находите положение закрывающей скобки: ПОИСК(")",A2)
    • После этого вы определяете положение открывающей скобки: ПОИСК("(",A2)
    • Затем вычисляется разница между положением закрывающей и открывающей скобок и из этого числа вычитается 1, потому что ни одна из скобок в результате не нужна: ПОИСК(")",A2)-ПОИСК("(",A2))-1

    Естественно, ничто не мешает вам использовать функцию Excel FIND вместо SEARCH, поскольку чувствительность к регистру или нечувствительность к регистру в данном примере не имеет значения.

    Надеюсь, это руководство пролило свет на то, как использовать функции ПОИСК и НАЙТИ в Excel. В следующем руководстве мы подробно рассмотрим функцию ЗАМЕНА, так что следите за новостями. Спасибо за чтение!

    Скачать рабочую тетрадь для практических занятий

    Примеры формул FIND и SEARCH

    Майкл Браун — увлеченный технологический энтузиаст, стремящийся упростить сложные процессы с помощью программных инструментов. Имея более чем десятилетний опыт работы в технологической отрасли, он отточил свои навыки в Microsoft Excel и Outlook, а также в Google Sheets и Docs. Блог Майкла посвящен тому, чтобы делиться своими знаниями и опытом с другими, предоставляя простые советы и учебные пособия для повышения производительности и эффективности. Являетесь ли вы опытным профессионалом или новичком, в блоге Майкла вы найдете ценную информацию и практические советы, которые помогут вам максимально эффективно использовать эти важные программные инструменты.