「評価ランクの1〜5に応じてラベルを出し分けたい」。こんなとき、IF関数のネストを何段も重ねていませんか。
条件が増えるたびに数式が長くなって、修正するのも一苦労ですよね。
そんな場面で活躍するのがCHOOSE関数です。番号を指定するだけで対応する値を返してくれます。
この記事では、CHOOSE関数の基本から実務で使える応用パターンまで解説します。
スプレッドシートのCHOOSE関数とは?
CHOOSE関数(読み方: チューズ関数)は、インデックス番号に対応する値を返す関数です。
英語の「Choose(選ぶ)」が名前の由来です。
「番号札で値を引き当てる」イメージで覚えてみてください。
CHOOSE関数にできることをまとめると、次のとおりです。
- インデックス番号(1, 2, 3…)に対応する値を返す
- 値には文字列・数値・セル参照・数式を指定できる
- WEEKDAY関数(曜日番号を返す関数)と組み合わせて曜日名を表示する
- MONTH関数(月番号を返す関数)と組み合わせて四半期ラベルを判定する
NOTE
CHOOSE関数はインデックスが1から始まる連番のときに力を発揮します。条件が「〇〇以上」「〇〇を含む」のような判定の場合は、IF関数やSWITCH関数のほうが向いています。
CHOOSE関数の書き方(構文と引数)
基本構文
CHOOSE関数の構文はこちらです。
=CHOOSE(インデックス, 値1, 値2, ...)
引数は最低3つ必要です。値は最大30個まで指定できます。
引数の説明
| 引数 | 必須/省略可 | 意味 | 指定例 |
|---|---|---|---|
| インデックス | 必須 | 何番目の値を返すかを指定する番号(1〜30) | 2 |
| 値1 | 必須 | インデックスが1のときに返す値 | “りんご” |
| 値2, 値3… | 省略可 | インデックスが2, 3…のときに返す値 | “みかん”, “ぶどう” |
インデックスに小数を指定した場合、小数部分は切り捨てられます。たとえば 2.9 なら 2 として扱われます。
CHOOSE関数の基本的な使い方
ここではシンプルな例でCHOOSE関数の動きを確認してみましょう。
セルA2に評価ランク(1〜3の数値)が入っているとします。このランクに応じてラベルを表示する数式はこちらです。
=CHOOSE(A2, "優", "良", "可")
A2が 1 なら「優」、2 なら「良」、3 なら「可」が返ります。
IF関数で同じことを書くと次のようになります。
=IF(A2=1, "優", IF(A2=2, "良", "可"))
CHOOSE関数のほうが、どの番号にどの値が対応しているか一目でわかりますよね。
もうひとつ例を見てみましょう。部署コード(1〜5)から部署名を返すケースです。
=CHOOSE(B2, "営業部", "経理部", "総務部", "人事部", "開発部")
選択肢が多いほど、CHOOSE関数の読みやすさが際立ちます。IF関数だと4段ネストが必要ですが、1行で書けますよ。
CHOOSE関数の実践的な使い方・応用例
WEEKDAY関数と組み合わせて曜日を表示する
WEEKDAY関数は日付から曜日番号(1〜7)を返す関数です。この番号をCHOOSE関数に渡せば、曜日名を表示できます。
セルA2に日付が入っているとき、次の数式で曜日を取得できます。
=CHOOSE(WEEKDAY(A2), "日", "月", "火", "水", "木", "金", "土")
WEEKDAY関数はデフォルトで日曜=1〜土曜=7を返します。値1〜値7に曜日名を並べるだけなので、直感的に書けますよ。
TIP
TEXT関数で
=TEXT(A2, "ddd")と書いても曜日を取得できます。ただし「月」「火」のような1文字表記にしたい場合は、CHOOSE+WEEKDAYのほうが柔軟に対応できます。
スプレッドシートのWEEKDAY関数について詳しく知りたい方は、「スプレッドシートのWEEKDAY関数の使い方」もあわせてご覧ください。
MONTH関数と組み合わせて四半期を判定する
MONTH関数は日付から月番号(1〜12)を返す関数です。CHOOSE関数と組み合わせれば、四半期ラベルを振れます。
=CHOOSE(MONTH(A2), "Q3","Q3","Q3", "Q4","Q4","Q4", "Q1","Q1","Q1", "Q2","Q2","Q2")
日本の会計年度(4月始まり)に合わせた対応表はこちらです。
| 月 | 1〜3月 | 4〜6月 | 7〜9月 | 10〜12月 |
|---|---|---|---|---|
| 四半期 | Q3 | Q4 | Q1 | Q2 |
IF関数で同じ処理を書くと条件式が複雑になります。CHOOSE関数なら月番号と値を1対1で並べるだけです。
値の順番を変えれば、1月始まりにも対応できますよ。
セル参照や数式を値に指定する
CHOOSE関数の値には、文字列や数値だけでなくセル参照や数式も指定できます。
たとえば、集計モード(1=合計、2=平均、3=最大値)に応じて計算方法を切り替えるケースです。
=CHOOSE(D2, SUM(B2:B10), AVERAGE(B2:B10), MAX(B2:B10))
D2が 1 ならSUM、2 ならAVERAGE、3 ならMAXの結果です。切り替えが簡単にできて便利ですよ。
よくあるエラーと対処法
CHOOSE関数で発生しやすいエラーをまとめました。
| エラー | 原因 | 対処法 |
|---|---|---|
#VALUE! | インデックスに文字列や空白を指定した | インデックスが数値になっているか確認する |
#VALUE! | インデックスが0以下、または値の個数を超えている | 値の個数(1〜30)の範囲内か確認する |
#REF! | 値に指定したセル参照が無効になった | 参照先のセルが削除されていないか確認する |
| 意図しない結果 | インデックスに小数が入っている | INT関数で整数に変換してから渡す |
インデックスが範囲外のときにエラーを回避したい場合は、IFERROR関数で囲むのがおすすめです。
=IFERROR(CHOOSE(A2, "優", "良", "可"), "対象外")
A2が1〜3以外の値でも「対象外」と表示されるので、エラー表示を防げます。
IF・SWITCH関数との違い・使い分け
CHOOSE関数と似た働きをするIF関数・SWITCH関数との違いを比較表で整理しました。
| 比較項目 | CHOOSE関数 | IF関数 | SWITCH関数 |
|---|---|---|---|
| 判定方法 | インデックス番号(1, 2, 3…) | 条件式(TRUE/FALSE) | 値の一致判定 |
| 得意な場面 | 連番に対応する値を返す | 「〇〇以上」「〇〇かつ〇〇」の判定 | 不連続な値(”A”, “B”, “C”)の振り分け |
| 数式の読みやすさ | 値を並べるだけでシンプル | ネストが深いと読みにくい | 条件と結果がペアで読みやすい |
| 最大分岐数 | 30パターン | ネスト制限あり | 最大126ペア |
| 条件の柔軟性 | 低い(1始まりの連番のみ) | 高い(自由な条件式) | 中程度(値の一致のみ) |
使い分けの判断基準
迷ったときは、次の基準で選んでみてください。
- CHOOSE関数: WEEKDAY・MONTHなど「1から始まる連番」を返す関数と組み合わせるとき
- IF関数: 「売上が10万円以上なら」のように、数値の大小や複合条件で分岐するとき
- SWITCH関数: 「商品コードがA001なら〜、B002なら〜」のように、不連続な値で分岐するとき
IF関数やSWITCH関数の詳しい使い方は、以下の記事で解説しています。
- INDEX関数で行列を指定して値を取得する方法は「スプレッドシートのINDEX関数の使い方」をご覧ください
- VLOOKUPで検索キーから値を引く方法は「スプレッドシートのVLOOKUP関数の使い方」をご覧ください
まとめ
この記事では、スプレッドシートのCHOOSE関数の使い方を解説しました。
ポイントをおさらいしましょう。
- CHOOSE関数は、インデックス番号に対応する値を返す関数
- WEEKDAY関数やMONTH関数と組み合わせると、曜日名や四半期ラベルを簡単に表示できる
- 値にはセル参照や数式も指定できるので、集計方法の切り替えにも使える
- インデックスが範囲外のときはIFERROR関数でエラーを回避する
- 連番以外の条件分岐にはIF関数やSWITCH関数を使い分ける
IF関数のネストが深くなってきたら、CHOOSE関数を試してみてください。数式がすっきり読みやすくなりますよ。
