web-dev-qa-db-ja.com

ワークシート機能を使用してユナイテッド航空のステータスレベルを決定する

ユナイテッド航空のマイレージプラスプレミアのステータスレベルは、基準の組み合わせによって決定されます:

  • シルバー:(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ステートメントの複雑なセットが必要ですか?どういうわけかルックアップを行いますか?

5
Drew McManus

INDEXMATCHを使用した別のアプローチを次に示します。これはより抽象的なものですが、ロジックに基づいた短い式でもあります。

=INDEX(Table1[LEVEL],MIN(MAX(MATCH(B9,Table1[PQM]),MATCH(C9,Table1[PQS])),MATCH(D9,Table1[PQD])))

(PQM> = 25000 OR PQS> = 30)AND PQD> = 3000

  • _PQM>=25000 OR PQS>=30_- PQMまたはPQSが到達するより高いレベル=> MAX
  • _(...) AND PQD>=3000_-前の選択とPQDによって到達した下位レベル

enter image description here

または、ヘルパーテーブルのない数式:

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

3
Máté Juhász

したがって、ネストされたIFソリューションを使用したい場合は、次のような小さなルックアップテーブルを作成できます。

Lookup Table

そして、PQMPQS、およびPQDの値がそれぞれ_B8_、_C8_、および_D8_にある場合、式は次のようになります。 be:

=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"_を返します。戻る。

2
3N1GM4