ITライター 立山秀利
シミュレーションの際、1つのセルで複数の計算式を切り替えて値を表示したい場合、CHOOSE関数を使うと効率的である。
まずはCHOOSE関数の基本的な使い方を解説する。例えば図1のような利用申請書があり、B5セルに1~3の番号を入力して、下記の該当する年齢区分をC5セルに表示したいとする。
------------
1:18歳未満
2:18~64歳
3:65歳以上
------------
図1
ここで利用するのがCHOOSE関数だ。引数に指定した番号の値をリストから抽出する関数である。書式は次の通り。
------------------------------------------------------------------
=CHOOSE(インデックス, 値1, 値2, 値3・・・)
------------ --- --- ---
=CHOOSE( B5, "18歳未満","18~64歳","65歳以上" )
------------------------------------------------------------------
引数「インデックス」には番号を指定。すると、引数「値1」以降に指定した値のリストから、該当する番号の値を抽出して表示する。
今回の例の場合、引数「インデックス」に1を指定したら、値として文字列「18歳未満」を抽出し、2を指定したら「18~64歳」、3を指定したら「65歳以上」を抽出できればよい。以上を踏まえると、C5セルには以下のようにCHOOSE関数を入力すればよいことになる。番号はB5セルに入力されるので、引数「インデックス」はB5セルを指定する。
これで、B5セルに入力した番号の数値に従い、該当する年齢区分がC5セルに表示されるようになる。
図2
なお、似たようなことはVLOOKUP関数やINDEX関数でもできるが、両者とも抽出元の表を別途用意しておく必要がある。それに対してCHOOSE関数は抽出元のリストを引数に指定するだけで済み、関数一つで完結できる。
CHOOSE関数はリストに値だけでなく、数式を指定することも可能だ。例えば図3のように、商品の値引きパターンが1~3の3通りあるとする。C3セルに指定した値引きパターンの番号に応じて、各商品の売値を標準価格から算出してC6~C9セルに求めたいとする。
図3
1の場合の値引きパターンは10%オフなので、標準価格に0.9を掛ければ求められる。2の場合は500円引きなので、標準価格から500を引けば求められる。3は10%オフと500円引きなので、標準価格に0.9を掛けた値から500を引けば求められる。
これら3つの数式をCHOOSE関数の引数「値1」以降に指定すればよい。引数「インデックス」は値引きパターンが入力されるC3セルを指定する。以上を踏まえると、例えば商品Aの売値なら、C6セルに以下の数式を入力すればよい。
------------------------------------------------------------------
=CHOOSE(インデックス, 値1, 値2, 値3・・・)
------------ --- --- ---
=CHOOSE( $C$3, "B6*0.9", "B6-500", "B6*0.9-500" )
------------------------------------------------------------------
C7~C9セルにもオートフィルでC6セルの数式をコピーすれば完成だ。引数「インデックス」を絶対参照にしているのは、C7~C9セルにオートフィルでコピーした際に参照先セルのずれを防ぐためである。
図4
(画像をクリックすると拡大表示します)
なお、以前取り上げた「データテーブル」機能との違いだが、データテーブルは数式を自由に指定できるが、毎回書き換える必要がある。一方、CHOOSE関数はあらかじめ用意しておいた数式を切り替えられる。CHOOSE関数なら引数「値1」以降にあらかじめ用意した数式しか使えないが、番号を指定するだけで切り替えが済む。両者の使い分けは、多彩な数式を自由に入力したいならデータテーブル、あらかじめ用意した数式を素早く切り替えたいならCHOOSE関数を使うとよい。
このようにCHOOSE関数を使えば、複数の数式を素早く着替えられ、効率よくシミュレーションが行えるようになる。
立山秀利(たてやま・ひでとし)
カーナビのソフトウェア開発、Webプロデュース業務を経て、現在は、システムやネットワーク、Microsoft Officeを中心に執筆中。 主な著書に『Excel VBAのプログラミングのツボとコツがゼッタイにわかる本』などがある。
(監修:日経BPコンサルティング)