Оператор ЕСЛИ в Excel для часткового збігу тексту (шаблон)

  • Поділитися Цим
Michael Brown

Намагаєтеся побудувати оператор ЕСЛИ з підставним текстом, але він щоразу дає збій? Проблема не у вашій формулі, а в самій функції - функція ЕСЛИ в Excel не підтримує підставні символи. Однак є спосіб змусити її працювати для часткового збігу тексту, і цей урок навчить вас, як це зробити.

Коли потрібно виконати часткове або нечітке зіставлення в Excel, найочевиднішим рішенням є використання підстановочних знаків. Але що робити, якщо конкретна функція, яку потрібно використовувати, не підтримує підстановочні символи? На жаль, однією з таких функцій є Excel ЕСЛИ. Це особливо прикро, враховуючи, що інші "умовні" функції, такі як СЧЕТЕСЛИ, СУММЕСЛИ і СРЗНАЧ з підстановочними знаками працюють прекрасно.

На щастя, це не та перешкода, яка може зупинити творчого користувача Excel :) Комбінуючи IF з іншими функціями, ви можете змусити його оцінити частковий збіг і отримати гарну альтернативу формулі підстановочного знака Excel IF.

    Чому не працює функція ЕСЛИ в Excel зі спецсимволом

    У прикладі таблиці нижче, припустимо, ви хочете перевірити, чи містять ідентифікатори в першому стовпчику літеру "А". Якщо містить - вивести "Так" в стовпчику B, якщо не містить - вивести "Ні".

    Здається, що включення підстановочного тексту в логічний тест було б простим рішенням:

    =IF(A2="*a*", "Так", "Ні")

    Але, на жаль, це не спрацьовує, формула повертає "Ні" для всіх комірок, навіть тих, що містять "А":

    Чому не спрацьовує оператор IF зі знаком підстановки? Судячи з усього, Excel не розпізнає підстановочні знаки, що використовуються зі знаком рівності або іншими логічними операторами. Придивившись до списку функцій, що підтримують підстановочні знаки, можна помітити, що їх синтаксис припускає, що текст підстановочного знака з'являється безпосередньо в аргументі, подібному до цього:

    =COUNTIF(A2:A10, "*a*")

    Excel ЕСЛИ містить частину тексту

    Тепер, коли ви знаєте причину, чому формула IF зі спецсимволом не працює, давайте спробуємо розібратися, як змусити її працювати. Для цього ми просто вбудуємо в логічний тест IF функцію, яка сприймає спецсимволи, а саме функцію COUNTIF:

    IF(COUNTIF( клітина , "* текст *"), value_if_true, value_if_false)

    При такому підході IF не має проблем з розумінням підстановочних знаків і бездоганно ідентифікує комірки, які містять або "А", або "а" (оскільки COUNTIF не чутливий до регістру):

    =IF(COUNTIF(A2, "*a*"), "Так", "Ні")

    Ця формула потрапляє в комірку B2 або будь-яку іншу комірку в рядку 2, а потім ви можете перетягнути її вниз на стільки комірок, скільки потрібно:

    Це рішення також може бути використано для визначення місцезнаходження нитки певного зразка Якщо припустити, що дійсними є лише ідентифікатори, які складаються з 2 груп по 2 символи, розділених дефісом, то для їх ідентифікації можна використовувати рядок підстановки "??-??":

    =IF(COUNTIF(A2, "??-??"), "Valid", "")

    Як працює ця формула:

    Для логічного тесту ЯКЩО використовується функція СЧЕТЕСЛИ, яка підраховує кількість комірок, що відповідають заданому рядку підстановки. Оскільки діапазон критеріїв - це одна комірка (A2), результат завжди дорівнює 1 (збіг знайдено) або 0 (збіг не знайдено). Враховуючи, що 1 дорівнює ІСТИНА, а 0 - ХИБНІСТЬ, формула повертає "Дійсно" (значення_якщо_істина), якщо підрахунок дорівнює 1, і порожній рядок (значення_якщо_хибність), якщо підрахунокрахунок дорівнює 0.

    Формула пошуку часткових збігів IF ISNUMBER SEARCH формула для часткових збігів

    Інший спосіб змусити Excel IF працювати на частковий збіг тексту - це включити в логічний тест функцію ПОИСК або ПОИСК. Різниця полягає в тому, що функція ПОИСК чутлива до регістру, а функція ПОИСК - ні.

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

    Не залежить від регістру формула часткового збігу:

    IF(ISUMBER(SEARCH(" текст ", клітина )), value_if_true, value_if_false)

    З урахуванням особливостей конкретного випадку формула часткового збігу:

    IF(ISUMBER(FIND(" текст ", клітина )), value_if_true, value_if_false)

    Оскільки обидві функції призначені для виконання збігу типу "клітинка містить", підстановочні знаки в цьому випадку не потрібні.

    Наприклад, для виявлення ідентифікаторів, що містять літери "А" або "а", формула має вигляд:

    =IF(ISNUMBER(SEARCH("A", A2)), "Yes", "No")

    Шукати тільки велику літеру "А" і ігнорувати "а", формула така:

    =IF(ISNUMBER(FIND("A", A2)), "Так", "Ні")

    У Б6 на скріншоті нижче ви можете спостерігати різницю в результаті:

    Як працює ця формула:

    В основі формули лежить поєднання НОМЕР і ШУК (або ЗНАЙТИ):

    ISUMBER(SEARCH("A", A2))

    Функція ПОШУК шукає заданий текст ("A" в даному прикладі) і повертає його позицію в рядку A2. Якщо текст не знайдено, повертається помилка #VALUE. Оскільки і ПОШУК, і ЗНАЙТИ призначені для виконання збігу типу "комірка містить", підстановочні знаки в даному випадку не потрібні.

    Функція ISNUMBER перетворює число в ІСТИНУ, а будь-яке інше значення, включаючи помилку, в БРЕХНЮ. Логічне значення переходить безпосередньо до логічного тесту IF. У нашому випадку A2 містить "A", тому ISNUMBER повертає ІСТИНУ:

    IF(TRUE, "Так", "Ні")

    У результаті функція IF повертає значення, встановлене для value_if_true аргумент, який є "так".

    Excel оператор IF OR зі спеціальними символами

    Потрібно визначити комірки, які містять один із текстових рядків підстановки? У цьому випадку можна поєднати класичний оператор ЕСЛИ АБО з розглянутою вище формулою ПОИСК ПО СЧЕТЧИКУ або ПОИСК ПО ЧИСЛУ.

    Наприклад, для пошуку "aa" АБО "bb" в комірці A2 без урахування регістру літер і повернення "Yes", якщо одна з них знайдена, використовуйте одну з цих формул:

    =IF(OR(ISNUMBER(ПОШУК("aa", A2)), ISNUMBER(ПОШУК("bb", A2))), "Так", "")

    або

    =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& "*")), "Так", "")

    Наведені вище формули добре працюють для 2 часткових збігів, але при пошуку 3 і більше вони стають занадто довгими. У цьому випадку є сенс підійти до завдання інакше:

    Передати у функцію ПОИСК декілька підрядків у константі масиву, підрахувати повернуті числа і перевірити, чи результат більше нуля (що означатиме, що хоча б один з підрядків знайдено):

    =IF(COUNT(SEARCH({"aa", "bb"}, A2))>0, "Yes", "")

    Таким чином, ви отримаєте точно такий же результат з більш компактною формулою:

    Формула ЕСЛИ И в Excel зі спеціальними символами

    Коли потрібно перевірити, чи містить комірка два або більше різних підрядків, найпростіше використовувати функцію СЧЕТЕСЛИ з підстановочними знаками для логічного тесту.

    Припустимо, ви хочете знайти клітинки в стовпці A, які містять і "b", і "2". Щоб це зробити, використовуйте "*b*" і "*2*" для критеріїв COUNTIFS і A2 для діапазону критеріїв:

    =IF(COUNTIFS(A2, "*b*", A2, "*2*"), "Так", "")

    Інший спосіб - використовувати формулу ЯКЩО І разом з ПОШУК ЗА НОМЕРАМИ:

    =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)), "Так", "")

    Якщо ви віддаєте перевагу використанню більш компактних формул, то, можливо, вам більше сподобається підхід з використанням констант масиву. Формула ЕСЛИ ПОИСК СЧЁТ дуже схожа на попередній приклад, але оскільки цього разу обидва підрядки повинні з'явитися в A2, ми перевіряємо, чи дорівнює їх кількість 2:

    =IF(COUNT(SEARCH({"b", "2"}, A2))=2, "Так", "")

    Це основні способи використання підстановочного знака в операторі IF в Excel. Якщо ви знаєте якісь інші рішення, інші користувачі неодмінно будуть вдячні, якщо ви поділитеся своїм досвідом в коментарях. Дякую за прочитання і сподіваюся побачити вас на нашому блозі наступного тижня!

    Практичний посібник для завантаження

    Приклади формул підстановочних знаків Excel IF (файл .xlsx)

    Майкл Браун — відданий ентузіаст технологій із пристрастю до спрощення складних процесів за допомогою програмних засобів. Маючи понад десятирічний досвід роботи в технологічній індустрії, він відточив свої навички роботи з Microsoft Excel і Outlook, а також із Google Таблицями та Документами. Блог Майкла присвячений тому, щоб поділитися своїми знаннями та досвідом з іншими, надаючи прості поради та навчальні посібники для підвищення продуктивності та ефективності. Незалежно від того, чи є ви досвідченим професіоналом чи початківцем, блог Майкла пропонує цінну інформацію та практичні поради щодо отримання максимальної користі від цих основних програмних інструментів.