メインコンテンツへスキップ

Excel CHOOSE関数

Author: Sun Last Modified: 2025-08-06
doc choose function 1

説明

構文と引数

使用方法と例


説明

CHOOSE関数は、指定されたインデックス番号に基づいて値リストから値を返します。例えば、CHOOSE(3,"Apple","Peach","Orange")は「Orange」を返します。インデックス番号は3であり、「Orange」は関数内のインデックス番号の後の3番目の値です。

構文と引数

数式の構文

CHOOSE(index_num, value1, [value2], …)

引数

  • Index_num: 必須。1〜254の間の数値で、どの引数値が選択されるかを示します。index_numが1〜254の範囲外の場合、CHOOSE#VALUE!エラー値を返します。index_numが小数点以下の値の場合、数式が使用される前に整数に切り捨てられます。
  • Value1: 必須。数式内で選択可能な最初の値です。
  • Value2: オプション。2番目から254番目までの選択可能な値です。

Value1, value2…は、数字、テキスト、数式、セル参照、または定義済み名前である可能性があります。

戻り値

CHOOSE関数は、指定された位置に基づいてリストから値を返します。

使用方法と例

この部分では、CHOOSE関数の使用方法を説明するために、いくつかのシンプルで代表的な例を紹介します。

例1 - 基本的な使い方: CHOOSE 関数のみを使用してリストの値を選択

数式1:

=CHOOSE(3,"a","b","c","d")

結果: c(これはCHOOSE関数内のインデックス番号3の後の3番目の引数です)

注意: 値がテキストの場合、二重引用符で囲んでください。

数式2:

=CHOOSE(2,A1,A2,A3,A4)

結果: Kate(A2の値)。インデックス番号は2で、A2はCHOOSE関数内の2番目の値です。

数式3:

=CHOOSE(4,8,9,7,6)

結果: 6(関数内の4番目のリスト引数です)
doc choose function 2


例2 – 複数の条件に基づいて異なる結果を返す

各製品の偏差リストがあり、以下のように条件に基づいてラベル付けする必要があると仮定します。
doc choose function 3

通常、IF関数を使用できますが、ここではCHOOSE関数を使って簡単に問題を解決する方法を紹介します。

数式:

=CHOOSE((B7>0)+(B7>1)+(B7>5),"Top","Middle","Bottom")

説明:

(B7>0)+(B7>1)+(B7>5): インデックス番号、B7は2で、0と1より大きく5より小さいため、中間結果として次を得ます:

=CHOOSE(True+Ture+False,"Top","Middle","Bottom")

ご存知の通り、True = 1、False = 0なので、数式は次のようになります:

=CHOOSE(1+1+0,"Top","Middle","Bottom")

そして

=CHOOSE(2,"Top","Middle","Bottom")

結果: Middle
doc choose function 4


例3 – 条件に基づいて異なる計算結果を返す

以下のように、数量と価格に基づいて各製品のリベートを計算する必要があると仮定します:
doc choose function 5

数式:

=CHOOSE((B8>0)+(B8>100)+(B8>200)+(B8>300),B8*C8*0.1,B8*C8*0.2,B8*C8*0.3,B8*C8*0.5)

説明:

(B8>0)+(B8>100)+(B8>200)+(B8>300): インデックス番号、B8は102で、100より大きく201より小さいため、この部分では次のような結果が返されます:

=CHOOSE(true+true+false+false,B8*C8*0.1,B8*C8*0.2,B8*C8*0.3,B8*C8*0.5)

=CHOOSE(1+1+0+0,B8*C8*0.1,B8*C8*0.2,B8*C8*0.3,B8*C8*0.5)

そして

=CHOOSE(2,B8*C8*0.1,B8*C8*0.2,B8*C8*0.3,B8*C8*0.5)

B8*C8*0.1,B8*C8*0.2,B8*C8*0.3,B8*C8*0.5: 選択肢となる値、リベートは価格 * 数量 * リベート率に等しくなります。ここで、インデックス番号は2なので、B8*C8*0.2が選ばれます。

結果: 102*2*0.2=40.8
doc choose function 6


例4 – リストからランダムに選択する

Excelでは、特定のリストからランダムに値を選択する必要がある場合があります。このような場合、CHOOSE関数が役立ちます。

リストからランダムに1つの値を選択する:

数式:

=CHOOSE(RANDBETWEEN(1,5),$D$2,$D$3,$D$4,$D$5,$D$6)

説明:

RANDBETWEEN(1,5): インデックス番号、1から5の間でランダムに数値を取得します

$D$2,$D$3,$D$4,$D$5,$D$6: 選択肢となる値のリスト
doc choose function 7


例5 – CHOOSE関数とVLOOKUP関数を組み合わせて左側の列の値を返す

一般的に、VLOOKUP関数を使用します =VLOOKUP (value, table, col_index, [range_lookup]) 指定された値に基づいてテーブル範囲から値を返します。しかし、 VLOOKUP 関数では、返却列が検索列の左にある場合、エラー値が返されます(下のスクリーンショット参照):
doc choose function 8

この場合、CHOOSE関数とVLOOKUP関数を組み合わせることで問題を解決できます。

数式:

=VLOOKUP(E1,CHOOSE({1,2},B1:B7,A1:A7),2,FALSE)

説明:

CHOOSE({1,2},B1:B7,A1:A7): VLOOKUP関数内のtable_range引数です。{1,2}は、VLOOKUP関数内のcol_num引数に基づいてインデックス番号引数として1または2を表示することを意味します。ここで、VLOOKUP関数内のcol_numは2なので、 CHOOSE 関数は次のように表示されます: CHOOSE(2, B1:B7,A1:A7), つまり、A1:A7から値を選択します。
doc choose function 9


例6 – 指定された日付に基づいて曜日または月を返す

CHOOSE関数を使用すると、指定された日付に基づいて相対的な曜日や月を返すこともできます。

数式1: 日付に基づいて曜日を返す

=CHOOSE(WEEKDAY(),"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday")

説明:

WEEKDAY(): インデックス番号引数で、指定された日付の曜日番号を取得します。たとえば、WEEKDAY(A5)は6を返し、インデックス番号引数は6になります。

"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday": 値リスト引数で、「日曜日」から始まります。曜日番号「1」は「日曜日」を示します。

数式2: 日付に基づいて月を返す

=CHOOSE(MONTH(),"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec")

説明:

MONTH(): インデックス番号引数で、指定された日付から月番号を取得します。たとえば、MONTH(A5)は3を返します。
doc choose function 10


例7 – 今日に基づいて次の平日/週末の日付を返す

日常業務では、今日に基づいて次の平日または週末を計算したい場合があります。ここでもCHOOSE関数が役立ちます。

例えば、今日は2018年12月20日(木)で、次の平日と週末の日付を取得する必要があります。

数式1: 今日の日付を取得する

=TODAY()

結果: 2018/12/20

数式2: 今日の曜日番号を取得する

=WEEKDAY(TODAY())

結果: 5(今日が2018年12月20日の場合)

曜日番号リストは次のスクリーンショットの通りです:
doc choose function 10

数式3: 次の平日を取得する

=TODAY()+CHOOSE(WEEKDAY(TODAY()),1,1,1,1,1,3,2)

説明:

Today(): 現在の日付を返します

WEEKDAY(TODAY()): CHOOSE関数内のインデックス番号引数で、今日の曜日番号を取得します。たとえば、日曜日は1、月曜日は2…

1,1,1,1,1,3,2: CHOOSE関数内の値リスト引数です。たとえば、weekday(today())が1(日曜日)を返した場合、値リストから1を選択し、全体の数式は=TODAY()+1に変わります。これは、次の月曜日を返すために1日加えることを意味します。weekday(today())が6(金曜日)を返した場合、値リストから3を選択します。なぜなら、金曜日は次の月曜日まで3日間離れています。

結果(今日が2018年12月20日の場合):

=2018/12/20+CHOOSE(5,1,1,1,1,1,3,2)

=12/20/2018+1

=12/21/2018

数式4: 次の週末の日付を取得する

=TODAY()+CHOOSE(WEEKDAY(TODAY()),6,5,4,3,2,1,1)

説明:

6,5,4,3,2,1,1: CHOOSE関数内の値リスト引数です。たとえば、weekday(today())が1(日曜日)を返した場合、値リストから6を選択し、全体の数式は=TODAY()+6に変わります。これは、次の土曜日を返すために6日間加えることを意味します。

結果:

=2018/12/20+CHOOSE(5,6,5,4,3,2,1,1)

=12/20/2018+2

=12/22/2018
doc choose function 10


サンプルファイル
doc sample file


最高のオフィス生産性ツール

Kutools for Excel - 群衆から一歩抜け出すためのお手伝い

🤖 KUTOOLS AI アシスタント: 次の基盤でデータ分析を革新: スマート実行   |  コード生成  |  カスタム数式を作成  |  データを分析しチャートを生成  |  Kutools 機能を呼び出し
人気機能: 重複を検索、ハイライト、または特定  |  空白行を削除  |  データを失うことなく列やセルを結合  |  数式を使わずに丸める ...
スーパーVLookup: 複数条件 | 複数値 | 複数シート間 | ファジーマッチ...
高度なドロップダウンリスト: 簡単ドロップダウンリスト  |  依存ドロップダウンリスト  |  複数選択ドロップダウンリスト...
列マネージャー: 特定の数の列を追加 |  列を移動 |  非表示列の可視性ステータスを切り替え 列を比較して同じおよび異なるセルを選択 ...
注目機能: グリッドフォーカス |  デザインビュー |  強化された数式バー |  ワークブックとシートマネージャー | リソースライブラリ (オートテキスト) |  日付ピッカー |  ワークシートを統合 |  セルの暗号化/復号化 |  リストによるメール送信 |  スーパーフィルター |  特殊フィルタ(太字、斜体、取り消し線のフィルタリング...) ...
上位15のツールセット12個の テキストツールテキストの追加特定の文字を削除 ...) |  50以上の チャート タイプガントチャート ...) |  40以上の実用的な 数式誕生日に基づいて年齢を計算 ...) |  19個の 挿入ツールQRコードの挿入パスからの画像挿入 ...) |  12個の 変換ツール単語に変換する通貨変換 ...) |  7つの マージ&分割ツール高度な行のマージExcelセルの分割 ...) |  ... など
お好みの言語でKutoolsを使用できます。英語、スペイン語、ドイツ語、フランス語、中国語、その他の40以上の言語に対応!

Kutools for Excelは300以上の機能を誇り、必要なものがクリック一つで利用可能です...


Office Tab - Microsoft Office(Excel含む)でタブ形式の読み書きを可能に

  • 数十の開いている文書間を1秒で切り替え!
  • 毎日数百回のマウスクリックを減らし、マウス疲れとはおさらば!
  • 複数の文書を閲覧・編集する際の作業効率を50%向上します。
  • Chrome、Edge、Firefoxのように、Office(Excel含む)に効率的なタブをもたらします。