CHOOSE関数の使い方|番号で値を切り替える方法
CHOOSE関数は、インデックス番号に応じて引数リストの中から対応する値を返す関数です。IF関数を何段もネストする代わりに、番号ひとつで値を切り替えられるため、数式をシンプルに保てます。WEEKDAY関数との組み合わせで曜日名を表示したり、配列引数として他の関数に渡したりと、応用範囲の広い関数です。
CHOOSE関数の基本構文
=CHOOSE(インデックス番号, 値1, [値2], [値3], ...)
引数の説明
| 引数 | 説明 | 必須/任意 |
|---|---|---|
| インデックス番号 | 1から254の整数。どの値を返すかを指定する | 必須 |
| 値1 | インデックス番号が1のときに返す値 | 必須 |
| 値2〜値254 | インデックス番号が2〜254のときに返す値 | 任意 |
基本的な動作
=CHOOSE(2, "りんご", "みかん", "バナナ")
インデックス番号が2なので「みかん」を返します。番号が1なら「りんご」、3なら「バナナ」です。
数値や数式も指定可能
値には文字列だけでなく、数値、セル参照、数式を指定できます。
=CHOOSE(A1, 100, 200, 300, 400, 500)
A1の値が3なら300を返します。また、以下のようにセル参照も可能です。
=CHOOSE(A1, B1, C1, D1)
A1が2ならC1の値を返します。
WEEKDAY関数との組み合わせ
CHOOSE関数の実務での代表的な使い方が、WEEKDAY関数と組み合わせた曜日名の表示です。
日付から曜日名を取得する
WEEKDAY関数は日付に対応する曜日番号(1〜7)を返します。この番号をCHOOSE関数のインデックスとして使います。
=CHOOSE(WEEKDAY(A1), "日", "月", "火", "水", "木", "金", "土")
A1に「2026/04/01」が入力されている場合、WEEKDAY関数が4(水曜日)を返し、CHOOSE関数が4番目の値「水」を返します。
営業日・休日の判定
曜日番号をもとに営業日かどうかを判定する例です。
=CHOOSE(WEEKDAY(A1), "休日", "営業日", "営業日", "営業日", "営業日", "営業日", "休日")
日曜(1)と土曜(7)は「休日」、それ以外は「営業日」を返します。勤怠管理や業務スケジュール表の自動判定に活用できます。
曜日ごとの担当者を自動表示
シフト管理で、曜日に応じた担当者名を自動表示する例です。
=CHOOSE(WEEKDAY(A1), "", "田中", "鈴木", "佐藤", "山田", "高橋", "")
日曜と土曜は空白、月曜は田中、火曜は鈴木というように、曜日ごとの担当者を一つの数式で切り替えられます。
IF関数のネストを置き換える
IF関数のネストが深くなるケース
部門コード(1〜5)に対応する部門名を返す場合、IF関数で書くと以下のようになります。
=IF(A1=1,"営業部",IF(A1=2,"経理部",IF(A1=3,"総務部",IF(A1=4,"開発部",IF(A1=5,"企画部","不明")))))
CHOOSE関数でシンプルに
同じ処理をCHOOSE関数で書くと、見通しが良くなります。
=CHOOSE(A1, "営業部", "経理部", "総務部", "開発部", "企画部")
可読性が大幅に向上し、値の追加や修正も容易です。ただし、CHOOSE関数ではインデックス番号が範囲外の場合に#VALUE!エラーが返されるため、IFERROR関数で対処しておくと安全です。
=IFERROR(CHOOSE(A1, "営業部", "経理部", "総務部", "開発部", "企画部"), "不明")
配列引数としての応用
CHOOSE関数は、他の関数の引数として範囲を動的に切り替える用途でも使用できます。
SUM関数の範囲を切り替える
四半期ごとの売上列が以下のように配置されているとします。
| A列 | B列(Q1) | C列(Q2) | D列(Q3) | E列(Q4) |
|---|---|---|---|---|
| 商品名 | 1-3月 | 4-6月 | 7-9月 | 10-12月 |
| ノートPC | 1500000 | 1800000 | 1200000 | 2100000 |
| マウス | 240000 | 285000 | 210000 | 320000 |
セルG1に四半期番号(1〜4)が入力されているとき、指定された四半期の合計を求める数式です。
=SUM(CHOOSE(G1, B2:B3, C2:C3, D2:D3, E2:E3))
G1が2ならC2:C3の合計(2085000)を返します。ドロップダウンリストと組み合わせれば、四半期を選ぶだけで集計結果が切り替わるダッシュボードを作成できます。
VLOOKUP関数の検索範囲を切り替える
複数のマスタテーブルを切り替えて検索する応用例です。
=VLOOKUP(B1, CHOOSE(A1, 商品マスタ!A:C, 資材マスタ!A:C, 備品マスタ!A:C), 2, FALSE)
A1の値(1〜3)に応じて、検索するマスタテーブルが切り替わります。1つの数式で複数のマスタに対応できるため、伝票入力フォームなどで便利です。
SWITCH関数との比較
Excel 2019以降およびMicrosoft 365では、SWITCH関数が使用できます。CHOOSE関数との違いを確認しておきましょう。
構文の違い
=SWITCH(A1, 1, "営業部", 2, "経理部", 3, "総務部", "不明")
SWITCH関数は「値, 結果」のペアで指定するため、インデックス番号が連続していなくても対応できます。
使い分けの基準
| 条件 | 推奨する関数 |
|---|---|
| インデックスが1から始まる連続した整数 | CHOOSE |
| インデックスが不連続または文字列 | SWITCH |
| 配列引数として範囲を渡したい | CHOOSE |
| Excel 2016以前を使用 | CHOOSE |
CHOOSE関数は配列引数としての利用が可能なため、SUM関数やVLOOKUP関数と組み合わせる場面ではCHOOSE関数が適しています。
CHOOSE関数のエラーと対処法
#VALUE!エラー
インデックス番号が1未満、または値の数を超える場合に発生します。
=CHOOSE(6, "A", "B", "C")
値は3つしかないのにインデックスが6のため、#VALUE!エラーになります。
対処方法
インデックス番号の範囲を事前にチェックするか、IFERROR関数で囲みます。
=IFERROR(CHOOSE(A1, "営業部", "経理部", "総務部"), "該当なし")
小数のインデックス
インデックス番号に小数が指定された場合、小数部分は切り捨てられます。たとえば2.9が指定された場合、インデックス2として処理されます。
まとめ
CHOOSE関数は、番号に応じて値を切り替えるシンプルながら汎用性の高い関数です。以下のポイントを押さえておきましょう。
- WEEKDAY関数と組み合わせて曜日名や営業日判定に活用できる
- IF関数の深いネストをCHOOSE関数で置き換えると可読性が向上する
- 配列引数として他の関数に範囲を渡す応用が可能
- インデックスが連続整数でない場合はSWITCH関数を検討する
- インデックス範囲外のエラーにはIFERROR関数で対処する
CHOOSE関数は存在を知らないと使う機会がない関数ですが、知っていると数式の整理や動的な処理に大いに役立ちます。特にWEEKDAY関数との組み合わせは実務で頻出するパターンですので、覚えておくと便利です。