オントラックの財務モデリング担当 北川です。
先週のブログはお休みしてしまいました。すみません。
今日は「選択関数」について、ご紹介します。
「選択関数」とは、リストなどの中から選んだ値を選択する関数です。
例えば、事業計画等のモデルを作成する中で、「楽観シナリオ」「ベースシナリオ」「悲観シナリオ」の3つのシナリオを作成する必要があるとします。
その時、シナリオごとにモデルを作成していては、共通する部分の変更が出てきたときに3つのモデルで同じ変更をする必要があり、手間がかかるのはもちろん、変更間違いが発生する可能性も高くなります。
そこで、一つのモデルの中でシナリオを選べば、そのシナリオの数字がモデルに反映できるようにしておけば、そういった手間、間違いを減らすことができます。
今回、次回と二回に分けて、選択関数としてご紹介するのは以下の4つの関数です。
・IF関数
・CHOOSE関数
・OFFSET関数
・INDEX関数
具体例を使って、4つの関数を使ったケースを見てみましょう。
今、売上成長率に3つ(楽観、ベース、悲観)のシナリオを考えているとします。
F5セルで1、2、3と入力すれば、選択したシナリオにあった各年の売上成長率が17行目に表示されるようにしたいとします。
順にみていきましょう。
まずは、IF関数です。
IF関数の書式は、IF(論理式、真の場合、偽の場合)です。
関数を使用して条件を論理式で指定すると、その結果が真(True)の場合は真の場合の値を返し、偽(False)の場合は偽の場合の値を返します。
今回の例でF17セルは、=IF($F$5=$B$10,F10,IF($F$5=$B$11,F11,F12))となります。
これは、もしF5セルがB10セル(1)と一致する(楽観シナリオ)ならF10セルを参照し、一致しない場合に、もしF5セルがB11セル(2)と一致する(ベースシナリオ)ならF11セルを参照し、それも満たさない場合(悲観シナリオ)はF12セルを参照する、ということです。
もちろんB10セル、B11セルの代わりにシナリオの番号(1、2)を入力しても構いません。
IF関数を使う方法は選択肢が3つくらいであれば、何とかなりそうですが、選択肢が4つ、5つ、、、となると、IF関数の中にさらにIF関数が増えて、数式の読解性が著しく悪くなるので、あまりお勧めできません。
また、F5セルがB10セル、B11セルに一致しない場合は(B12セルに一致しなくても)すべてF12セルの値を返すことになっていますので、この条件設定の部分で数式に間違いがある場合には意図せずF12セルを参照してしまう恐れがあります。
他の方法と比べて良い点としては、もし、F5セルでシナリオ選択の際に、シナリオの番号(数字)でなく、シナリオ名(楽観、ベース、悲観)を使いたい場合に、IF関数であれば、同じような数式を使うことができることです。
IF関数は知っている人も多く、思わず使ってしまうことが多いですが、先ほども述べた通り、読解性が悪いので、あまりお勧めしません。
次に、CHOOSE関数を見てみましょう。
CHOOSE関数の書式は、CHOOSE(インデックス、値1、[値2]、…)です。
インデックスは必ず指定し、どの値引数が選択されるか指定します。
インデックスが1の時は値1が返され、2の場合は値2が返されます。
インデックスが1未満、リストの最後の値の数値より大きい場合は、エラー値#VALUE!が返されます。
今回の例では、F5セルでシナリオの番号を入力しますので、これをインデックスとして利用し、インデックスが1の時には10行目の数字を、2の時には11行目の数字を、3の時には12行目の数字を返すようします。
注意点としては、値1、値2、…の部分はセル範囲で指定できないため、一つ一つ指定して、”,(カンマ)”で区切る必要があるということです。
今回の例のようにシナリオ毎の数字が表の形になっている場合は、次回ご紹介するOFFSET関数やINDEX関数を用いる方が良いと思います。
逆に言えば、シナリオ毎に参照したい数字がバラバラの位置にある場合は、このCHOOSE関数を使うことになります。
次回は、選択関数の残り2つ(OFFSET関数とINDEX関数)をご紹介します。
エクセルのスキルアップで働き方改革を!
次回の財務モデリング基礎講座は9月15日(日)です。お申し込みはこちらからどうぞ。