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

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

Например, при работе с клиентскими базами или списками товаров в интернет-магазинах пользователи могут захотеть извлекать записи, в которых фигурирует только часть искомого наименования или описания.

Это позволяет значительно сократить время на поиск и обработку информации, особенно если в таблице содержится большое количество данных.

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

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

Два распространенных подстановочных знака, которые распознает Excel, — это звездочка (*) и вопросительный знак (?). Тильда (~) заставляет Excel обрабатывать эти символы как обычные, а не подстановочные знаки.

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

Звездочка как подстановочный знак

Звездочка (*) — это наиболее общий подстановочный знак, который может представлять любое количество символов. Например:

  • к*- соответствует любому слову, которое начинается с «к», например коткапустакит, и т. д.
  • *к- заменяет любую текстовую строку, заканчивающуюся на «к», например лук,  маяксовок, и т. д.
  • *к*- представляет любое слово, содержащее «к» в любой позиции, например котлук, арка, и т. д.

Вопросительный знак как подстановочный знак

Вопросительный знак (?) представляет любой отдельный символ . Он может помочь вам получить более точные данные при поиске частичного совпадения. Например:

  • ? - соответствует любой записи, содержащей один символ, например, «a», «1», «-» и т. д.
  • ?? - заменяет любые два символа, например, «ко», «11», «a6» и т. д.
  • ???-??? - представляет собой любой текст, содержащий 2 группы по 3 символа, разделенных дефисом, например ABC-DEF,  АБВ-123111-222, и т. д.

Тильда как подстановочный знак-аннулировщик

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

  • *~?- находит любую запись, заканчивающуюся вопросительным знаком, например Что?,Сколько стоит?, и т. д.
  • *~** - находит любые данные, содержащие звездочку, например*1*11*1-мар-2024* и т. д. В этом случае первая и третья звездочки являются подстановочными знаками, а вторая обозначает буквальный символ звездочки.

Как определить частичное совпадение при помощи подстановочных знаков 

Почему не работает формула ЕСЛИ

Всякий раз, когда вы хотите определить частичное или нечеткое сопоставление в Excel, наиболее очевидным решением является использование подстановочных знаков. 

Пытаетесь построить условие ЕСЛИ с подстановочным текстом, но каждый раз терпите неудачу? Проблема не в вашей формуле, а в самой функции. ЕСЛИ не поддерживает подстановочные символы. 

 Это особенно разочаровывает, учитывая, что другие «условные» функции, такие как СЧËТЕСЛИ, СУММЕСЛИ и СРЗНАЧЕСЛИ, прекрасно работают с подстановочными знаками.

В примере таблицы ниже, предположим, вы хотите проверить, содержат ли идентификаторы в первом столбце букву «A». Если найдено — вывести «Да» в столбце B, если нет — показать «Нет».

Кажется, включение подстановочного текста в логический тест было бы простым решением:

=ЕСЛИ(A2= "*a*";"Да"; "Нет")

Но, к сожалению, это не работает. Формула возвращает "Нет" для всех ячеек, даже тех, которые содержат "A":

Формула ЕСЛИ не работает со знаками подстановки

По всей видимости, Excel не распознает подстановочные знаки, используемые со знаком равенства или другими логическими операторами.

К счастью, это не препятствие, которое может остановить креативного пользователя Excel :) Объединив функцию ЕСЛИ с другими функциями, вы можете заставить ее оценивать частичное совпадение.

Формула ЕСЛИ для частичного совпадения

Теперь, когда вы знаете причину, по которой формула ЕСЛИ с подстановочными знаками не работает, давайте попробуем выяснить, как заставить ее работать. Для этого мы просто встроим функцию, которая принимает подстановочные знаки, в логическую проверку ЕСЛИ, например функцию СЧËТЕСЛИ:

ЕСЛИ(СЧЁТЕСЛИ(ячейка; "*текст*"); значение_если_истина; значение_если_ложь)

Здесь функция СЧЁТЕСЛИ выясняет, сколько раз определенный текст встречается в ячейке. Чтобы подсчитать частичные совпадения, вы помещаете подстановочный знак (*) с обеих сторон текста. Если полученное количество больше нуля, то ЕСЛИ возвращает значение_если_истина, в противном случае - значение_если_ложь.

Предположим, у вас есть список заказов в столбце A, и вы хотите определить заказы с буквой «A». Задачу можно выполнить с помощью этой формулы:

=ЕСЛИ(СЧЁТЕСЛИ(A2; "*a*");"Да"; "Нет")

При таком подходе функция ЕСЛИ без проблем распознает подстановочные знаки и безупречно определяет ячейки, содержащие либо «A», либо «a» (поскольку функция СЧËТЕСЛИ  не чувствительна к регистру):

определить приблизительное совпадение при помощи функции СЧËТЕСЛИ

Вместо того чтобы жестко кодировать условие в формуле, вы можете записать его в отдельную ячейку (E1) и сослаться на эту ячейку в вашей формуле:

=ЕСЛИ(СЧЁТЕСЛИ(A2; "*"&$E$1&"*");"Да"; "Нет")

Для корректной работы формулы обязательно зафиксируйте адрес ячейки, содержащей строку, знаком $ ( абсолютная ссылка на ячейку ).

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

=ЕСЛИ(СЧЁТЕСЛИ(A2; "??-??"); "Верно"; "")

подстановочные знаки в функции СЧËТЕСЛИ

Определить частичное совпадение при помощи ПОИСК и НАЙТИ 

Другой способ определить частичное совпадение текста — включить функции ПОИСК или НАЙТИ в логический тест. 

Функция ПОИСК используется для определения позиции первого символа подстроки в строке, тогда как функция НАЙТИ аналогична, но при этом учитывает регистр символов.

Итак, разница в том, что НАЙТИ чувствительна к регистру, а ПОИСК — нет.

Если нужный текст найден в ячейке, то эти функции возвращают позицию первого символа частичного совпадения текстовых строк. Если совпадение не найдено, возвращается ошибка #ЗНАЧ!.

Итак, в зависимости от того, хотите ли вы рассматривать строчные и прописные буквы как одинаковые или как разные символы, одна из этих формул подойдет идеально:

Формула для частичного совпадения без учета регистра :

ЕСЛИ(ЕЧИСЛО(ПОИСК("текст";ячейка)); значение_если_истина; значение_если_ложь)

Формула для частичного совпадения с учетом регистра :

ЕСЛИ(ЕЧИСЛО(НАЙТИ("текст"; ячейка)); значение_если_истина;  значение_если_ложь)

Поскольку обе функции предназначены для выполнения сопоставления типа «ячейка содержит», подстановочные знаки в данном случае не нужны.

Например, для определения кода заказа, содержащего «A» или «a», формула выглядит следующим образом:

=ЕСЛИ(ЕЧИСЛО(ПОИСК("A"; A2)); "Да"; "") 

Чтобы искать только заглавную букву «А» и игнорировать «а», используйте следующую формулу:

=ЕСЛИ(ЕЧИСЛО(НАЙТИ("A"; A2)); "Да"; "") 

На скриншоте ниже вы можете наблюдать разницу в результате:

функции ПОИСК и НАЙТИ для частичного совпадения

Как работает эта формула:

В основе формулы лежит комбинация функций ЕЧИСЛО и ПОИСК (или НАЙТИ):

ЕЧИСЛО(ПОИСК("A"; A2))

Разберем пошагово:

  • Функция ПОИСК ищет текстовую строку и, если строка найдена, возвращает позицию первого символа, в противном случае — ошибку #ЗНАЧ!.
  • Функция ЕЧИСЛО проверяет, был ли поиск успешным или нет. Если ПОИСК вернул какое-либо число, ЕЧИСЛО возвращает ИСТИНА. Если поиск приводит к ошибке, ЕЧИСЛО возвращает ЛОЖЬ.
  • Наконец, функция ЕСЛИ возвращает указанное значение «Да» для ячеек, имеющих значение ИСТИНА в логической проверке, в противном случае — пустую строку ("").

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

=ЕСЛИ(ЕЧИСЛО(ПОИСК($E$1; A2)); "Да"; "")

ВПР по частичному совпадению текста

Теперь рассмотрим, как можно производить поиск значений по частичному совпадению.

Как и многие другие формулы, функция ВПР Excel может использовать следующие подстановочные знаки:

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

Подстановочные знаки оказываются действительно полезными во многих ситуациях:

Предположим, вы хотите найти определенного клиента в приведенной ниже базе данных. Вы не помните точно фамилию, но уверены, что она начинается с «ack».

Чтобы вернуть фамилию из столбца A, используйте следующую подстановочную формулу ВПР:

=ВПР("ков*"; $A$2:$B$10; 1; ЛОЖЬ)

Из предыдущих примеров вы уже знаете, что можно объединить амперсанд (&) и ссылку на ячейку, чтобы создать строку поиска. 

Для нашего примера вы можете выполнить ВПР по частичному совпадению текста следующим образом:

=ВПР(E1&"*"; $A$2:$B$10; 1; ЛОЖЬ)

Искомый фрагмент текста записан в E1

Чтобы получить соответствующий табельный номер из столбца B, используйте это (разница только в номере индекса столбца):

=ВПР(E1&"*"; $A$2:$B$10; 2; ЛОЖЬ)

На рисунке ниже показаны результаты:

поиск ВПР для частичного совпадения с условием

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

=ВПР("*"&E1&"*"; $A$2:$B$10; 1; ЛОЖЬ)

Ниже приведено еще несколько формул ВПР с подстановочными знаками.

Найдите фамилию, заканчивающуюся на «ин»:

=ВПР("*ин"; $A$2:$B$10; 1; ЛОЖЬ)

Получите имя, которое начинается с «Си» и заканчивается на «ов»:

=ВПР("си*ов"; $A$2:$B$10; 1; ЛОЖЬ)

Найдите фамилию из 5 символов:

=ВПР("?????"; $A$2:$B$10; 1; ЛОЖЬ)

Примечания:

  • Для корректной работы формулы ВПР для частичного совпадения с подстановочными знаками, укажите в аргументах формулы, что нужно использовать точное совпадение (последний аргумент — ЛОЖЬ).
  • Если найдено более одного совпадения, возвращается только первое из них .

ПОИСКПОЗ Частичное совпадение с подстановочными знаками

Также вы можете искать частичное совпадение при помощи функции ПОИСКПОЗ.

Как и многие другие функции, ПОИСКПОЗ понимает подстановочные знаки :

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

Примечание. Подстановочные знаки можно использовать только в формулах ПОИСКПОЗ саргументом тип_соответствия равным 0.

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

Найдем позицию в списке, в которой есть частичное совпадение искомого текста и табельного номера.

=ПОИСКПОЗ("*"&E1&"*"; $A$2:$A$10;0)

формула ПОИСКПОЗ для частичного совпадения

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

Также для приблизительного поиска формулой ПОИСКПОЗ вы можете использовать не подстановочные знаки, а функции НАЙТИ и ПОИСК.

В нашем случае это может выглядеть так:

=ПОИСКПОЗ(ИСТИНА;ЕЧИСЛО(НАЙТИ(E1;$A$2:$A$10));0)

В результате мы нашли ту же 6-ю позицию на основе частичного совпадения.

комбинация ПОИСКПОЗ и НАЙТИ для поиска частичного совпадения

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

Для этого используется комбинация функций ИНДЕКС+ПОИСКПОЗ. О преимуществах этой формулы мы говорили ранее в статье ИНДЕКС ПОИСКПОЗ как лучшая альтернатива ВПР.

ИНДЕКС ПОИСКПОЗ по частичному совпадению

Используя те же условные данные, мы реализуем поиск частичного совпадения в формуле ИНДЕКС ПОИСКПОЗ.

Чтобы получить табельный номер, в котором встречается текст «1у», используем эту формулу:

=ИНДЕКС(B2:B10;ПОИСКПОЗ("*"&E1&"*";$B$2:$B$10;0))

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

=ИНДЕКС(A2:A10;ПОИСКПОЗ("*"&E1&"*";$B$2:$B$10;0))

Обратите внимание, что мы извлекаем данные слева от столбца поиска, что невозможно при помощи формулы ВПР. Перед вами – очередной пример так называемого «левого ВПР», о котором мы подробно рассказали здесь: 4 способа, как сделать левый ВПР в Excel.

Результаты вы видите на скриншоте ниже.

извлечь значение при помощи ИНДЕКС ПОИСКПОЗ по частичному совпадению

Как определить есть ли частичное совпадение текста в ячейках

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

Как определить есть ли в двух текстовых ячейках одна и та же подстрока?

Например в тексте разных ячеек указан номер телефона. Как определить, что обе ячейки содержат один и тот же телефон или разные номера?

В одних случаях это может быть один символ, а в некоторых – много символов, поэтому в формуле придётся указывать какое количество общих символов идущих подряд в одном и том же порядке нужно найти в текстах двух ячеек.
Если сравниваемые текстовые строки находятся в ячейках A2 и B2, можно предложить такие формулы:

=СУММ(ЕСЛИОШИБКА(НАЙТИ(ПСТР(A2; СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A2)-C2+1)); C2); B2); 0))>0

Эта формула чувствительна к регистру символов и различает строчные и прописные буквы, так как в ней использована функция НАЙТИ.

Вот другой вариант, в котором регистр не важен:

=СЧЁТ(ПОИСК(ПСТР(A2;СТРОКА(A$1:ИНДЕКС(A:A;ДЛСТР(A2)-C2+1));C2);B2))>0

В столбце С указываем, какое количество совпадающих символов мы ищем.

как определить частичное совпадение ячеек Excel

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

=ОБЪЕДИНИТЬ(",";ИСТИНА;ЕСЛИОШИБКА(ПОИСК(ПСТР(A2;СТРОКА(A$1:ИНДЕКС(A:A;ДЛСТР(A2)-C2+1));C2);B2);""))

Также обратите внимание, что в строке 4 мы имеем разные результаты, так как первая буква в слове «шел» различается по регистру.

Важное замечание! Эти формулы являются формулами массива, поэтому в Excel2019 и более ранних версиях нужно использовать Ctrl+Shift+Enter при вводе.

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