Найти тему
Мир таблиц

Продолжаем изучать функцию ЕСЛИ в Excel: как проверить совпадение текста

Оглавление

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

Пример 3: Точное совпадение текста

В прошлый раз мы говорили, что функция ЕСЛИ не чувствительна к регистру текста, то есть ей всё равно используете вы заглавные или строчные буквы. В большинстве случаев этого будет достаточно для наших задач. Но что, если нам всё-таки понадобится учитывать регистр?

Вернёмся к нашим покупателям из прошлых примеров. Вы также можете скачать файл с готовыми новыми примерами по ссылке. Или пробуйте всё делать своими руками.

Допустим, покупатели заходили на наш сайт и вводили разные промокоды (например, XY, XX, xx). Нам нужно выбрать тех покупателей, которые ввели промокод XX, чтобы, например, одобрить им членство в закрытом клубе покупателей с дополнительными привилегиями.

-2

Как же нам это сделать, если функция ЕСЛИ игнорирует регистр и когда мы с помощью неё будем искать XX, она также будет принимать и xx? На помощь нам придёт ещё одна функция - СОВПАД.

Функция СОВПАД сравнивает две текстовые строки и если они полностью совпадают, включая регистр, то возвращает ИСТИНА, а если нет, то ЛОЖЬ.

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

=СОВПАД(текст1; текст2)

Попробуйте сами используя в связке функции ЕСЛИ и СОВПАД сделать формулу, которая бы выбирала только код XX и в столбце "Одобрение" возвращала бы "Да" в случае одобрения и "Нет" в случае отказа. Давайте проверим, правильно ли у вас получилось.

В ячейку C2 введём следующую формулу:

=ЕСЛИ(СОВПАД(B2;"XX");"ДА";"Нет")

Расшифруем: если текст в ячейке B2 полностью совпадает с текстом "XX", то пишем "Да", иначе пишем "Нет".

Вот что у нас получилось:

-3

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

Пример 4: Частичное совпадение текста

А что если нам надо сопоставить только часть текста из ячейки?

У нас есть список кодов заказов, который состоит из наборов цифр и символов. Буквенные символы указывают, кто сделал заказ (XX - участник нашего клуба покупателей, XY - внешний покупатель). В столбце B нам нужно расшифровать тип заказчика: "Участник" или "Внешний".

-4

На первый взгляд задача нетривиальная. Как вы думаете, что нам мешает использовать ранее изученные функции для её решения?

Во-первых, это циферно-буквенная смесь. Во-вторых, длина строк разная, то есть количество символов в каждой ячейке отличается. И, в-третьих, нужный нам буквенный код в каждом случае "бегает" по строке. Обычный пользователь Excel махнул бы рукой и начал бы вручную смотреть какой код в строке и заполнять столбец B.

Но мы ведь с вами собираемся стать продвинутыми пользователями, правда? Поэтому ручной метод - это не наш путь. Что, если таких кодов тысячи и десятки тысяч? Благо Excel очень мощная программа, которая позволяет с лёгкостью автоматизировать даже такие непростые на первый взгляд задачи.

Многие функции в Excel, такие как ВПР или СЧЁТЕСЛИМН, позволяют использовать символы подстановки (* звездочку, ? вопросительный знак и ~ тильду) для фильтрации данных в строке. Но функция ЕСЛИ не позволяет использовать эти символы. Поэтому о них мы поговорим позднее. а пока нам надо придумать альтернативный способ.

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

У функции ПОИСК три аргумента:

=ПОИСК(искомый_текст; текст_для_поиска; [нач_позиция])
  • Искомый текст: Какой текст вы ищете.
  • Текст для поиска: Где искать данный текст.
  • [Начальная позиция]: С какой позиции (заданной номером индекса) в строке текст_для_поиска начинать поиск. Если этот аргумент опущен, то поиск начнётся с первого символа.

Введём в ячейку B2 и протянем формулу, которая будет искать местоположение кода "XX":

=ПОИСК("XX";A2)

Вот что у нас получилось:

-5

Смотрите, там где в коде заказа было "XX", формула вернула номер позиции, с которой начинается в строке искомый код. Например, в "XX2962" с первого знака, а в "485XX" с четвёртого. А там, где "XX" не встречается, формула возвращает ошибку #ЗНАЧ! Кстати, обо всех ошибках формул Excel вы можете прочитать здесь.

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

Итак, с помощью функции ПОИСК мы нашли индексный номер первого символа кода "XX" там где он есть.

Затем мы используем ещё одну новую функцию ЕЧИСЛО, для того, чтобы преобразовать полученную информацию в ИСТИНУ или ЛОЖЬ. ЕЧИСЛО проверяет, является ли значение число, и если да, то возвращает ИСТИНА, если нет - ЛОЖЬ.

Доработаем нашу формулу:

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

Расшифровка: если в ячейке A2 находится строка "XX" и возвращается в виде числа номер позиции с которой она начинается, то ИСТИНА, иначе ЛОЖЬ.

-6

Но для простого восприятия нам проще работать с обычными словами, как, например, "Участник" или "Внешний", а не с логическими переменными ИСТИНА и ЛОЖЬ. Поэтому мы добавим в нашу формулу функцию ЕСЛИ:

=ЕСЛИ(ЕЧИСЛО(ПОИСК("XX";A2));"Участник";"Внешний")

Расшифровка: если в ячейке A2 находится строка "XX" и возвращается в виде числа номер позиции с которой она начинается, то ИСТИНА, иначе ЛОЖЬ. Если ИСТИНА, то пишем "Участник", если ЛОЖЬ, то пишем "Внешний".

Уффф, какая сложная многоуровневая формула. Давайте проверим, работает ли она?

-7

Всё работает идеально!

Предлагаю сделать паузу. Сегодня мы продолжили изучать тонкости функции ЕСЛИ, а также познакомились с несколькими новыми: СОВПАД, ПОИСК, НАЙТИ и ЕЧИСЛО. Скажу без иронии, уже с таким арсеналом знаний вы стали намного более продвинутым пользователем Excel, чем многие ваши коллеги. Что же будет, если вы подпишетесь и продолжите изучение дальше? ;)

В следующий раз мы продолжим изучать функцию ЕСЛИ и посмотрим, как с помощью неё проверять значения даты, а также пустые и незаполненные ячейки.

Не переключайтесь;)