Формула поиска текста в excel

Формула поиска текста в excel

Функция ПОИСК (SEARCH) в Excel используется для определения расположения текста внутри какого-либо текста и указания его точной позиции.

Что возвращает функция

Функция возвращает числовое значение, обозначающее стартовую позицию искомого текста внутри другого текста. Позиция обозначает порядковый номер символа, с которого начинается искомый текст.

Синтаксис

=SEARCH(find_text, within_text, [start_num]) – английская версия

=ПОИСК(искомый_текст;просматриваемый_текст;[начальная_позиция]) – русская версия

Аргументы функции

  • find_text (искомый_текст) – текст или текстовая строка которую вы хотите найти;
  • within_text (просматриваемый_текст) – текст, внутри которого вы осуществляете поиск;
  • [start_num] ([начальная_позиция]) – числовое значение, обозначающее позицию, с которой вы хотите начать поиск. Если не указать этот аргумент, то функци начнет поиск с начала текста.

Дополнительная информация

  • Если стартовая позиция поиска не указана, то поиск текста осуществляется сначала текста;
  • Функция не чувствительна к регистру. Если вам нужна чувствительность к регистру, то используйте функцию НАЙТИ;
  • Функция может обрабатывать подстановочные знаки. В Excel существует три подстановочных знака – ?, *,

.

  • знак “?” – сопоставляет любой одиночный символ;
  • знак “*” – сопоставляет любые дополнительные символы;
  • знак “

” – используется, если нужно найти сам вопросительный знак или звездочку.

  • Функция возвращает ошибку, в случае если искомый текст не найден.
  • Примеры использования функции ПОИСК в Excel

    Пример 1. Ищем слово внутри текстовой строки (с начала)

    На примере выше видно, что когда мы ищем слово “доброе” в тексте “Доброе утро”, функция возвращает значение “1”, что соответствует позиции слова “доброе” в тексте “Доброе утро”.

    Так как функция не чувствительна к регистру, нет разницы каким образом мы указываем искомое слово “доброе”, будь то “ДОБРОЕ”, “Доброе”, “дОброе” и.т.д. функция вернет одно и то же значение.

    Если вам необходимо осуществить поиск чувствительный к регистру – используйте функцию НАЙТИ в Excel.

    Пример 2. Ищем слово внутри текстовой строки (с указанием стартовой позиции поиска)

    Третий аргумент функции указывает на порядковый номер позиции внутри текста, с которой будет осуществлен поиск. На примере выше, функция возвращает значение “1” при поиске слова “доброе” в тексте “Доброе утро”, начиная свой поиск с первой позиции.

    Вместе с тем, если мы указываем функции, что поиск следует начинать со второго символа текста “Доброе утро”, то есть функция в этом случае видит текст как “оброе утро” и ищет слово “доброе”, то результатом будет ошибка.

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

    Пример 3. Поиск слова при наличии нескольких совпадений в тексте

    Функция начинает искать текст со стартовой позиции которую мы можем указать в качестве аргумента, или она начнет поиск с начала текста автоматически. На примере выше, мы ищем слово “доброе ” в тексте “Доброе доброе утро” со стартовой позицией для поиска “1”. В этом случае функция возвращает “1”, так как первое найденное слово “Доброе” начинается с первого символа текста.

    Читайте также:  Что такое листинг программы

    Если мы укажем функции начало поиска, например, со второго символа, то результатом вычисления функции будет “8”.

    Пример 4. Используем подстановочные знаки при работе функции ПОИСК в Excel

    При поиске функция учитывает подстановочные знаки. На примере выше мы ищем текст “c*l”. Наличие подстановочного знака “*” в данном запросе обозначает что мы ищем любо слово, которое начинается с буквы “c” и заканчивается буквой “l”, а что между этими двумя буквами не важно. Как результат, функция возвращает значение “3”, так как в слове “Excel”, расположенном в ячейке А2 буква “c” находится на третьей позиции.

    Функция ВПР и другие поисковые функции выборки в Excel не учитывают большинства символов в просматриваемых значениях. Например, для значений «Оплата» и «оплата» функция ВПР будет возвращать один и тот же результат. Если большая или маленькая буква имеют значения воспользуйтесь функцией СОВПАД.

    Как выполнить точный поиск текстового значения в столбце Excel

    Ниже на рисунке представлен список идентификаторов MAC-адресов сетевых карт компьютеров и даты последнего входа пользователя в панель администрирования. Идентификаторы на строках листа Excel 3 и 10 выглядят идентичными за исключением двух символов по средине (Ef и eF). Допустим нам необходимо найти идентификатор MAC-адреса сетевой карты с учетом регистра символов (большая или маленькая буква). Формула:

    На выше приведенном рисунке отображены результаты вычислений сразу двух формул. В первой формуле использована функция ВПР в ячейке D4: =ВПР(D3;A2:B11;2;ЛОЖЬ), а во второй СОВПАД. Хоть в ячейке D3 введен идентификатор MAC-адреса с 10-ой строки листа, функция возвращает в результате вычислений значения с 3-й строки.

    Вторая формула, приведенная ниже с функцией СОВПАД возвращает правильный результат:

    Теперь вы узнаете, как необходимо использовать функции СУММПРОИЗВ и СТРОКА с целью определения номера строки для функции ИНДЕКС составив простую формулу. Функция СОВПАД содержит 2 аргумента и сравнивает их значения между собой. В результате вычисления возвращает логическое значение ИСТИНА если оба ее аргументы идентичны (с учетом верхнего и нижнего регистра).

    Принцип работы формулы для точного совпадения при поиске по столбцам

    Функция СОВПАД умещенная в функцию СУММПРОИЗВ либо в формулу массива может быть использована для сравнения диапазонов текстовых значений с другими типами значений. В результат будет возвращена таблица массива с логическими значениями ИСТИНА и ЛОЖЬ. В данном примере функция СОВПАД возвращает значение ИСТИНА только при сравнении значений ячеек A10 и D3. При арифметической операции внутри функции умножения таблицы массива на таблицу, возвращенную функцией СТРОКА значение ИСТИНА заменяется на число 1, а ЛОЖЬ на 0. В результате чего функция СУММПРИОЗВ суммирует все значения и возвращает число 10 для функции ИНДЕКС. Ведь все остальные значения равны ЛОЖЬ=0, а все что умножаем на ноль =0. Схематически принцип работы функции СУММПРОИЗВ можно изобразить на такой таблице:

    Читайте также:  Мегафон не работают исходящие звонки

    Число 10 возвращено через функцию СУММПРОИЗВ используется как аргумент с номером строки в функции ИНДЕКС, которая возвращает содержимое смежной ячейки справа B10 на 10-ой строке листа в диапазоне B1:B11.

    Предположим, вы получаете от поставщика/заказчика/клиента заполненную таблицу с перечнем продукции:

    и эту таблицу необходимо сравнить с артикулами/кодами товара в имеющемся у вас каталоге продукции:

    Как видно — в нашем каталоге только артикулы без наименований. У заказчика же помимо артикулов еще и название товара, т.е. много лишнего. И вам надо понять какие товары присутствуют в вашем каталоге, а какие нет:

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

    Tips_All_AnyoneOfArray.xls (49,5 KiB, 15 850 скачиваний)

    На листе "Заказ" в этом файле таблица, полученная от заказчика, а на листе "Каталог" наши артикулы.
    Сама формула на примере файла будет выглядеть так:

    =ПРОСМОТР(2;1/ПОИСК(Каталог!$A$2:$A$11; A2 );Каталог!$A$2:$A$11)
    =LOOKUP(2,1/SEARCH(Каталог!$A$2:$A$11,A2),Каталог!$A$2:$A$11)
    эта формула вернет название артикула, если в тексте есть хоть один артикул из каталога и #Н/Д (#N/A) если артикул не найден в каталоге.
    Прежде чем облагородить эту формулу всякими дополнениями(вроде виде убирания ненужных #Н/Д ) давайте разберемся как она работает.
    Функция ПРОСМОТР (LOOKUP) ищет заданное значение( 2 ) в указанном диапазоне(массиве — второй аргумент). В качестве диапазона обычно приводится массив ячеек, но функция ПРОСМОТР имеет первую нужную нам особенность — она старается преобразовать непосредственно в массив любое выражение, записанное вторым аргументом. Иными словами она вычисляет выражение в этом аргументе, чем мы и пользуемся, подставив в качестве второго аргумента выражение: 1/ПОИСК(Каталог!$A$2:$A$11;A2) . Часть ПОИСК(Каталог!$A$2:$A$11;A2) ищет поочередно каждое значение из списка Каталога в ячейке A2 (наименование из таблицы Заказчика). Если значение найдено, то возвращается номер позиции первого символа найденного значения. Если значение не найдено — возвращается значение ошибки #ЗНАЧ!(#VALUE!). Теперь вторая особенность: функция требует расположения данных в массиве в порядке возрастания. Если данные расположены иначе — функция будет просматривать массив до тех пор, пока не найдет значение больше искомого, но максимально к нему приближенное(хотя если данные позволяют — для более точного поиска все же лучше отсортировать список по возрастанию). Поэтому сначала мы 1 делим на выражение ПОИСК(Каталог!$A$2:$A$11;A2) , чтобы получить массив вида: <0,0181818181818182:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!>
    Ну а в качестве искомого значения мы подсовываем функции число 2 — заведомо большее число, чем может вообще встретиться в массиве(т.к. единица, поделенная на любое число будет меньше двух). И как результат мы получим позицию в массиве, в которой встречается последнее совпадение из каталога. После чего функция ПРОСМОТР запомнит эту позицию и вернет значение из массива Каталог!$A$2:$A$11 (третий аргумент), записанное в этом массиве для этой позиции.
    Вы можете просмотреть этапы вычисления функции самостоятельно для каждой ячейки, я здесь просто приведу этапы чуть в расширенном для понимания виде:

    Читайте также:  Оптимизация озу в windows 7

    Теперь немного облагородим функцию и сделаем еще пару реализаций
    Реализация 1:
    Вместо артикулов и #Н/Д выведем для найденных позиций "Есть" , а для отсутствующих "Не найден в каталоге" :
    =ЕСЛИ(ЕНД(ПРОСМОТР(2;1/ПОИСК(Каталог!$A$2:$A$11;A2)));"Не найден в каталоге";"Есть")
    =IF(ISNA(LOOKUP(2,1/SEARCH(Каталог!$A$2:$A$11,A2))),"Не найден в каталоге","Есть")
    работа функции проста — с ПРОСМОТР(LOOKUP) разобрались, поэтому остались только ЕНД и ЕСЛИ.
    ЕНД (ISNA) возвращает ИСТИНА (TRUE) если выражение внутри неё возвращает значение ошибки #Н/Д (#N/A) и ЛОЖЬ (FALSE) если выражение внутри не возвращает значение этой ошибки.
    ЕСЛИ (IF) возвращает то, что указано вторым аргументом если выражение в первом равно ИСТИНА (TRUE) и то, что указано третьим аргументом, если выражение первого аргумента ЛОЖЬ (FALSE) .

    Реализация 2:
    Вместо #Н/Д выведем "Не найден в каталоге" , но при этом если артикулы найдены — выведем названия этих артикулов:
    =ЕСЛИОШИБКА(ПРОСМОТР(2;1/ПОИСК(Каталог!$A$2:$A$11;A2);Каталог!$A$2:$A$11);"Нет в каталоге")
    =IFERROR(LOOKUP(2,1/SEARCH(Каталог!$A$2:$A$11,A2),Каталог!$A$2:$A$11),"Нет в каталоге")
    Про функция ЕСЛИОШИБКА (IFERROR) я подробно рассказывал в этой статье: Как в ячейке с формулой вместо ошибки показать 0.
    Если вкратце, то если выражение, заданное первым аргументом функции, возвращает значение любой ошибки, то функция вернет то, что записано вторым аргументом(в нашем случае это текст "Не найден в каталоге" ). Если же выражение не возвращает ошибку, то функция ЕСЛИОШИБКА запишет то значение, которое было получено выражением в первом аргументе(в нашем случае это будет наименование артикула).

    Реализация 3
    Надо не просто определить какому артикулу соответствует, но и вывести цену для наименования по этому артикулу(сами цены должны быть расположены в столбце B листа Каталог):
    =ЕСЛИОШИБКА(ПРОСМОТР(2;1/ПОИСК(Каталог!$A$2:$A$11;A2);Каталог!$B$2:$B$11);"")
    =IFERROR(LOOKUP(2,1/SEARCH(Каталог!$A$2:$A$11,A2),Каталог!$B$2:$B$11),"")

    Пара важных замечаний:

    • данные на листе с артикулами не должны содержать пустых ячеек . Иначе с большой долей вероятности формула будет возвращать значение именно пустой ячейки, а не то, которое подходит под условия поиска
    • формула осуществляет поиск таким образом, что ищется любое совпадение. Например, в качестве артикула записана цифра 1, а в строке наименований может встречаться помимо целой 1 еще и 123, 651123, FG1412NM и т.п. Для всех этих наименований может быть подобран артикул 1, т.к. он содержится в каждом наименовании. Как правило это может произойти, если артикул 1 расположен в конце списка

    Поэтому желательно перед использованием формулы отсортировать список по возрастанию(от меньшего к большему, от А до Я).

    В приложенном в начале статьи примере вы найдете все разобранные варианты.

    Если же вам понадобится выводить все наименования, то можно воспользоваться функцией СОДЕРЖИТ_ОДНО_ИЗ из моей надстройки MulTEx.

    Статья помогла? Поделись ссылкой с друзьями!

    Ссылка на основную публикацию
    Фоллаут 76 официальный сайт на русском
    Игра Fallout 76 Модификация силовой брони и оружия в честь 300-летия США Голова Волт-Боя Патриотический костюм американца Праздничное приветствие Волт-Боя...
    Установка образа на виртуальную машину
    VirtualBox представляет собой виртуальную машину с возможностью запустить операционные системы, отличные от установленной на компьютере. Это обычно требуется для тестирования...
    Установка образа на жесткий диск
    Приветствую вас, друзья. Наверное, каждый пользователь компьютера или ноутбука встречался с ситуацией, когда он понимает, что настало время переустановки операционной...
    Фольксваген тигуан 2 литра механика
    Все минусы Фольксваген Тигуан 2018-2019 ➖ Качество отделочных материалов ➖ Расход топлива Плюсы ➕ Динамика ➕ Управляемость ➕ Удобный салон...
    Adblock detector