=CHOOSE(B2,"Low","Medium","High")は、B2で指定した位置の値を返します。1ならLow、2ならMedium、3ならHighです。1つ目の引数がインデックスで、その後ろがすべて選ぶ対象のリストです。
| A | B | C | |
|---|---|---|---|
| 1 | Task | Priority | Label |
| 2 | Fix login | 3 | High |
| 3 | Update docs | 1 | Low |
| 4 | Review PR | 2 | Medium |
| 5 | Clean inbox | 1 | Low |
| 6 | Ship release | 3 | High |
優先度を2に変えると、ラベルがMediumに変わります。優先度を4にすると、リストに値が3つしかないので#VALUE!になります。0でも同じです。
CHOOSE関数の構文
=CHOOSE(index_num, value1, [value2], ...)
index_num(インデックス): 1から値の数(最大254)までの数値。小数は整数に切り捨てられるので、2.9なら値2が選ばれます。value1, value2, ...(値): 返すもの。数値、文字列、セル参照、数式、範囲全体を指定できます。
日付から曜日名を出す
WEEKDAYは1(日曜日)から7(土曜日)までの数値を返し、これはまさにCHOOSEが求めるインデックスです。
| A | B | |
|---|---|---|
| 1 | Date | Day |
| 2 | 2026-03-02 | Mon |
| 3 | 2026-03-06 | Fri |
| 4 | 2026-03-07 | Sat |
| 5 | 2026-03-11 | Wed |
| 6 | 2026-03-15 | Sun |
2026-03-02は月曜日なので、B2にはMonと表示されます。日付を編集すると曜日名も変わります。=TEXT(A2,"ddd")ならリストなしで同じ短い名前が出ます(曜日のページで説明しています)。「平日」と「週末」のような独自のラベルや、別の曜日から始まる週が欲しいときはCHOOSEを使います。
入れ子のIFの代わりにCHOOSE
条件が位置の番号なら、CHOOSEがIFの連なりの代わりになります。下の2つの数式は、どちらもB1のシナリオ番号に対する成長率を返します。
| A | B | |
|---|---|---|
| 1 | Scenario (1 to 3) | 2 |
| 2 | Growth (CHOOSE) | 5% |
| 3 | Growth (nested IF) | 5% |
| 4 | ||
| 5 | Sales this year | 120,000 |
| 6 | Sales next year | 126,000 |
シナリオ2では5%になり、来年の売上は126,000です。B1で3を選ぶと8%になります。CHOOSE版はシナリオをいくつ加えても1段のままですが、IF版はシナリオごとに1段深くなります。条件が文字列のラベルならSWITCHを、0から999のような値の区分なら検索用の表を使います。
範囲全体を選ぶ
値には範囲も指定できるので、SUMやAVERAGEがどの列を読むかをCHOOSEで決められます。B2:B5、C2:C5、D2:D5に1月から3月の売上があり、F2に月の番号があるとき:
=SUM(CHOOSE(F2, B2:B5, C2:C5, D2:D5))
F2が3なら、3月の列D2:D5を合計します。列が多いと範囲をすべて並べるのが長くなりますが、INDEXなら1つの範囲で同じことができます:=SUM(INDEX(B2:D5,0,F2))。0は「すべての行」を意味します(説明はINDEXのページにあります)。範囲が隣り合っていないときや、別々のシートにあるときは、CHOOSEが役に立ちます。
CHOOSECOLSとCHOOSEROWS
Microsoft 365とExcel 2024には、範囲から番号で列全体や行全体を選び、結果をスピルさせる関数が2つ加わりました。マイナスの数は末尾から数えます。
| A | B | C | D | E | F | G | |
|---|---|---|---|---|---|---|---|
| 1 | Product | Category | Price | Stock | Product | Stock | |
| 2 | Apple | Fruit | $1.20 | 40 | Apple | 40 | |
| 3 | Pear | Fruit | $1.50 | 25 | Pear | 25 | |
| 4 | Carrot | Vegetable | $0.80 | 60 | Carrot | 60 | |
| 5 | Bread | Bakery | $2.40 | 15 | Bread | 15 | |
| 6 | Milk | Dairy | $1.10 | 30 | Milk | 30 |
F1は見出しを含めてProductとStockの列をスピルします。番号の順番は自由で、=CHOOSECOLS(A1:D6,4,1)ならStockがProductの前に来ます。=CHOOSEROWS(A1:D6,1,-1)は見出し行と最後の行を返します。
練習: 配送方法ごとの送料
| A | B | C | |
|---|---|---|---|
| 1 | Order | Method | Cost |
| 2 | 1001 | 2 |
やってみよう: 方法1は5、方法2は9、方法3は15かかります。C2で、CHOOSEを使ってB2の方法の番号に対する送料を返してください。
よくある質問
ExcelのCHOOSEは何をしますか?
番号に応じて値のリストから1つを返します:=CHOOSE(2,"Red","Green","Blue")はGreenを返します。1つ目の引数が位置を選び、その後ろの値には数値、文字列、セル参照、範囲を指定できます。
CHOOSEが#VALUE!を返すのはなぜですか?
インデックスが1未満か、値の数より大きいからです。=CHOOSE(4,"Red","Green","Blue")には選べる値が3つしかありません。小数のインデックスは整数に切り捨てられるので、2.7なら2番目の値が選ばれます。
IFではなくCHOOSEを使うのはどんなときですか?
条件が1、2、3のような位置の番号のときです。=CHOOSE(B2,5,9,15)は=IF(B2=1,5,IF(B2=2,9,15))より短く、読みやすくなります。連続した番号ではない条件には、IFS、SWITCH、検索用の表を使います。
ExcelのCHOOSECOLSとは何ですか?
範囲から選んだ列を返す新しい関数です:=CHOOSECOLS(A1:D5,1,4)は1列目と4列目を返します。CHOOSEROWSは行について同じことをし、マイナスの数は末尾から数えます。どちらもMicrosoft 365かExcel 2024が必要です。