Как использовать функцию IF с 3 аргументами, игнорируя пробелы - PullRequest
0 голосов
/ 20 апреля 2020

Хорошо, поэтому мой вопрос: как мне использовать IF с 3 аргументами, в то время как один из аргументов - «Игнорировать пробелы».

Если A1 - «Escalation_complaint или« Escalation_request », B1 должен показывать« Escalated ». A1 - это любой другой текст, B1 должен показывать «Решено». Если A1 пусто, B1 должно оставаться пустым.

Может кто-нибудь помочь мне разобраться?

Ответы [ 4 ]

1 голос
/ 20 апреля 2020

Ваш первый тест должен быть, является ли A1 пустым или нет. Это должно быть первым, потому что если вы проверяете, содержится ли пустая строка в другой строке, ответ всегда будет положительным. =SEARCH("","Something") возвращает 1. Итак, как вы тестируете пустую ячейку? Я рекомендую функцию COUNTA () в Excel, но вы можете предпочесть проверку на "". Итак, скажем, ваш первый тест такой:

=IF(COUNTA(A1), True, False)

Кто-то скажет IF(COUNTA(A1)>0, True, False), и это эквивалентно. Простые IF(COUNTA(A1) тесты для ненулевых. Любое число, отличное от нуля, возвращает True.

Итак, теперь у вас есть функция basi c. Что должно произойти, если результат верен? Что вы хотите случиться, если результат будет ложным? Последнее легко. Если результатом является False, вы хотите вернуть нулевую строку. Итак, теперь ваша формула выглядит следующим образом: -

=IF(COUNTA(A1), True, "")

Заметьте, что мы просто заменили False на желаемый результат. Итак, что вы хотите, чтобы произошло, если в A1 есть что-то, если первый тест дал True ? Есть две возможности. Это делает проблему разрешимой с одним IF. Если в A1 есть что-то, начинающееся с «Escalation», результат должен быть «escalate», иначе он должен быть «решен». Итак, как вы проверяете содержимое ячеек?

=Find("escalation", A1) не найдет «Эскалация» (с большой буквы E). Поэтому я рекомендую SEARCH (), который делает.

=SEARCH("escalation", A1) должен вернуть 1. Если он возвращает 1, ваша проблема решена, потому что если он возвращает любое другое число, то это не «обострилось», а «решено». К сожалению, есть третий вариант. Это может вернуть ошибку. Фактически он будет возвращать ошибку каждый раз, когда слово не найдено. Это дает вам возможность 3-х сторон (1, больше 1 или ошибка), которая не может быть решена с помощью одного IF. Поэтому я предлагаю избежать ошибки.

=Find("escalation", A1 & "escalation") будет каждый раз находить слово «эскалация». Но он найдет его на первой позиции, только если будут выполнены условия для «Escalate». Следовательно, формула для условия True в формуле basi c должна быть такой: -

IF(SEARCH("escalation", A1 & "escalation") = 1, "Escalated", "Solved")

Вот и все. Соберите второй IF в первый, и все готово.

1 голос
/ 20 апреля 2020

Если вы знаете, что текст всегда будет Escalation_complaint или Escalation_request, вы можете сделать это с помощью вложенного запроса IF. = ЕСЛИ в Excel принимает три параметра: что проверять, результат, если истина, и результат, если ложь. В разделе «что делать» вы можете использовать другой оператор IF, если он возвращает ложный раздел. Мы также можем сделать оператор OR () для проверки как Escalation_complaint, так и Escalation_request. Результат выглядит следующим образом:

=IF(OR(A1="Escalation_complaint",A1="Escalation_request"),"Escalated",IF(A1="","","Solved"))

Порядок здесь важен, потому что вы хотите, чтобы «для всех других случаев» было в конечном выражении IF.

Если у вас есть ситуация, когда у вас также могут возникнуть «Request_escalation» или «complaint_escalation», вам следует принять более общее решение, использующее ПОИСК или НАЙТИ, которое позволит вам сделать более общий поиск, который позволяет более значения без необходимости их жесткого кодирования. Вот пример, который позволяет найти слово Escalation в любом месте ячейки:

=IF(IFERROR(SEARCH("escalation",A1,1),0)>0, "Escalated", IF(A1="","","Solved"))
1 голос
/ 20 апреля 2020

Итак, используя два if () и сворачивая необходимое тестирование:

=IF(left(A1,3)="Esc","Escalated",IF(A1="","","Solved"))

Редактировать: на основе комментария к другому ответу, если тестирование только на «es c» может привести к проблемы, а как насчет:

=IF(left(A1,5)="Escal","Escalated",IF(A1="","","Solved"))

Что позволит избежать таких слов, как «сбежал» или «улитка» ...

0 голосов
/ 20 апреля 2020

Excel имеет максимум 30 аргументов в формуле.

= if (A1=1, "True",if(B1>2,"True", "false"))

Понимают этот шаблон. Простой способ. Если вы больше не понимаете этого или ваша проблема не решена, приложите файл или снимок экрана, относящийся к вашей проблеме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...