Menu

CHOOSE関数の使い方: Excelで番号から値を選ぶ

=CHOOSE(B2,"Low","Medium","High")は、B2が1ならLow、2ならMedium、3ならHighを返します。数値を名前に対応させる、合計する範囲を選ぶ、入れ子のIFを置き換える、CHOOSECOLSで列を選ぶ方法を学びます。

このページのシートはすべて実際に動きます。数値や数式を変えると再計算されます。

=CHOOSE(B2,"Low","Medium","High")は、B2で指定した位置の値を返します。1ならLow、2ならMedium、3ならHighです。1つ目の引数がインデックスで、その後ろがすべて選ぶ対象のリストです。

優先度の番号をラベルに
C2
ABC
1TaskPriorityLabel
2Fix login3High
3Update docs1Low
4Review PR2Medium
5Clean inbox1Low
6Ship release3High
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

優先度を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が求めるインデックスです。

日付の曜日名
B2
AB
1DateDay
22026-03-02Mon
32026-03-06Fri
42026-03-07Sat
52026-03-11Wed
62026-03-15Sun
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

2026-03-02は月曜日なので、B2にはMonと表示されます。日付を編集すると曜日名も変わります。=TEXT(A2,"ddd")ならリストなしで同じ短い名前が出ます(曜日のページで説明しています)。「平日」と「週末」のような独自のラベルや、別の曜日から始まる週が欲しいときはCHOOSEを使います。

入れ子のIFの代わりにCHOOSE

条件が位置の番号なら、CHOOSEがIFの連なりの代わりになります。下の2つの数式は、どちらもB1のシナリオ番号に対する成長率を返します。

シナリオを選ぶ
B2
AB
1Scenario (1 to 3)2
2Growth (CHOOSE)5%
3Growth (nested IF)5%
4
5Sales this year120,000
6Sales next year126,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つ加わりました。マイナスの数は末尾から数えます。

名前と在庫だけ
F1
ABCDEFG
1ProductCategoryPriceStockProductStock
2AppleFruit$1.2040Apple40
3PearFruit$1.5025Pear25
4CarrotVegetable$0.8060Carrot60
5BreadBakery$2.4015Bread15
6MilkDairy$1.1030Milk30
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

F1は見出しを含めてProductとStockの列をスピルします。番号の順番は自由で、=CHOOSECOLS(A1:D6,4,1)ならStockがProductの前に来ます。=CHOOSEROWS(A1:D6,1,-1)は見出し行と最後の行を返します。

練習: 配送方法ごとの送料

配送方法
C2
ABC
1OrderMethodCost
210012
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

やってみよう: 方法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が必要です。

Coddyのプログラミング言語のイラスト

Coddyでコードを学ぼう

始める