使用工作表函数确定美国联合航空公司的状态级别

使用工作表函数确定美国联合航空公司的状态级别

美国联合航空 MileagePlus 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
  • 1千:(PQM>=100000 OR PQS>=120) AND PQD>=12000

我有包含 PQM、PQS 和 PQD 总数的列。我想要一个公式来显示状态级别(例如“金牌”)。我需要一组复杂的嵌套 IF 语句吗?我是否需要以某种方式进行查找?

答案1

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})))

答案2

因此,如果您确实想采用嵌套IF解决方案,您可以创建一个如下的小型查找表:

查找表

然后,如果您的PQMPQSPQD值分别在B8C8和中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"如果没有适用的级别可返回,则返回。

相关内容