Использование IF с OR, AND и Wildcard в одном выражении

Я пытаюсь создать оператор IF, который будет в основном смотреть на одну ячейку, в которой в настоящее время есть макросы, позволяющие отменить выбор из списка поиска.

Поле, на котором основан оператор IF, представляет собой раскрывающийся список, содержащий следующую информацию:

Android iOS PC/Mac All Devices Mobile Devices 

Пользователь может выбрать одно значение или несколько значений.

Оператор IF будет истинным IF, поле содержит All Devices OR Mobile Devices или Android AND iOS вместе. Он также должен иметь возможность проверять подстановочный знак, поскольку вы можете выбрать несколько элементов, поэтому могут быть Android, PC/Mac, iOS в этом случае это должно быть правдой, поскольку были выбраны как Android и iOS .

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

 =IF(OR(C7="*-iOS*",C7="*-Android*",C7="Mobile Device",C7="All Delivery Methods",AND(C7="*-iOS*",C7="*-Android*")),"Mobile DTC/ALL","STB (VRP) HD, DEVICE (UVP) HD") 

благодаря

Edit: Если какой-либо из следующих сценариев встречается и существует в Cell C7, верните оператор True.

Сценарий 1: все методы доставки Сценарий 2: мобильные устройства Сценарий 3: Android AND iOS

В противном случае вернем утверждение False.

Excel не поддерживает подстановочные выражения для всех формул ( см. Поддерживаемые формулы ), но вы можете добиться аналогичного результата, если вы построите немного свою формулу.


Решение 1

Например, попробуйте использовать FIND() с помощью IFERROR() . FIND() предоставит вам номер и сообщит вам, где находится найденная строка.

Таким образом, =FIND("-Android","tell me more about -Android") , даст вам номер. Если он ничего не найдет, он даст вам ошибку значения, которую вы можете поймать с помощью IFERROR и вернуть определенное значение, например -1 .

Затем постройте проверку OR для значений, превышающих -1 и у вас будет то, что вам нужно.


Решение 2

Другой вариант – использовать SEARCH() , который поддерживает шаблоны так, как вы ожидаете:

=SEARCH("test*1";"aaaaaaaatestaaaa1")

вернется 9. ПОИСК в MSDN


Решение 3

В общем, есть много способов построить это. Как было предложено в комментариях @ ImaginaryHuman072889, вы можете использовать ISNUMBER() . Преимущество состоит в том, что он работает с ошибками, поэтому вам не нужен ловушка ошибок. Что-то вроде этого будет работать нормально:

=OR(ISNUMBER(SEARCH("a","b")),ISNUMBER(SEARCH("b","b")))

Однако, если вы измените метод из первого решения с опцией, возвращающей 0 в случае ошибки, у вас тоже будет что-то вроде этого:

=OR(IFERROR(SEARCH("a","b"),0),IFERROR(SEARCH("b","c"),0))

что представляет собой то же самое количество формул.


Решение 4

Действительно интересное решение, избегая как OR() и IFERROR() , предложенных @barry houdini. Он просто возвращает 0 , если ничего не найдено из результатов:

 =COUNT(SEARCH({"a*a";"b*b";"c*c"},"I used to be abba fan.")) 

вернет 2 из-за того, что a*a и b*b находятся в abba . Вот как включить AND() исходного вопроса OP:

 =AND( COUNT(SEARCH({"a*a";"b*b";"c*c"},"I used to be abba fan.")), COUNT(SEARCH({"party*so";"am not"},"but now I am not.")) ) 
  • Вычисление среднего числа чисел в столбце с использованием номера столбца
  • В excel мне нужно найти максимальную дату на основе номера сотрудника
  • Ранжировать подмножество столбца, соответствующего определенным значениям другого столбца
  • Почему вы используете «= +» в ячейке Excel, когда вы можете просто использовать «=»?
  • Функция сопоставления Excel неправильно обрабатывает аргументы массива
  • Необходима формула excel для соответствия одному значению на втором листе для нескольких строк
  • Как продлить половину динамической формулы?
  • Формула для поиска и замены
  • Определение дней между двумя датами в Excel, если выполнены определенные критерии
  • Формула Excel для расчета зарплаты (15-й и МНВ)
  • Создание виртуального массива с выбором и конкретными критериями
  • Interesting Posts

    Ошибка времени выполнения «9»: индекс за пределами допустимой области

    Макрос Excel 2010, чтобы принудительно ввести «F2» + «Enter» в диапазоне ячеек

    классический asp, excel, остановить вывод 0 (ноль) от удаления

    Переименование дубликатов со случайными алфавитами в столбце – Excel

    Группировать несколько строк в одно поле в Excel

    удалить целую строку, если у нас есть определенное значение или текст, а также удалить 7 строк ниже

    SIMPLE Удалить строку из ячейки?

    Перенос дат между файлами Excel (неточно)

    Apache POI. Использование row.getLastCellNum () для извлечения числа непустых ячеек

    НЕПРЯМЫЕ, если Statments продолжает давать #REF

    Excel – Модальное значение в списке с функцией IF

    Позвольте пользователю присвоить рейтинг звезды

    Как я могу получить данные из таблицы

    Добавление элементов управления во время выполнения

    Excel: автозаполнение B2 от B1, если A1 соответствует A2

    Давайте будем гением компьютера.