財務モデルにおけるフラグと作成方法および演算ルール

March 23, 2019
基本講座
-

講座目次

財務モデルで使用するフラグ (Flag) とは

  • フラグとは ON と OFF を制御するための値
  • フラグを使った計算
  • 考察 - フラグの代わりに 1 と 0 を用いてはダメか

財務モデルにおけるフラグの使い方、演算方法

  • 期間フラグの使い方と計算例
  • リストフラグの使い方と計算例
  • スイッチの使い方と計算例
  • チェックの使い方と計算例

フラグの演算組み合わせ、IF関数、AND関数、OR関数、NOT関数

  • AND関数の使い方と計算例
  • OR関数の使い方と計算例
  • NOT関数の使い方と計算例
-

財務モデルで使用するフラグ (Flag) とは

フラグとは ON [TRUE] と OFF [FALSE] を制御するための値

フラグとは、財務モデル内において ON と OFF を制御するための、最も基本的な概念だ。フラグをどれだけ使いこなせているかが、モデルそのものの品質を左右すると言っても過言ではない。財務モデル内において ON と OFF を制御、判別しなければならない計算は多岐にわたる。例えば、運転開始から3年しか発生しないような費用があるとすると、運転開始から3年間のみ ON となるようフラグを用いて計算することになるし、年齢が40歳以上の人件費をモデル内で集計するなら、40歳以上のスタッフが ON となるようフラグを用いて集計を行う。感応度分析を行うためにスイッチを作ってユーザーが ON、OFF で切替えるようにすることもあるし、計算が合っているか、間違っているかのチェックも計算結果を ON (正) と OFF (誤) とすることで、どんな計算も統一的なチェックが可能だ。

これから説明するが、フラグは ONと OFFの 2 種類の値しかない。この性質を用いて、フラグは財務モデル内の計算で条件分岐を作成するために使うと覚えておこう。なお、フラグの考え方に慣れていない人のために、ON と OFF という書き方をしたが、正確に言うと、フラグが持つ値は TRUE (ON) または FALSE (OFF) の 2 種類だ。TRUE は「真」、FALSE は「偽」とも訳され、演算が正しい時には TRUEとなり、演算が正しくない時には FALSE となる。

フラグを使った計算

早速、実際にフラグを計算してみる。例えば、Excel の適当なセルに以下の数式を打ち込んでみよう。

=10<20

当然ながら、20は10より大きいので、上記の式は正しい。よって Excel での計算結果も TRUE になっているはずだ。念のため正しくない例も試してみよう。Excel の適当なセルに以下の数式を打ち込んでみよう。

=2*5=11

2 x 5 は 10 なので、11と等しくはなく、上記の式は成り立たない。Excel での計算結果を見ると、FALSE となっているはずだ。また、これら TRUE や FALSE は、TRUE = 1、FALSE = 0 として直接計算の中で用いることができる。例えば、以下の数式を打ち込んでみよう。

= 10 * 20 * TRUE
= 10 + TRUE
= TRUE * TRUE

TRUE = 1 として計算されるため、上記の値はそれぞれ 200, 11, 1 になっているはずだ。FALSE の例も以下の数式で試してみよう。

= 10 * 20 * FALSE
= 10 + FALSE
= FALSE * FALSE

FALSE = 0 として計算されるため、上記の値はそれぞれ 0, 10, 0 になっているはずだ。このように、計算式の中で 1 または 0 として直接計算することができる。最終的にフラグは IF 関数などの条件分岐を行う関数と組み合わせて使う。以下の数式を打ち込んでみよう。

=IF(TRUE, 100, 200)
=IF(FALSE, 100, 200)
=IF(10<20, 100, 200)
=IF(2*5=11, 100, 200)

IF 関数の使い方は、 IF(論理式, 真 [TRUE] の場合, 偽 [FALSE] の場合) だ。論理式とは、真 [TRUE] か 偽 [FALSE] のことなので、上記の式は、それぞれ論理式の中身によって 100 か 200 のどちらかとなる計算式となっている。1つめの数式は論理式の部分が TRUE なので、100。2つめの数式は、論理式の部分が FALSE なので、200。3つめの数式は、10<20 の結果が TRUE なので、100。4つめの数式は、2*5=11 の結果が FALSE なので、200。まとめると、それぞれ 100, 200, 100, 200 となっているはずだ。

IF 関数の詳しい使い方については、Microsoft の Official ページである下記を参照して欲しい。
https://support.microsoft.com/ja-jp/help/880977

考察 - フラグの代わりに 1 と 0 を用いてはダメか

Excel の中で TRUE = 1、FALSE = 0 として計算されるなら、最初から TRUE、FALSE 使わずに 1 と 0 で ON と OFF を切り替えればいいじゃないかという意見もある。実際に、フラグの代わりに 1 と 0 を用いて条件分岐を行っているモデルを時たまみかける。しかし、専門家の立場から言わせてもらうと、1 と 0をフラグとして使用するのはオススメしない。金額表記と非常に区別しづらいのだ。100万円単位で計算をしていると、50万以上100万円以下の値は全て四捨五入されて 1 となるため、僅かな税金が発生するケースや、現預金に対する受取利息など、僅少な金額を計算する場合、ある項目が1 と 0 のみで金額が構成されることは決して少なくない。しかし、TRUE と FALSE と表記されていれば、それがフラグであることは明らかだ。条件分岐を用いた計算であることも一目で分かるし、条件付書式を用いてハイライトしやすい。フラグを全く使わずに、IF の中のみで条件式を記述しているモデルもよく見かけるが、この場合条件式の結果が TRUE か FALSE が判別しづらく、TRUE と FALSE どちらの場合の値を返しているのか数式を解読しなければならない。はっきり言ってとても面倒だ。以上のような理由から、是非皆さんもフラグを用いて計算を行い、1歩上のレベルへステップアップして欲しい。

財務モデルにおけるフラグの使い方、演算方法

期間フラグの使い方と計算例

数多く種類あるフラグの種類の中で、最もよく使われるのがこの期間フラグだ。使い方としては計算を「特定の期間に限定」する際に、このフラグを使う。例として、運転開始前の期間のみ TRUE になるようなフラグを下記に作成する。

運転開始前フラグ =  運転開始日 < 期間終了日

上記の例では、運転開始日が2019年4月1日となっているため、運転開始前の期間は2016年4月1日から2019年3月31日までの3期間だ。実際に計算してみると、正しく2019年3月31日までの期間が TRUE として計算されていることが分かる。

それでは、運転開始日がどの計算期間に属するかピンポイントで判別したい時はどうすればよいだろうか。例として、運転開始日のみ TRUE となるような フラグを下記に作成する。

運転開始日フラグ = AND(期間開始日<=運転開始日,運転開始日<=期間終了日)

上記の例では、運転開始日が2018年7月1日となっているため、運転開始日が属する期間は2018年4月1日から2019年3月31日までの期間だ。実際に計算してみると、上記の通り2018年4月1日から2019年3月31日までの1期間のみが TRUE として計算されていることが分かる。このフラグは財務モデル内でどのように使われるのだろうか?例えば、運転開始時点にのみ費用が発生するケースを考える。

初期費用 = IF(運転開始フラグ, 初期費用総額, 0)

上記の例では、IF 関数を用いてフラグが TRUE になっている年のみ初期費用総額が発生するような数式となっている。ここでフラグを使う利点は、運転開始日が変化した際に、自動的に初期費用の発生タイミングも変化させることができる。例えば、運転開始日が 2018年7月1日から、2019年4月1日に変更されたケースを考える。

運転開始日が 2019年4月1日となったことで、運転開始フラグの TRUE 位置が 2019年3月期から、2020年3月期へ変化する。それに従って、初期費用が発生するタイミングも、自動的に1期後ろへ変化していることが分かる。上記の計算例では、運転開始日の入力変更以外、数式は全く変わっていない点に注目して欲しい。

リストフラグの使い方と計算例

リストフラグとは、多くの項目のリストやテーブルを扱う際に、項目を限定する時に使う。例として、店舗別の売上高を考える際に、大型店舗の売上のみを集計したいケースを考える。

大型店舗売上高 = SUMIF(大型店舗フラグ, TRUE, A店舗からD店舗の各年売上)

上記の例では、A店舗、B店舗、C店舗、D店舗の 4 店舗に対する年ごとの売上高が存在する。これらを全て足し合わせると全店舗の売上高は計算できるのだが、今計算したいのは大型店舗のみの売上高合計だ。ここで、それぞれの店舗に対してフラグを用いて大型店舗 = TRUE、小型店舗 = FALSE という大型店舗フラグをあらかじめ作成しておく。こうすることによって、SUMIF 関数の条件部分に大型店舗フラグを用いることで、大型店舗の売上高のみを簡単に集計することができる。リストフラグは、複数項目をある条件に従って集計する際に用いられることが多いことを覚えておこう。

スイッチの使い方と計算例

スイッチとは、期間によらず、2 種類の計算を条件に応じて分岐させたい時に使う。例として、原材料費のコスト増を見込むか、見込まないかの 2 パターンの計算をスイッチで切り替えたいケースを考える。

鉄鋼価格 = IF(コスト増加スイッチ, 鉄鋼価格 * (1+コスト増加率), 鉄鋼価格)

上記の例では、まずフラグを用いてコスト増加スイッチを作る。ここでは、一旦 FALSE を設定しておく。このスイッチを用いて、IF 関数と組み合わせて、①スイッチが TRUE の際にはコスト増加率を乗じる、②スイッチが FALSE の際にはコスト増加率を乗じずに、そのままの値を用いる、という条件分岐を作成する。上記の例ではスイッチが FALSE となっているため、コストの増加は見込まれず鉄鋼価格がそのまま反映されているが、下記のようにスイッチを TRUE にすると...

スイッチが TRUE の際にはコスト増加率を乗じる計算が反映されるため、鉄鋼価格が入力値より 10% 高くなっている。スイッチは、期間や項目によらずユーザーが ON、OFF の計算パターンを切替えたい時に用いられることが多いと覚えておこう。

チェックの使い方と計算例

チェックとは、その名の通り計算が整合しているかどうかの確認をしたい時に使う。例として、将来現預金の残高がマイナスになっていないかどうかチェックしたいケースを考える。

Check = 期末残高 => 0

上記の例では、フラグを用いてチェックを作成している。チェックは基本的に全て計算が整合している (TRUE) ことを前提にしているので、TRUE、FALSE という表記ではなく、緑 [TRUE]、赤 [FALSE] となるよう条件付書式を使って色を変えて使う。各年の残高を見ると、1年目 500百万円、2年目 300百万円 は問題ないが、3年目で残高が マイナス500万円になってしまっており、チェックが FALSE となっている。なお、アウトプットシートに記載されるチェックについては、本来補助的な役割であるチェックの色が目立ちすぎるため、行幅を狭くして使うことが多い。

フラグの演算組み合わせ、AND関数、OR関数、NOT関数

フラグとは財務モデル内において ON と OFF を制御し、条件分岐や集計、チェックを作成するために使うことを説明した。フラグは上記の例のように 1 から作成できるものがほとんどだが、中にはフラグとフラグを組み合わせて計算しなければならないものも存在する。下記では、AND関数、OR関数、NOT関数の 3 種類の関数を使って、少し複雑なフラグを作成したり、フラグを組み合わせたりする方法を紹介する。

AND関数の使い方と計算例

AND 関数や OR 関数については、結果を見た方がわかりやすいと思うので、まずは下記の数式を 1つずつ Excel の適当なセルな打ち込んでみよう。

= AND(TRUE, TRUE)
= AND(TRUE, FALSE)
= AND(FALSE, TRUE)
= AND(FALSE, FALSE)
= AND(TRUE, TRUE, TRUE)
= AND(TRUE, FALSE, TRUE)

計算結果は、TRUE, FALSE, FALSE, FALSE, TRUE, FALSE となっているはずだ。何か規則性に気づいてもらえただろうか?答えは、AND 関数は要素全てが TRUE だった場合にのみ、計算結果が TRUE となる関数だ。上記の例では、AND(TRUE, TRUE) や、AND(TRUE, TRUE, TRUE) のみが計算結果 TRUE を返す。最もよく使われる例としては、特定の期間を指定する際の期間フラグだ。運転開始日のみ TRUE となるような フラグを下記に再掲する。

運転開始日フラグ = AND(期間開始日<=運転開始日,運転開始日<=期間終了日)

運転開始日が属する期間には、実は2つの条件が必要となる。1つ目の条件は、運転開始日 (2018年7月1日) が期間開始日 (2018年4月1日) より後ろであること。ただし条件がこれだけだと、運転開始日 (2018年7月1日) は、2016年4月1日や 2017年4月1日よりも後ろであるため、3期間とも TRUE となってしまう。もう1つの条件は、運転開始日 (2018年7月1日) が、期間終了日 (2019年3月31日) より前である必要がある。この 2 つの条件が揃って初めて、2018年4月1日から 2019年3月31日の期間のみが TRUE となる。上記の例のように、2つの条件を両方満たす必要がある場合などに AND 関数を用いることで、条件に適したフラグを作ることができる。

異なる例として、次のようなケースを考えてみよう。運転期間において支払わなければならない税金があるとする。しかし、この税金は時限立法によるもので、2017年4月1日から2019年3月31日の事業期間にしか適用されないものとする。運転期間が2018年7月1日だとすると、納税対象期間はいつになるだろうか。このようなケースにおける、納税期間のみ TRUE となるような納税期間フラグを作成するが、手順としては、①運転期間フラグ、②税金適用期間フラグ、の 2 種類を組み合わせる必要がある。

納税期間フラグ = AND(運転期間フラグ, 税金適用期間フラグ)

上記の例で、納税を行わなければならないのは、①運転期間かつ②税金適用期間となっている期間だ。よって、それぞれの期間に対してフラグを計算し、2つの期間が両方とも TRUE になっている期間が納税期間となる。

OR関数の使い方と計算例

OR 関数についても、AND 関数と同じ実験が分かりやすい。下記の数式を 1つずつ Excel の適当なセルな打ち込んでみよう。

= OR(TRUE, TRUE)
= OR(TRUE, FALSE)
= OR(FALSE, TRUE)
= OR(FALSE, FALSE)
= OR(TRUE, TRUE, TRUE)
= OR(TRUE, FALSE, TRUE)

計算結果は、TRUE,TRUE, TRUE, FALSE, TRUE, TRUE となっているはずだ。規則性に気づいてもらえただろうか?答えは、OR 関数は要素全てが FALSE だった場合にのみ、計算結果が FALSE となる関数だ。逆の言い方をすれば、要素内に TRUE が 1 つでもあれば、計算結果は TRUE となる。上記の例では、OR(FALSE, FALSE) のみが FALSE となり、他は全て計算結果 TRUE を返す。AND関数などと違ってあまり使われる機会は多くないのだが、複数の期間フラグを連結させる際に使うことがある。例えば、建設期間と運転期間の両方において発生する費用があるとする。このようなケースにおいて、建設期間と運転期間を 1 つの期間とみなして連結させた期間を、プロジェクト期間として新たに計算したい場合を考える。手順としては、AND関数の時と同じで、①建設期間フラグ、②運転期間フラグ、の 2 種類を組み合わせる必要がある。

プロジェクト期間フラグ = OR(建設期間フラグ, 運転期間フラグ)

上記の例では、建設期間は2018年3月期および2019年3月期の2期。運転期間は2019年3月期以降の3期間だ。これらの期間がどちらか一方でも TRUE になっている期間を計算すれば、建設期間または運転期間となり、2つの期間を連結させたプロジェクト期間を計算することができる。

NOT関数の使い方と計算例

NOT 関数は、AND 関数や OR 関数などと異なり、1 つの要素しか扱うことができない。下記の数式を実際に打ち込んでみよう。

= NOT(TRUE)
= NOT(FALSE)
= NOT(10<11)
= NOT(2*5=11)
= NOT(TRUE, TRUE)

計算結果は、FALSE, TRUE, FALSE, TRUE となっているはずだ。NOT関数は 1 つの要素しか入らないため、5つ目の NOT(TRUE,TRUE) については Excel 上でエラーとなり入力できないことを実際に確認してもらいたい。NOT 関数については、非常にわかりやすく、TRUE と FALSE をひっくり返す関数だ。NOT 関数の中身が TRUE ならば、計算結果として FALSE となり、逆に FALSE ならば TRUE となる。これもあまり使う機会は多くないのだが、リストフラグやスイッチをひっくり返して逆に使いたい時などに使う。例えば、リストフラグの例では、大型店舗の売上高を集計したが、今度は逆に小型店舗の売上のみを集計したいケースを考える。

小型店舗フラグ = NOT(大型店舗フラグ)
小型店舗売上高 = SUMIF(小型店舗フラグ, TRUE, A店舗からD店舗の各年売上)

リストフラグの例と同様、それぞれの店舗に対してフラグを用いて集計を行っている。大型店舗 = TRUE、小型店舗 = FALSE という大型店舗フラグは前回作成したが、これを元に小型店舗フラグを作成する場合、大型店舗フラグをひっくり返せば良いので、NOT 関数を用いることで簡単に小型店舗フラグを作成することができる。ただし、多くの人は気づくと思うが、NOT 関数は本質的に必要ない。なぜなら、TRUE ではなく FALSE を集計すれば自動的に逆を集計することになるからだ。

小型店舗売上高 = SUMIF(大型店舗フラグ, FALSE, A店舗からD店舗の各年売上)

ただし、上記の数式を見てみると、小型店舗の売上高を集計しているにも関わらず大型店舗フラグが用いられていたり、また通常集計する TRUE ではなく FALSE を集計していることなどによって、レビューの観点から少し意味を判別しづらい。このような場合、NOT 関数を用いてきちんとフラグを再定義することで、ラベルや数式の意味が直感的なものとなる。NOT 関数は、補助的にフラグの逆パターンを再定義する際に使う、と覚えておこう。

-

関連記事一覧

  • 財務モデルにおけるアウトプット項目の決め方
  • 時系列粒度の決め方 - 年次・半期・四半期・月次の判断ケーススタディ
  • 財務モデルにおけるセットアップテンプレートの使い方
  • ダッシュボード (Dashboard / Executive Summary) の作り方
-
ページ上部へ戻る

専門トレーニングに関する資料をダウンロード

つぶやきました