Определите уровень статуса United Airlines, используя функции листа
Уровни статуса United Airlines Пробег Plus Premier определяются по совокупности критериев:
- Серебряный:
(PQM>=25000 OR PQS>=30) AND PQD>=3000
- Золото:
(PQM>=50000 OR PQS>=60) AND PQD>=6000
- Платина:
(PQM>=75000 OR PQS>=90) AND PQD>=9000
- 1K:
(PQM>=100000 OR PQS>=120) AND PQD>=12000
У меня есть столбцы с итогами PQM, PQS и PQD. Я хотел бы формулу для отображения уровня статуса (например, "Золото"). Нужен ли мне сложный набор вложенных операторов IF? Я делаю поиск как-нибудь?
2 ответа
Вот еще один подход с использованием INDEX
а также MATCH
, это более абстрактная, но и более короткая формула, основанная на вашей логике:
=INDEX(Table1[LEVEL],MIN(MAX(MATCH(B9,Table1[PQM]),MATCH(C9,Table1[PQS])),MATCH(D9,Table1[PQD])))
(PQM> = 25000 ИЛИ PQS>=30) И PQD> = 3000
PQM>=25000 OR PQS>=30
- более высокий уровень достигнут PQM или PQS => MAX(...) AND PQD>=3000
- нижний уровень, достигнутый предыдущим выбором и PQD
Или просто формула без вспомогательной таблицы:
=INDEX({"--","Silver","Gold","Platinum","1k"},MIN(MAX(MATCH(B9,{0,25000,50000,75000,100000}),MATCH(C9,{0,30,60,90,120})),MATCH(D9,{0,3000,6000,9000,12000})))
Так что если вы хотите пойти с вложенным IF
В качестве решения вы можете создать небольшую таблицу соответствия следующим образом:
И тогда, если у вас есть PQM
, PQS
а также PQD
значения в B8
, C8
а также D8
соответственно формула будет такой:
=IF(AND(OR(B8>$B$5,C8>$C$5),D8>$D$5),$A$5,IF(AND(OR(B8>$B$4,C8>$C$4),D8>$D$4),$A$4,IF(AND(OR(B8>$B$3,C8>$C$3),D8>$D$3),$A$3,IF(AND(OR(B8>$B$2,C8>$C$2),D8>$D$2),$A$2,"None"))))
Вы также можете легко заменить ссылки на таблицы жестко закодированными значениями, если вы не хотите иметь справочную таблицу (хотя я предпочитаю иметь ее в случае, если вам потребуется изменить параметры вычисления в будущем):
=IF(AND(OR(B8>100000,C8>120),D8>12000),"1K",IF(AND(OR(B8>75000,C8>90),D8>9000),"Platinum",IF(AND(OR(B8>50000,C8>60),D8>6000),"Gold",IF(AND(OR(B8>25000,C8>30),D8>3000),"Silver","None"))))
Надеюсь, это довольно очевидно, как это работает, сначала он проверяет условия наивысшего уровня, затем, если они не удовлетворены, пробирается вниз по уровням, пока не найдет тот, который возвращает "None"
если нет применимого уровня для возврата.