Оглавление
Пытаетесь построить оператор IF с подстановочным текстом, но каждый раз ничего не получается? Проблема не в вашей формуле, а в самой функции - Excel IF не поддерживает подстановочные символы. Однако есть способ заставить ее работать для частичного совпадения текста, и в этом руководстве вы узнаете, как это сделать.
Когда вы хотите выполнить частичное или нечеткое сопоставление в Excel, наиболее очевидным решением является использование подстановочных знаков. Но что если конкретная функция, которую вам нужно использовать, не поддерживает подстановочные знаки? К сожалению, Excel IF является одной из таких функций. Это особенно досадно, учитывая, что другие "условные" функции, такие как COUNTIF, SUMIF и AVERAGEIFS, прекрасно работают с подстановочными знаками.
К счастью, это не то препятствие, которое может остановить творческого пользователя Excel :) Комбинируя IF с другими функциями, вы можете заставить его оценивать частичное совпадение и получить хорошую альтернативу формуле подстановочного знака Excel IF.
Почему функция Excel IF с подстановочным знаком не работает
В приведенном ниже примере таблицы, предположим, вы хотите проверить, содержат ли идентификаторы в первом столбце букву "А". Если нашли - выведите "Да" в столбце В, если нет - выведите "Нет".
Кажется, что включение текста с подстановочным знаком в логический тест было бы простым решением:
=IF(A2="*a*", "Да", "Нет")
Но, к сожалению, это не работает. Формула возвращает "Нет" для всех ячеек, даже для тех, которые содержат "A":
Почему оператор IF не работает? Судя по всему, Excel не распознает подстановочные знаки, используемые со знаком равенства или другими логическими операторами. Если внимательно посмотреть на список функций, поддерживающих подстановочные знаки, то можно заметить, что их синтаксис предполагает, что текст подстановочного знака должен появляться непосредственно в аргументе, как, например, здесь:
=COUNTIF(A2:A10, "*a*")
Excel IF содержит неполный текст
Теперь, когда вы знаете причину, по которой формула IF с подстановочными знаками не работает, давайте попробуем разобраться, как заставить ее работать. Для этого мы просто встроим функцию, которая принимает подстановочные знаки в логический тест IF, а именно функцию COUNTIF:
IF(COUNTIF( ячейка , "* текст *"), value_if_true, value_if_false)При таком подходе IF не имеет проблем с пониманием подстановочных знаков и безупречно определяет ячейки, содержащие либо "A", либо "a" (поскольку COUNTIF не чувствителен к регистру):
=IF(COUNTIF(A2, "*a*"), "Да", "Нет")
Эта формула переходит в ячейку B2 или любую другую ячейку в ряду 2, а затем вы можете перетащить ее вниз на столько ячеек, сколько необходимо:
Это решение также может быть использовано для определения местоположения строки определенного образца Если предположить, что действительными являются только идентификаторы, состоящие из 2 групп по 2 символа, разделенных дефисом, то для их идентификации можно использовать строку "??-??":
=IF(COUNTIF(A2, "??-??"), "Valid", "")
Как работает эта формула:
Для логической проверки IF мы используем функцию COUNTIF, которая подсчитывает количество ячеек, соответствующих заданной строке подстановочного знака. Поскольку диапазон критериев - одна ячейка (A2), результат всегда равен 1 (соответствие найдено) или 0 (соответствие не найдено). Учитывая, что 1 соответствует TRUE, а 0 - FALSE, формула возвращает "Valid" (значение_если_true), когда счетчик равен 1, и пустую строку (значение_если_false), когдасчетчик равен 0.
IF ISNUMBER Формула поиска для частичных совпадений
Другой способ заставить Excel IF работать для частичного совпадения текста - включить в логический тест функцию FIND или SEARCH. Разница в том, что FIND чувствительна к регистру, а SEARCH - нет.
Итак, в зависимости от того, хотите ли вы рассматривать строчные и прописные буквы как одинаковые или разные символы, одна из этих формул будет работать отлично:
Без учета регистра формула частичного совпадения:
IF(ISNUMBER(SEARCH(" текст ", ячейка )), value_if_true, value_if_false)С учетом регистра формула частичного совпадения:
Поскольку обе функции предназначены для выполнения поиска по типу "ячейка содержит", подстановочные знаки в данном случае не нужны.
Например, для обнаружения идентификаторов, содержащих "A" или "a", формула имеет следующий вид:
=IF(ISNUMBER(SEARCH("A", A2)), "Да", "Нет")
Чтобы искать только заглавную букву "A" и игнорировать "a", формула выглядит следующим образом:
=IF(ISNUMBER(FIND("A", A2)), "Да", "Нет")
В пункте B6 на скриншоте ниже вы можете наблюдать разницу в результатах:
Как работает эта формула:
В основе формулы лежит комбинация ISNUMBER и SEARCH (или FIND):
ISNUMBER(SEARCH("A", A2))
Функция ПОИСКПОЗ ищет указанный текст ("A" в данном примере) и возвращает его позицию в строке в A2. Если текст не найден, возвращается ошибка #VALUE. Поскольку и ПОИСКПОЗ, и НАЙТИ предназначены для выполнения поиска типа "ячейка содержит", подстановочные знаки в данном случае не нужны.
Функция ISNUMBER преобразует число в TRUE, а любое другое значение, включая ошибку, в FALSE. Логическое значение переходит непосредственно к логическому тесту IF. В нашем случае A2 содержит "A", поэтому ISNUMBER возвращает TRUE:
IF(TRUE, "Yes", "No")
В результате IF возвращает значение, заданное для параметра значение_если_истина аргумент, который означает "Да".
Оператор Excel IF OR с подстановочными знаками
Нужно определить ячейки, содержащие одну из текстовых строк подстановочного знака? В этом случае вы можете объединить классический оператор IF OR с формулой COUNTIF или ISNUMBER SEARCH, о которой говорилось выше.
Например, для поиска "aa" ИЛИ "bb" в A2 без учета регистра букв и возврата "Yes", если найдено одно из них, используйте одну из этих формул:
=IF(OR(ISNUMBER(SEARCH("aa", A2)), ISNUMBER(SEARCH("bb", A2))), "Yes", "")
или
=IF(OR(COUNTIF(A2, "*aa*"), COUNTIF(A2, "*bb*")), "Да", "")
Сложение двух функций COUNTIF также работает. В этом случае знак плюс работает как оператор OR:
=IF(COUNTIF(A3, "*aa*") + COUNTIF(A3, "*bb*"), "Да", "")
Вместо того чтобы жестко кодировать строки подстановочных знаков в формуле, вы можете ввести их в отдельные ячейки, например, D2 и F2, как показано на скриншоте ниже. Обратите внимание, что ссылки на эти ячейки закрыты знаком $, чтобы формула правильно копировалась в нижележащие ячейки:
=IF(OR(COUNTIF(A2, "*"&$D$2& "*"), COUNTIF(A2, "*"&$F$2& "*")), "Yes", "")
Приведенные выше формулы хорошо работают для двух частичных совпадений, но если вы ищете три или более, они станут слишком длинными. В этом случае имеет смысл подойти к задаче по-другому:
Передайте функции ПОИСКПОЗ несколько подстрок в константе массива, подсчитайте возвращаемые числа и проверьте, больше ли результат нуля (это будет означать, что хотя бы одна из подстрок найдена):
=IF(COUNT(SEARCH({"aa", "bb"}, A2))>0, "Да", "")
Таким образом, вы получите точно такой же результат с более компактной формулой:
Формула Excel ЕСЛИ И с подстановочными знаками
Когда вы хотите проверить, содержит ли ячейка две или более различных подстрок, самый простой способ - использовать функцию COUNTIFS с подстановочными знаками для логической проверки.
Предположим, вы хотите найти ячейки в столбце A, которые содержат и "b", и "2". Чтобы это сделать, используйте "*b*" и "*2*" для критериев COUNTIFS и A2 для диапазона критериев:
=IF(COUNTIFS(A2, "*b*", A2, "*2*"), "Yes", "")
Другой способ - использовать формулу IF AND вместе с ISNUMBER SEARCH:
=IF(AND(ISNUMBER(SEARCH("b", A2)), ISNUMBER(SEARCH("2", A2))), "Yes", "")
Хотя мы не включаем в эту формулу никаких символов подстановки, она работает как поиск двух строк подстановки ("*b*" и "*2*") в одной ячейке.
Конечно, ничто не мешает вам ввести искомые значения в заранее определенные ячейки, в нашем случае D2 и F2, и подставить ссылки на ячейки в формулу:
=IF(AND(ISNUMBER(SEARCH($D$2, A2)), ISNUMBER(SEARCH($F$2, A2))), "Yes", "")
Если вы предпочитаете использовать более компактные формулы везде, где это возможно, то вам может больше понравиться подход с использованием константы массива. Формула IF COUNT SEARCH очень похожа на предыдущий пример, но поскольку на этот раз обе подстроки должны появиться в A2, мы проверяем, равен ли счетчик 2:
=IF(COUNT(SEARCH({"b", "2"}, A2))=2, "Да", "")
Это основные методы использования подстановочного знака в операторе IF в Excel. Если вы знаете другие решения, другие пользователи будут благодарны, если вы поделитесь своим опытом в комментариях. Я благодарю вас за чтение и надеюсь увидеть вас в нашем блоге на следующей неделе!
Рабочая тетрадь для тренировок для скачивания
Примеры формул подстановочных знаков Excel IF (файл .xlsx)