条件に応じて処理を分岐させるときは、IFやIFSといった関数を使用するのが一般的だ。これらのほかにも、Excelには「条件分岐処理を行える関数」がいくつか用意されている。ということで、今回は関数CHOOSEの使い方を紹介していこう。関数IFSに比べるとマイナーな関数であるが、「引数の指定が少なくて済む」という利点がある。

関数CHOOSEを使ったデータの取得

今回は、関数CHOOSEを使って条件分岐を行う方法を紹介していこう。CHOOSEはインデックス番号(1、2、3、…の整数)に応じて条件を分岐させる関数となる。このため、関数MATCHと組み合わせて使用されるケースが多い。

  • インデックス番号に応じて処理を分岐させる関数CHOOSE、MATCH

まずは、関数CHOOSEの書式から紹介していこう。関数CHOOSEを使用するときは、以下のように引数を指定する。

◆関数CHOOSEの書式
=CHOOSE(インデックス番号, 1の処理, 2の処理, 3の処理, …)

第1引数となる「インデックス番号」にはセル参照を指定するのが一般的だ。続いて、この「インデックス番号」が数値の「1」であった場合の処理、「2」であった場合の処理、「3」であった場合の処理を順番に記述していく。

少しわかりにくいと思うので、具体的な例を使って解説していこう。

たとえば、ある商店街がイベントを開催するとしよう。このイベントを実施するには、「テント、長机、椅子」をレンタルし、オリジナルの「Tシャツ、ハッピ、のぼり」を作成しなければならない。その料金(単価)を調べたのが以下の図だ。

  • 各ショップの価格を調査した表

今回は、「MNレンタル」、「Eveアシスト」、「Rent-S」、「CxRent」といった4つのショップで料金(単価)を調査した。この調査結果をもとに「どこに依頼したら最も安く済むか?」をExcelで比較検討してみよう。

ということで、各商品の必要数(数量)と、その金額を計算する表を以下の図のように作成した。現時点では「どのショップに依頼するか?」を決めていないので、「単価」の列は空白になっている。その代わりに、ショップを番号で選択するためのセル(D14セル)を用意してある。

  • レンタル&作成の費用を計算する表

このような場合に関数CHOOSEを使うと、「単価」のデータを自動取得することが可能となる。順番に解説していこう。

今回は各ショップの番号(1~4)をD14セルに指定するので、関数CHOOSEの第1引数にはD14を指定する。後ほど、この関数CHOOSEをオートフィルでコピーしたときにセル参照が変化しないように、このセル参照だけは絶対参照で記述する。

続いて、ショップの番号が「1」の場合、「2」の場合、「3」の場合、「4」の場合のときに取得するデータを順番に指定していく。ここでは「テント」の単価を取得したいので、それに対応する「D5,E5,F5,G5」のセル参照を順番に指定していけばよい。

  • 関数CHOOSEの入力

「Enter」キーを押して関数の入力を確定すると、以下の図のような結果が得られる。現在はショップ番号に「1」が入力されているので、D5セルの値が取得されることになる。

  • 関数CHOOSEの処理結果

あとは、この関数CHOOSEをオートフィルでコピーするだけ。これで全商品の「単価」を自動取得できるようになる。もちろん、取得した「単価」をもとに「金額」と「小計」も自動計算される。

  • 関数CHOOSEをオートフィルでコピーした様子

この結果を見ると、「MNレンタル」に依頼した場合の料金は16万7,940円になる、ということを把握できる。他のショップに依頼した場合の料金を知りたいときは、ショップ番号の数値を変更すればよい。

たとえば、ショップ番号を「2」に変更すると、関数CHOOSEによりE5~E11のデータが自動取得され、その「単価」での計算結果が表示される。今回は、小計が18万3,740円という結果になった。

  • インデックス番号を変更した様子(1)

同様に、ショップ番号を「3」に変更すると「Rent-S」の単価で計算した結果、ショップ番号を「4」に変更すると「CxRent」の単価で計算した結果を得ることができる。

  • インデックス番号を変更した様子(2)

このように、インデックス番号(1、2、3、4、…)を変更することにより条件分岐を行うのが関数CHOOSEの基本的な使い方となる。

関数MATCHを使ったインデックス番号への変換

先ほどの例では、D14セルの数値を1~4に変更することで「どのショップの単価を取得するか?」を指定した。このままでも構わないが、もっと直感的に「ショップ名」を直接指定できるように改良してみよう。

まずは「データの入力規則」を使って「ショップ名」を一覧から選択できるようにする。以下のように操作して「データの入力規則」を指定する。

(1)C14セルを選択し、「データ」タブにある「データの入力規則」をクリックする。
(2)入力値の種類に「リスト」を指定する
(3)元の値に「ショップ名が入力されているセル範囲」を指定する。

  • 「データの入力規則」の指定

これで「ショップ名」を一覧から選択できるようになる。

  • リストからショップを選択する操作

次は、「ショップ名」に応じて「インデックス番号」を自動生成する処理を追加する。この処理は関数MATCHを使うと簡単に実現できる。

◆関数MATCHの書式
=MATCH(検査値, 検査範囲, [照合の型])

関数MATCHは、「検査値」に指定したデータが「検査範囲」の何番目に該当するか?を調べてくれる関数だ。「検査値」と等しいデータを探したいときは、第3引数(照合の型)に0(ゼロ)を指定すればよい。

今回の例では、ショップ名(C14)が「D4:G4」のセル範囲の何番目に該当するか?を調べればよいので、関数の記述は以下の図のようになる。

  • 関数MATCHの入力

現在はショップ名に「MNレンタル」が選択されており、これはD4:G4の1番目に該当する。よって、関数MATCHの結果は「1」になる。そして、この「1」を関数CHOOSEのインデックス番号として機能させる、というのが根幹の考え方になる。

  • 関数MATCHの結果

動作確認のために「ショップ名」を変更した様子も紹介しておこう。たとえば、ショップ名に「Eveアシスト」を選択すると、関数MATCHによりC14セルの値は「2」に変更される。この「2」が関数CHOOSEのインデックス番号となり、「Eveアシスト」の単価が自動取得される。

  • ショップ選択を変更した様子(1)

同様に、ショップ名に「CxRent」を選択したときは、C14セルの値が「4」になり、これが関数CHOOSEのインデックス番号として機能することになる。

  • ショップ選択を変更した様子(2)

このように「データの入力規則」と「関数MATCH」を組み合わせて、関数CHOOSEが使用されるケースも多い。ぜひ覚えておくとよいだろう。

スピルを活用してセル範囲の取得

「Excel 2021」や「Microsoft 365」を使用している場合は、CHOOSE関数で「セル範囲」を取得することも可能だ。この場合は、第2引数以降に「取得するセル範囲」を指定する。

  • 関数CHOOSEでセル範囲を取得する場合

すると、1つの関数CHOOSEで複数のデータ(セル範囲)を自動取得できるようになる。D19~D24セルに関数CHOOSEを入力(コピー)しなくても、以下の図のように全商品の「単価」を取得することが可能となる。

  • 関数CHOOSEの処理結果

Excel 2019以前のバージョンでは使えないテクニックとなるが、将来に備えて、今から覚えておいても損はないだろう。

関数CHOOSEで計算方法を条件分岐させる

関数CHOOSEは「データを自動取得するとき」だけでなく、「計算方法を変化させるとき」にも活用できる。今度は、体脂肪率の測定結果を使って簡単な例を紹介しておこう。

たとえば、以下の図のように関数CHOOSEを記述すると、インデックス番号に応じて計算方法を変化させることが可能となる。

  • 関数CHOOSEの入力

この場合、インデックス番号(H2セル)が

・「1」のときは全体(E3:E68)の平均値
・「2」のときは男性の平均値
・「3」のときは男性の平均値

を計算できるようになる。以下の図は、インデックス番号(H2セル)が「1」なので「全体の平均値」が算出されることになる。

  • 関数CHOOSEの処理結果

インデックス番号(H2セル)を「2」や「3」に変更すると、性別が「男」または「女」のデータについてのみ平均値を算出できる。

  • インデックス番号を変更した様子(1)

  • インデックス番号を変更した様子(2)

このように、「計算方法を変化させるとき」に関数CHOOSEを活用することも可能だ。こちらもあわせて覚えておくとよいだろう。