目次
このチュートリアルでは、CHOOSE関数の構文と基本的な使い方を説明し、ExcelでCHOOSE式を使用する方法を示すいくつかの自明でない例を提供します。
CHOOSEは、単体ではあまり役に立たないかもしれませんが、他の関数と組み合わせることで多くの素晴らしい効果を発揮するExcel関数の1つです。 最も基本的な使い方は、値の位置を指定してリストから値を取得するCHOOSE関数です。 このチュートリアルでは、さらに進んだ使い方をいくつか紹介しますので、調べる価値は十分にあるでしょう。
Excel CHOOSE関数 - 構文と基本的な使用方法
ExcelのCHOOSE関数は、指定した位置に基づいてリストの中から値を返すように設計されています。
本機能は、Excel 365、Excel 2019、Excel 2016、Excel 2013、Excel 2010、Excel 2007で利用可能です。
CHOOSE関数のシンタックスは以下の通りです。
CHOOSE(index_num、value1、[value2]、...)どこで
インデックス番号 (必須) - 返す値の位置。 1から254の間の任意の数値、セル参照、または別の数式を指定できます。
値1, 値2, ... - 最大254個の値のリストから選択します。 Value1は必須、その他の値は任意です。 これらは、数値、テキスト値、セル参照、数式、または定義された名前にすることができます。
最も単純な形のCHOOSE式の例です。
=CHOOSE(3, "Mike", "Sally", "Amy", "Neal")
この式が "Amy "を返すのは インデックス・ナンバー は3であり、"Amy "はリストの3番目の値である。
Excel CHOOSE関数 - 覚えておきたい3つのポイント!
CHOOSEは非常にシンプルな関数なので、ワークシートへの実装で困ることはほとんどありません。 CHOOSE式が返す結果が予想外だったり、求めていた結果でない場合は、次のような原因が考えられます。
- 選択できる値の数は254個に制限されています。
- もし インデックスナンバー が1より小さいか、リストに含まれる値の数より大きい場合、#VALUE!
- もし インデックス・ナンバー が分数の場合,最小の整数に切り捨てられる。
エクセルでCHOOSE関数を使う方法-数式例
以下の例では、CHOOSE が他の Excel 関数の機能を拡張し、多くの人が実現不可能と考えるような一般的なタスクに対しても、代替ソリューションを提供できることを紹介しています。
ネストされたIFの代わりにExcelのCHOOSEを使用する
Excelで最も頻繁に行われる作業の1つは、指定された条件に基づいて異なる値を返すことです。 ほとんどの場合、これは古典的な入れ子のIF文を使って行うことができます。 しかし、CHOOSE関数は、迅速かつ分かりやすい代替手段となります。
例1.条件によって異なる値を返す
学生の点数の列があり、以下の条件に基づいて点数にラベルを付けたいとします。
結果 | スコア |
悪い | 0 - 50 |
満足 | 51 - 100 |
良い | 101 - 150 |
優秀 | 151件以上 |
これを実現する一つの方法は、いくつかのIF式を互いに入れ子にしておくことです。
=IF(B2>=151, "優秀", IF(B2>=101, "良好", IF(B2>=51, "満足", "不良")) ))
もう一つの方法は、条件に対応するラベルを選ぶことです。
=CHOOSE((B2>0) + (B2>=51) + (B2>=101) + (B2>=151), "Poor", "Satisfactory", "Good", "Excellent").
この処方の仕組み
での インデックス・ナンバー 例えば、セル B2 の値は最初の 3 つの条件を満たすので、このような中間結果が得られます。
=CHOOSE(TRUE + TRUE + TRUE + FALSE, "Poor", "Satisfactory", "Good", "Excellent")
多くのExcelの数式では、「真」は「1」、「偽」は「0」に相当することから、この数式はこのように変換されます。
=CHOOSE(1 + 1 + 1 + 0, "Poor", "Satisfactory", "Good", "Excellent")
加算演算を行った後、次のようになる。
=CHOOSE(3, "Poor"(悪い), "Satisfactory"(満足), "Good"(良い), "Excellent"(素晴らしい))
その結果、リストの3番目の値である "Good "が返されます。
ヒント
- 数式をより柔軟にするために、ハードコードされたラベルの代わりに、セル参照を使用することなどができます。
=CHOOSE((B2>0) + (B2>=51) + (B2>=101) + (B2>=151)), $E$1, $E$2, $E$3, $E$4)
- どの条件もTRUEでない場合は インデックスナンバー これを避けるには、CHOOSE を IFERROR 関数で次のようにくくるだけでよい。
=IFERROR(CHOOSE((B2>0) + (B2>=51) + (B2>=101) + (B2>=151), "Poor", "Satisfactory", "Good", "Excellent"), "")
例2.条件によって異なる計算をする
同様に、ExcelのCHOOSE関数を使用すると、複数のIF文を互いに入れ子にすることなく、一連の可能な計算/式の中から1つの計算を実行することができます。
例として、各セラーの売上高に応じた手数料を計算してみましょう。
委員会 | 売上高 |
5% | 0ドルから50ドル |
7% | 51ドルから100ドル |
10% | 101ドル以上 |
B2に売上金額を入れると、計算式は次のような形になる。
=CHOOSE((B2>0) + (B2>=51) + (B2>=101), B2*5%, B2*7%, B2*10%)です。
数式にパーセンテージをハードコードする代わりに、参照表に対応するセルがあれば、それを参照することができます。 ただ、$記号を使って参照を修正することを忘れないでください。
=CHOOSE((B2>0) + (B2>=51) + (B2>=101), B2*$E$2, B2*$E$3, B2*$E$4)
ランダムなデータを生成するExcelのCHOOSE式
ご存知のように、Microsoft Excelには、指定した下限値と上限値の間のランダムな整数を生成する特別な関数、RANDBETWEEN関数があります。 それを インデックスナンバー の引数で指定すれば、数式はほとんどどんなランダムなデータでも生成してくれます。
例えば、この数式はランダムな試験結果のリストを作成することができます。
=CHOOSE(RANDBETWEEN(1,4), "Poor", "Satisfactory", "Good", "Excellent")
この式の理屈は明白で、RANDBETWEENは1から4までの乱数を生成し、CHOOSEはあらかじめ定義された4つの値のリストの中から対応する値を返すというものです。
注意:RANDBETWEENは揮発性の関数で、ワークシートを変更するたびに再計算されます。 その結果、ランダム値のリストも変更されます。 これを防ぐには、数式をその値で置換するために ペースト・スペシャル 機能を搭載しています。
左Vlookupを行うためのCHOOSE式
Excelで縦方向の検索を行ったことがある方は、VLOOKUP関数が一番左の列しか検索できないことをご存知でしょう。 検索列の左側の値を返す必要がある状況では、INDEX / MATCHの組み合わせを使用するか、VLOOKUPにCHOOSE関数をネストしてトリックします。 その方法は次のとおりです。
A列にスコア、B列に生徒名のリストがあり、特定の生徒のスコアを取得したいとします。 戻り値の列はルックアップ列の左側にあるため、通常のVlookup式では#N/Aエラーが返されます。
これを解決するには、CHOOSE関数で列の位置を入れ替え、Excelに列1がBで列2がAであることを知らせます。
=choose({1,2}, b2:b5, a2:a5)
で{1,2}の配列を与えているからです。 インデックスナンバー 引数で,CHOOSE 関数は,以下の範囲を受け入れる。 価値 の引数を指定します(通常は指定しません)。
ここで、上記の数式を table_array VLOOKUPの引数です。
=vlookup(e1,choose({1,2}, b2:b5, a2:a5),2,false)
そして、左側へのルックアップは問題なく実行されます。
翌営業日に返送する数式を選択する
明日出勤すべきか、それとも家でのんびり過ごすか、迷ったときは、ExcelのCHOOSE関数を使えば、次の出勤日を調べることができます。
勤務日が月曜日から金曜日と仮定すると、計算式は次のようになります。
=today()+choose(平日(today()),1,1,1,3,2)
一見、トリッキーだが、よく見ると、この式のロジックは簡単だ。
WEEKDAY(TODAY()は、今日の日付に対応する1(日曜日)から7(土曜日)までの通し番号を返します。 この番号が インデックス・ナンバー の引数は、私たちのCHOOSE式です。
値1 - バリューセブン (1,1,1,1,3,2) は、現在の日付に何日追加するかを決める。 今日が日曜日から木曜日 (index_num 1 - 5) なら、1を追加して次の日に返す。 今日が金曜日 (index_num 6) なら、3を追加して次の月曜日に返す。 今日が土曜日 (index_num 7) なら、2を追加してまた次の月曜日に返す。 そう、とても簡単だ:)。
日付からカスタム日/月名を返すCHOOSE式
フルネーム(月、火など)やショートネーム(月、火など)といった定型の曜日名を取得したい場合、「Excelで日付から曜日を取得する」の例で説明したように、TEXT関数を使用することができます。
曜日や月名をカスタムフォーマットで返したい場合は、CHOOSE機能を次のように使用します。
曜日を取得するため。
=CHOOSE(WEEKDAY(A2),"Su","Mo","Tu","We","Th","Fr","Sa")
1ヶ月を確保するために
=CHOOSE(MONTH(A2), "Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec")
ここで、A2 は元の日付を含むセルです。
このチュートリアルで、ExcelのCHOOSE関数を使用してデータモデルを強化する方法について、いくつかのアイデアを得ることができたと思います。 読んでくださってありがとうございました!来週のブログでお会いしましょう
練習用ワークブックをダウンロードする
Excel CHOOSE関数の例