Оглавление
В учебнике приведен ряд примеров формул "Excel if contains", которые показывают, как вернуть что-то в другом столбце, если целевая ячейка содержит требуемое значение, как искать с частичным совпадением и проверять несколько критериев с помощью логики OR, а также AND.
Одной из самых распространенных задач в Excel является проверка того, содержит ли ячейка интересующее значение. Каким может быть это значение? Просто любой текст или число, определенный текст или вообще любое значение (не пустая ячейка).
Существует несколько вариантов формулы "Если ячейка содержит" в Excel, в зависимости от того, какие именно значения вы хотите найти. Как правило, вы используете функцию IF для логического теста и возвращаете одно значение, когда условие выполняется (ячейка содержит) и/или другое значение, когда условие не выполняется (ячейка не содержит). Приведенные ниже примеры охватывают наиболее частые сценарии.
Если ячейка содержит какое-либо значение, то
Для начала давайте посмотрим, как найти ячейки, которые содержат что угодно: любой текст, число или дату. Для этого мы будем использовать простую формулу IF, которая проверяет непустые ячейки.
ЕСЛИ( ячейка "", значение_к_возврату , "")Например, чтобы вернуть значение "Не пусто" в столбце B, если ячейка столбца A в той же строке содержит любое значение, введите следующую формулу в B2, а затем дважды щелкните маленький зеленый квадрат в правом нижнем углу, чтобы скопировать формулу вниз по столбцу:
=IF(A2"", "Не пусто", "")
Результат будет выглядеть примерно так:
Если ячейка содержит текст, то
Если вы хотите найти только ячейки с текстовыми значениями, игнорируя числа и даты, то используйте IF в сочетании с функцией ISTEXT. Вот общая формула для возврата некоторого значения в другой ячейке, если целевая ячейка содержит любой текст :
IF(ISTEXT( ячейка ), значение_к_возврату , "")Предположим, вы хотите вставить слово "да" в столбец B, если ячейка в столбце A содержит текст. Чтобы сделать это, поместите следующую формулу в B2:
=IF(ISTEXT(A2), "Да", "")
Если ячейка содержит число, то
Аналогичным образом можно определить ячейки с числовыми значениями (числа и даты). Для этого используйте функцию IF вместе с ISNUMBER:
IF(ISNUMBER( ячейка ), значение_к_возврату , "")Следующая формула возвращает значение "да" в столбце B, если соответствующая ячейка в столбце A содержит любое число:
=IF(ISNUMBER(A2), "Да", "")
Если ячейка содержит определенный текст
Найти ячейки, содержащие определенный текст (или числа, или даты), очень просто. Вы пишете обычную формулу IF, которая проверяет, содержит ли целевая ячейка нужный текст, и вводите текст, который нужно вернуть, в поле значение_если_истина аргумент.
ЕСЛИ( ячейка =" текст ", значение_к_возврату , "")Например, чтобы узнать, содержит ли ячейка A2 слово "яблоки", используйте эту формулу:
=IF(A2="яблоки", "Да", "")
Если ячейка не содержит определенного текста
Если вам нужен противоположный результат, т.е. возврат некоторого значения в другой столбец, если целевая ячейка не содержит заданного текста ("яблоки"), то сделайте одно из следующих действий.
Введите пустую строку ("") в поле значение_если_истина аргумент, и текст для возврата в значение_если_ложно аргумент:
=IF(A2="яблоки", "", "Не яблоки")
Или, поместите оператор "не равно" в логический_тест и текст для возврата в значение_если_истина:
=IF(A2 "яблоки", "Не яблоки", "")
В любом случае формула даст такой результат:
Если ячейка содержит текст: формула с учетом регистра
Чтобы заставить вашу формулу различать прописные и строчные символы, используйте функцию EXACT, которая проверяет, равны ли две текстовые строки, включая регистр букв:
=IF(EXACT(A2, "APPLES"), "Yes", "")
Вы также можете ввести текстовую строку модели в некоторую ячейку (например, в C1), зафиксировать ссылку на ячейку знаком $ ($C$1) и сравнить целевую ячейку с этой ячейкой:
=IF(EXACT(A2,$C$1), "Да", "")
Если ячейка содержит определенную текстовую строку (частичное совпадение)
Мы закончили с тривиальными задачами и переходим к более сложным и интересным :) В этом примере, чтобы выяснить, является ли данный символ или подстрока частью содержимого ячейки, требуется три различные функции:
IF(ISNUMBER(SEARCH(" текст" , ячейка )), значение_к_возврату ,"")Работает изнутри наружу, вот что делает формула:
- Функция ПОИСКПОЗ ищет текстовую строку, и если строка найдена, возвращает позицию первого символа, в противном случае - ошибку #VALUE!
- Функция ISNUMBER проверяет, был ли ПОИСК успешным или неудачным. Если ПОИСК вернул любое число, ISNUMBER возвращает TRUE. Если ПОИСК привел к ошибке, ISNUMBER возвращает FALSE.
- Наконец, функция IF возвращает заданное значение для ячеек, в которых в логическом тесте стоит TRUE, в противном случае - пустую строку ("").
А теперь давайте посмотрим, как эта общая формула работает в реальных рабочих листах.
Если ячейка содержит определенный текст, поместите значение в другую ячейку
Предположим, у вас есть список заказов в столбце A, и вы хотите найти заказы с определенным идентификатором, скажем, "A-". Задача может быть решена с помощью этой формулы:
=IF(ISNUMBER(SEARCH("A-",A2)), "Valid","")
Вместо того чтобы жестко кодировать строку в формуле, вы можете ввести ее в отдельную ячейку (E1), а затем сослаться на нее в формуле:
=IF(ISNUMBER(SEARCH($E$1,A2)), "Valid","")
Чтобы формула работала правильно, обязательно зафиксируйте адрес ячейки, содержащей строку, знаком $ (абсолютная ссылка на ячейку).
Если ячейка содержит определенный текст, скопируйте его в другой столбец
Если вы хотите скопировать содержимое действительных ячеек в другое место, просто укажите адрес оцениваемой ячейки (A2) в поле значение_если_истина аргумент:
=IF(ISNUMBER(SEARCH($E$1,A2)),A2,"")
На скриншоте ниже показаны результаты:
Если ячейка содержит определенный текст: формула с учетом регистра
В обоих приведенных выше примерах формулы не чувствительны к регистру. В ситуациях, когда вы работаете с данными, чувствительными к регистру, используйте функцию FIND вместо SEARCH, чтобы различать регистр символов.
Например, следующая формула определит только заказы с прописной буквой "A-", игнорируя строчную "a-".
=IF(ISNUMBER(FIND("A-",A2)), "Valid","")
Если ячейка содержит одну из многих текстовых строк (логика ИЛИ)
Чтобы определить ячейки, содержащие хотя бы одну из многих искомых ячеек, используйте одну из следующих формул.
Формула поиска IF OR ISNUMBER SEARCH
Наиболее очевидным подходом было бы проверить каждую подстроку отдельно и заставить функцию OR возвращать TRUE в логическом тесте формулы IF, если найдена хотя бы одна подстрока:
IF(OR(ISNUMBER(SEARCH(" строка1 ", ячейка )), ISNUMBER(SEARCH(" строка2 ", ячейка ))), значение_к_возврату , "")Предположим, у вас есть список SKU в столбце A, и вы хотите найти те из них, которые включают либо "платье", либо "юбку". Вы можете сделать это с помощью следующей формулы:
=IF(OR(ISNUMBER(SEARCH("платье",A2)),ISNUMBER(SEARCH("юбка",A2))), "Valid ","")
Эта формула хорошо работает для нескольких элементов, но она не подходит, если вы хотите проверить множество элементов. В этом случае лучше использовать функцию SUMPRODUCT, как показано в следующем примере.
Формула SUMPRODUCT ISNUMBER SEARCH
Если вы имеете дело с несколькими текстовыми строками, поиск каждой строки по отдельности сделает вашу формулу слишком длинной и трудночитаемой. Более элегантным решением будет встраивание комбинации ISNUMBER SEARCH в функцию SUMPRODUCT и проверка того, что результат больше нуля:
SUMPRODUCT(--ISNUMBER(SEARCH( строки , ячейка )))>0Например, чтобы узнать, содержит ли A2 какое-либо из слов, введенных в ячейки D2:D4, используйте эту формулу:
=SUMPRODUCT(--ISNUMBER(SEARCH($D$2:$D$4,A2)))>0
В качестве альтернативы можно создать именованный диапазон, содержащий строки для поиска, или ввести слова непосредственно в формулу:
=SUMPRODUCT(--ISNUMBER(SEARCH({"платье", "юбка", "джинсы"},A2)))>0
В любом случае результат будет похож на этот:
Чтобы сделать вывод более удобным для пользователя, вы можете вложить приведенную выше формулу в функцию IF и вернуть собственный текст вместо значений TRUE/FALSE:
=IF(SUMPRODUCT(--ISNUMBER(SEARCH($D$2:$D$4,A2)))>0, "Valid", "")
Как работает эта формула
В основе лежит использование ISNUMBER вместе с SEARCH, как было описано в предыдущем примере. В данном случае результаты поиска представлены в виде массива вида {TRUE;FALSE;FALSE}. Если ячейка содержит хотя бы одну из указанных подстрок, в массиве будет TRUE. Двойной унарный оператор (--) приводит значения TRUE / FALSE к 1 и 0, соответственно, и выдает массив вида{1;0;0}. Наконец, функция SUMPRODUCT складывает числа, и мы выбираем ячейки, где результат больше нуля.
Если ячейка содержит несколько строк (логика AND)
В ситуациях, когда необходимо найти ячейки, содержащие все указанные текстовые строки, используйте уже знакомую комбинацию ISNUMBER SEARCH вместе с IF AND:
Например, с помощью этой формулы можно найти SKU, содержащие одновременно "платье" и "синий":
=IF(AND(ISNUMBER(SEARCH("платье",A2)),ISNUMBER(SEARCH("синий",A2))), "Valid ","")
Или вы можете ввести строки в отдельные ячейки и сослаться на них в формуле:
=IF(AND(ISNUMBER(SEARCH($D$2,A2)),ISNUMBER(SEARCH($E$2,A2))), "Valid ",""))
В качестве альтернативного решения можно подсчитать количество вхождений каждой строки и проверить, не больше ли оно нуля:
=IF(AND(COUNTIF(A2, "*платье*")>0,COUNTIF(A2, "*синий*")>0), "Valid","")
Результат будет точно таким, как показано на скриншоте выше.
Как вернуть разные результаты на основе значения ячейки
Если вы хотите сравнить каждую ячейку в целевом столбце с другим списком элементов и вернуть разное значение для каждого совпадения, используйте один из следующих подходов.
Вложенные IF
Логика вложенной формулы ЕСЛИ проста: вы используете отдельную функцию ЕСЛИ для проверки каждого условия и возвращаете различные значения в зависимости от результатов этих проверок.
ЕСЛИ( ячейка =" lookup_text1 ", " возврат _ текст1 ", IF( ячейка =" поиск_текста2 ", " возврат _ текст2 ", IF( ячейка =" lookup_text3 ", " возврат _ текст3 ", "")))Предположим, у вас есть список предметов в столбце A, и вы хотите, чтобы их аббревиатуры были в столбце B. Чтобы это сделать, используйте следующую формулу:
=IF(A2="яблоко", "Ap", IF(A2="авокадо", "Av", IF(A2="банан", "B", IF(A2="лимон", "L", "")))).
Для получения подробной информации о синтаксисе и логике вложенного IF, пожалуйста, обратитесь к разделу Excel Вложенный IF - несколько условий в одной формуле.
Формула поиска
Если вам нужна более компактная и понятная формула, используйте функцию LOOKUP, при этом значения поиска и возврата будут представлены в виде констант вертикального массива:
LOOKUP( ячейка , {" lookup_text1 ";" поиск_текста2 ";" lookup_text3 ";...}, {" возврат _ текст1 ";" возврат _ текст2 ";" возврат _ текст3 ";...})Для получения точных результатов обязательно перечислите значения поиска в разделе алфавитный порядок от А до Я.
=LOOKUP(A2,{"apple";"avocado";"banana";"lemon"},{"Ap";"Av";"B";"L"})
По сравнению с вложенными IF, формула Lookup имеет еще одно преимущество - она понимает символы подстановочного знака и поэтому может определять частичные совпадения.
Например, если столбец A содержит несколько сортов бананов, вы можете найти "*бананы*" и получить одно и то же сокращение ("B") для всех таких ячеек:
=LOOKUP(A2,{"apple";"avocado";"*banana*";"lemon"},{"Ap";"Av";"B";"L"})
Для получения дополнительной информации см. раздел Формула поиска как альтернатива вложенным IF.
Формула Vlookup
При работе с переменным набором данных может быть удобнее ввести список совпадений в отдельные ячейки и получить их с помощью формулы Vlookup, например:
=VLOOKUP(A2, $D$2:$E$5, 2,FALSE )
Для получения дополнительной информации см. учебник Excel VLOOKUP для начинающих.
Так можно проверить, содержит ли ячейка какое-либо значение или определенный текст в Excel. На следующей неделе мы продолжим рассматривать формулы Excel "Если ячейка содержит" и узнаем, как подсчитывать или суммировать соответствующие ячейки, копировать или удалять целые строки, содержащие эти ячейки, и т.д. Оставайтесь с нами!
Практическая тетрадь
Excel Если ячейка содержит - примеры формул (файл.xlsx)