2018年8月8日水曜日

[Excel]複数の項目に分岐した設定値(IFを使用しない)


「記号」列を入力すると、その内容に応じて「優先度」列の値が設定されるリストを作る




通常ならばIF関数をネストさせてやるが、これだと複雑。

IF( 記号 =" ◎ ","S",IF( 記号 =" ○ ","A",IF( 記号 =" △ ","B",IF( 記号 =" × ","C",""))))

CHOOSE関数とMATCH関数を使って、もっと簡潔にできる。

CHOOSE(MATCH( 記号 ,{" ◎ "," ○ "," △ "," × "},0),"S","A","B","C")

MATCH
範囲内で値を検索し、見t買った値が何番目に位置するのかを数値で返す。上記でいうと、記号列が「◎」なら「1」、「○」なら「2」といった具合。第2引数の「0」は「完全一致」という意味。
CHOOSE
第1引数のインデックスに応じて、第2引数以降の値を返す。上記でいうと、インデックスが「1」なら「S」、「2」なら「A」といった具合。

Excel表示例





=CHOOSE(MATCH(B:B,{"◎","○","△","×"},0),"S","A","B","C")

0 件のコメント:

コメントを投稿

[WPF]コンボボックスにデータバインド

コンボボックスとのデータバインディングを試してみる コンボボックスとバインドする コンボ表示項目の設定 選択値に曜日Enum(Key部)がセットされるようにする ...