Определите уровень статуса 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" если нет применимого уровня для возврата.

Другие вопросы по тегам