Excelの表を作っていると、「番号や区分に応じて、あらかじめ決まったいくつかの値の中から1つを表示したい」という場面によく出会います。曜日を表す1〜7の数字を「月・火・水……」という日本語に変換したり、四半期番号の1〜4に応じて歩合率を切り替えたりするケースです。こうした処理を簡潔に書けるのがCHOOSE関数です。VLOOKUPのような別表を用意しなくても数式1本で完結するのが特徴ですが、番号の数え方や選択肢が増えたときの管理方法でつまずく人も少なくありません。
CHOOSE関数の基本構文
CHOOSEは「index_num(何番目を選ぶか)」と、そこから選ばれる「値のリスト」を引数に取ります。値は数値でも文字列でもセル参照でも指定できます。
例:A1セルの数値(1〜3)に応じて「小・中・大」を表示する
=CHOOSE(A1,"小","中","大")
A1が1なら「小」、2なら「中」、3なら「大」が返ります。単純な仕組みですが、index_numに別の関数の戻り値を組み合わせることで応用範囲が広がります。
WEEKDAY関数と組み合わせて曜日ラベルを表示する
CHOOSEの代表的な応用が、WEEKDAY関数と組み合わせて日付から「月・火・水・木・金・土・日」という日本語の曜日ラベルを表示する使い方です。WEEKDAY単体では1〜7の数値しか返らないため、そのままでは表として見づらく、CHOOSEで数値を日本語に変換します。
A1に入っている日付の曜日を、日本語の漢字1文字で表示します。WEEKDAYの種類(第2引数)を省略した場合、日曜日が1、月曜日が2……土曜日が7として返るため、CHOOSEのリストも必ず「日」から書き始めるのがポイントです。
四半期番号に応じた歩合率を切り替える
もう一つの典型的な使い方が、区分番号に応じて異なる料率・単価を切り替える計算です。たとえば四半期ごとに歩合率(ボーナス率)が変わる会社であれば、四半期番号(1〜4)をindex_numとしてCHOOSEに渡すことで、IFのネストを使わずに歩合率を一発で取得できます。
四半期番号(A1)が1なら3%、2なら3.5%、3なら4%、4なら5%の歩合率を掛けて歩合給を算出する数式です。
実務でのよくある使用シーン
総務担当者であれば、勤怠表や出勤簿の日付列からWEEKDAY関数で曜日番号を取り出し、CHOOSEで「月・火・水・木・金・土・日」という見出しを自動表示させる使い方が典型的です。土日を赤字にする条件付き書式と組み合わせれば、印刷用の出勤表が見やすくなります。営業事務担当者であれば、四半期ごとに歩合率や販売手数料率が変わる給与計算シートで、四半期番号(1〜4)をCHOOSEに渡して該当する料率を自動で切り替える使い方がよくあります。料率テーブルが改定された場合も、CHOOSEの値を書き換えるだけで対応できます。経理担当者であれば、支払サイト区分(1:即日、2:月末締め翌月払い、3:締め翌々月払い)の番号から、対応する支払条件の文言を表示させる使い方もあります。
CHOOSEでよくあるエラー・症状と対処法
曜日ラベルの数式で、値のリストを1つ書き忘れているのに気づかず使ってしまうと発生しやすいエラーです。
対処法は、index_numが取り得る最大値とCHOOSEに並べた値の個数が一致しているか数え直すことです。曜日なら7個、四半期なら4個というように、範囲を先に確認してから値を並べましょう。
index_numは1から始まる番号である必要があります。0や負の数を指定すると、値のリストが正しくても必ずエラーになります。
対処法は、参照セルの数値が0や空欄になっていないか、計算結果が意図せず0になっていないかを確認することです。区分番号を別の計算式から取得している場合は、その計算式自体も検算しましょう。
エラーメッセージは出ないため気づきにくいですが、CHOOSEとWEEKDAYの組み合わせで実際によく起こる症状です。
WEEKDAYは第2引数(種類)を省略すると日曜日を1として返すため、CHOOSEのリストも「日」から書き始める必要があります。月曜始まりにしたい場合は、WEEKDAY(A1,2)のように種類を2に指定し、リストも「月」から書き始めます。
類似関数との使い分け(VLOOKUP・INDEX+MATCH)
CHOOSEは選択肢が少なく番号が1から連番になっている場合に威力を発揮します。選択肢が多い、または別のマスタ表としてすでに存在する場合は、VLOOKUPやINDEX+MATCHの方が管理しやすくなります。
CHOOSE
- 選択肢が少ない(目安5〜6個以下)
- 番号が1からの連番
- 数式だけで完結し別表不要
VLOOKUP
- 選択肢が多い・増減しやすい
- すでにマスタ表がある
- 表を直せば数式は直さなくてよい
INDEX+MATCH
- 検索キーが表の左端以外にある
- 行・列どちらの追加にも強い
- 大きな表で速度を保ちたい場合
歩合率が四半期の4区分だけならCHOOSEで数式1本にまとめる方が簡潔ですが、料率区分が10段階、20段階と増える、あるいは表の更新を数式に不慣れな人が行う運用であれば、別シートに料率テーブルを作りVLOOKUPで参照する形の方が安全です。
初心者がつまずきやすいポイントとコツ
- index_numは1から始まる。プログラミングの配列のように0番目から数えてしまうと、値が1つずつズレて表示されます。「1番目の値が値1」というルールを常に意識しましょう。
- 値の個数とindex_numの取り得る範囲を必ず一致させる。WEEKDAYと組み合わせるなら7個、四半期番号なら4個というように、事前に「何番まで来る可能性があるか」を確認してから値を並べてください。
- WEEKDAYの種類(第2引数)とCHOOSEのリストの並びをセットで管理する。種類を省略・変更したら、CHOOSEの値の並び順も必ず一緒に見直す習慣をつけると、曜日がずれる症状を防げます。
- 選択肢が増えてきたら数式を伸ばす前に別表を検討する。CHOOSEはカンマで値を並べるほど数式が横に長くなります。選択肢が6個を超える、または今後増える見込みがあるなら、VLOOKUPやINDEX+MATCH用の一覧表に切り出す判断も大切です。
まとめ
CHOOSEは、番号に応じて決まった値を1つ選ぶ処理を、IFのネストよりも簡潔に書ける関数です。WEEKDAYと組み合わせた曜日ラベル表示や、四半期番号に応じた歩合率の切り替えのように、選択肢が少なく番号が連番になっている場面で力を発揮します。index_numが1から始まること、値の個数と番号の範囲が一致していることさえ押さえれば、#VALUE!エラーの多くは防げます。選択肢が増えてきたら無理にCHOOSEで抱え込まず、VLOOKUPやINDEX+MATCHへの切り替えも検討しましょう。数式を一から組み立てるのが不安な方は、下のツールで日本語の空欄を埋めるだけで数式を作成できます。
よくある質問
関連記事
- VLOOKUPとXLOOKUPの違いは?よくあるエラーと使い分けを解説
- HLOOKUP関数で横方向の表を検索する方法
- INDEX+MATCHの使い方
- WEEKDAY関数で土日・祝日を自動で色分けする方法|条件付き書式との組み合わせとよくある失敗