Deprecated : The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
CHOOSE関数の使い方(リストからインデックスに対応した値を返す):Excel関数
Home »
エクセル関数一覧表 »
Excel関数の目次 »
CHOOSE関数の使い方
更新:2025/1/20;作成:2009/7/11
リストから指定した値を返す
チューズ
=CHOOSE(インデックス,値1,値2,値3・・・)
値のリストから指定したインデックスの値を取出します。
インデックスに指定した番号に基づいて、最大 254 個の値の中から 1 つの値だけを選択できます 。 なお、Excel2003までは29個です。
インデックスが 1 の場合は値1 が返され、2 の場合は値2 が返されます。
インデックスが 1 より小さいか、引数リストの値の個数よりも多い場合、エラー値 #VALUE! が返されます。 インデックスに小数点以下の値が含まれていても、整数部分だけが計算に使われます 。
値1,値2,... の引数には、数値、セル参照、名前、数式、関数、または文字列を指定できます。
リストを作成する場合はLOOKUP関数 やVLOOKUP関数 が使えます。
わざわざリストを作成するまでもないようなときに利用できます。
【使用例1】
B列の値によって、「1です」「2です」・・・「4です」と表示します。
D2セル = CHOOSE(B2,1,2,3,4) &"です" としてD8までコピーします。
(2021/10/21 数式を書き換えました。=CHOOSE(B2,"1です","2です","3です","4です")はちょっと冗長でしたね(;^_^A )
D5は「インデックスに小数点以下の値が含まれていても、整数部分だけが計算に使われます 。」よって、3となります。
D7は「インデックス(5)が 引数リストの値の個数よりも多いため」エラーとなります。
D8は「インデックス(0)が 1 より小さいため」エラーとなります。
上記のエラーを表示しないようにするには
=IF(OR(B2<1,B2>4),"" ,CHOOSE(B2,1,2,3,4)&"です") =IF(ISERROR(CHOOSE(B2,1,2,3,4)),"", CHOOSE(B2,1,2,3,4)&"です") =IFERROR( CHOOSE(B2,1,2,3,4)&"です","")
といった式が考えられます。
これらの関数の使い方は ISERROR関数 IF関数 IFERROR関数 をご覧ください。
エラーのセルが空欄「””」になりました。
問題1
消費税が軽減税率 8%と標準税率 10%が混在しているケースがあるとします。
課税されるものには8%の課税をします。下表の税額の列を埋めなさい。
B
C
D
E
2
商品番号
金額
税区分
消費税額
3
E151
15,000
軽減税率
1,200
4
G504
25,000
軽減税率
2,000
5
E153
18,000
標準税率
1,800
6
G507
35,400
軽減税率
2,832
7
G509
31,800
標準税率
3,180
問題1の解答例
軽減税率と標準税率の選択をMATCH関数で行ってみました。
MATCH(D3,{"軽減税率","標準税率"},0) として、D列が軽減税率の時は「1」、非課税の時は「2」が返されます。
CHOOSE関数で「1」の時は8%、「2」の時は10%を返すようにしています。 金額に8%または10%を掛けることで税額を求めました。
=C3*CHOOSE(MATCH(D3,{"軽減税率","標準税率"},0),8%,10%)
IF関数を使って書くと、
=C3*IF(D3="軽減税率",8%,IF(D3="標準税率",10%,"") )
といった感じになります。
問題2
下表のような3パターン(1:上昇パターン、2:平坦パターン、3:下降パターン)を計算したいと考えました。
B9セルにパターンのNo1〜3を入力すると、D8セルの売上金額がどのように変化するのかをC9:F9セルに計算しなさい。
B
C
D
E
F
2
No
パターン
今月
来月
再来月
3
1
上昇パターン
100%
120%
130%
4
2
平坦パターン
100%
100%
100%
5
3
下降パターン
100%
90%
80%
6
7
売上金額
1,500,000
8
No
今月
来月
再来月
9
1
上昇パターン
1,500,000
1,800,000
1,950,000
問題2の解答例
C9セルに =CHOOSE(B9,C3,C4,C5) と入力します。
D9セルには =$D$7*CHOOSE($B$9,D3,D4,D5) と入力して、右方向へ数式をコピーします。
パターンが2,3の場合は下図のような結果が得られます。
問題3
適切な例ではありませんが、使い方の例として書いています 。
実際に曜日を求めたいときには=TEXT(B2,"aaa") とすればよいです。
ここではあくまでもCHOOSE関数の使い方の例として書いています。
C列に曜日を求めなさい。
B
C
2
2025/4/1
火
3
2025/4/2
水
4
2025/4/3
木
5
2025/4/4
金
6
2025/4/5
土
7
2025/4/6
日
8
2025/4/7
月
9
2025/4/8
火
問題3の解答例
C2セルに =CHOOSE(WEEKDAY(B2),"日","月","火","水","木","金","土") として、下方向へコピーしています。
曜日を求めるのにWEEKDAY関数を利用し、その返り値から文字列の曜日を取り出しています。
問題4
セル範囲を指定することもできます。
商品A〜Cの合計を求めなさい。
B
C
D
E
F
G
2
商品A
商品B
商品C
商品A
50,000
3
10,000
5,000
1,000
商品B
25,000
4
10,000
5,000
1,000
商品C
5,000
5
10,000
5,000
1,000
6
10,000
5,000
1,000
7
10,000
5,000
1,000
問題4の解答例
商品のデータ範囲をCHOOSE関数で取り出します。
G2セルに=SUM(CHOOSE(MATCH(F2,$B$2:$D$2,0) ,$B$3:$B$7,$C$3:$C$7,$D$3:$D$7))と入力して下方向へコピーします。
この数式の MATCH(F2,$B$2:$D$2,0) 部分を計算すると、↓のようになり、各セル範囲を指定することができます。
G2セル=SUM(CHOOSE(1 ,$B$3:$B$7 ,$C$3:$C$7,$D$3:$D$7))
G3セル=SUM(CHOOSE(2 ,$B$3:$B$7,$C$3:$C$7 ,$D$3:$D$7))
G4セル=SUM(CHOOSE(3 ,$B$3:$B$7,$C$3:$C$7,$D$3:$D$7 ))
Excel for Microsoft365,Excel2024の場合は、CHOOSECOLS関数を使って求めることができます。
CHOOSECOLS関数の詳細な使い方は 指定された行・列の配列を返すCHOOSEROWS関数・CHOOSECOLS関数の使い方 をご覧ください。
スポンサードリンク
Home »
エクセル関数一覧表 »
CHOOSE関数の使い方
PageViewCounter
Since2006/2/27