リスクスプレッドシートを作っても、財務数値が何も変わらないなら——それはリスク管理ツールではなく、ただのリストです。洗い出したリスクがP&L、貸借対照表、またはFCFFタブに連動していないなら、あなたが作ったのは財務モデルではなく、稟議を通すための形式的な書類に過ぎません。
解決策は複雑ではありません。数式の問題ではなく、構造の問題です。
なぜほとんどのリスクスプレッドシートが機能しないのか
多くのリスク登録簿は、別のタブ——あるいはさらに始末が悪いことに、別ファイル——に分離して存在しています。四半期の取締役会資料を作成する際、誰もそのファイルを参照しません。10月に14件のリスクを「高・中・低」で確率評価した担当者がいたとしても、その後モデルはまったく更新されていない、というケースはよくあります。
COSO(米国トレッドウェイ委員会支援組織委員会)の「ERMフレームワーク(2017年改訂版)」が明示しているように、リスクはビジネス目標の達成に与える影響として定量化されて初めて意思決定に活用できます。同じく、ISO 31000:2018(リスクマネジメント — 指針)は「リスクの評価結果は意思決定プロセスに統合されなければならない」と規定しており、いずれのフレームワークも定性評価の一覧表作成だけでは不十分であることを示しています。にもかかわらず、実務の現場では依然として「高・中・低」どまりのリスク管理が多数を占めています。
根本的な問題は、リスク登録簿がアウトプットと切り離されていることです。「主要顧客との契約更新リスク:金額2億1,000万円、解約確率30%」と書き続けたところで、その期待損失額△6,300万円が売上タブに反映されていなければ、モデルはリスクを価格に織り込んでいません。ただ描写しているだけです。
機能するリスクスプレッドシートには、互いに連動する3つのタブが必要です。「リスク登録簿」「前提条件(シナリオ)」「P&L(またはDCF)」——登録簿の各行は、モデル内の少なくとも1つのドライバーに紐づいていなければなりません。
リスク登録簿タブの設計
各行をラベルではなく、数式のインプットとして機能するよう設計してください。
| リスクID | 内容 | カテゴリ | 基本影響額(円) | 基本確率(E列) | シナリオ調整後確率(F列) | 期待損失額(G列) | ステータス(H列) |
|---|---|---|---|---|---|---|---|
| R-01 | 主要顧客(上位3社)の契約非更新 | 売上 | △2億1,000万円 | 30% | ※数式 | ※数式 | オープン |
| R-02 | 採用計画の2ヵ月遅延 | 販管費 | △3,800万円 | 55% | ※数式 | ※数式 | オープン |
| R-03 | 原価率の上昇(+150bps) | 売上総利益 | △4,200万円 | 45% | ※数式 | ※数式 | オープン |
| R-04 | 新製品の薬事・規制審査遅延 | 売上 | △1億4,000万円 | 25% | ※数式 | ※数式 | オープン |
| R-05 | 海外事業(アジア向け)の為替ヘッドウィンド | 売上 | △3,100万円 | 60% | ※数式 | ※数式 | 解消済 |
最も重要な列は**F列(シナリオ調整後確率)とH列(ステータス)**です。この2列がシナリオ感度とステータスフィルターを実現します。
G列(期待損失額)の数式はシンプルです:
=D4*F4
D4が基本影響額(△2億1,000万円)、F4がシナリオ調整後確率です。シナリオが切り替わるとF4が変わり、G4が自動再計算されます。
前提条件タブ:名前付き範囲でシナリオを制御する
シナリオ切り替えの核心は「前提条件」タブにあります。まずこのタブのセル配置を定義します:
| セル | 内容 | 値 |
|---|---|---|
| B2 | シナリオ選択(ドロップダウン) | 基本 / 悲観 / 楽観 |
| C4 | 悲観シナリオ確率倍率 | 1.5 |
| C5 | 楽観シナリオ確率倍率 | 0.7 |
次に、Google Sheetsの「データ → 名前付き範囲」から以下3つを定義します:
ScenarioSwitch→前提条件!$B$2BearMultiplier→前提条件!$C$4BullMultiplier→前提条件!$C$5
B2セルにはデータバリデーションのドロップダウンを設定します(「データ → データの入力規則」→「リストから項目を選択」→「基本,悲観,楽観」)。
この設定が完了したら、リスク登録簿のF列(シナリオ調整後確率)に以下の数式を入力します:
=IF(ScenarioSwitch="悲観", MIN(E4*BearMultiplier, 1), IF(ScenarioSwitch="楽観", E4*BullMultiplier, E4))
MIN(..., 1) は確率が100%を超えないようにするためのガードです。この数式をF列全体にコピーすれば、前提条件!$B$2のドロップダウンを「悲観」に変えるだけで、登録簿全体の確率が1.5倍に切り替わります。
倍率の根拠についても前提条件タブに明記してください。BearMultiplier = 1.5は「過去5年の業績見通し下振れ実績において、各リスクの実現確率が計画比約1.5倍だった」という仮定に基づく場合はその旨を注記します。倍率に数値的根拠がないなら、それも正直に書くべきです——「担当部門へのヒアリングに基づく保守的な見積もり」と明示するほうが、説明なしで数字だけ置くより審査に耐えます。
悲観シナリオでR-01の発生確率は30%から45%(=MIN(30%*1.5, 1))に上昇し、期待損失は△6,300万円から△9,450万円に変わります。この△3,150万円の差分が、次のSUMIFS集計を通じてP&Lに即座に反映されます。
リスクをP&Lに接続する
ここが多くのリスクモデルの崩壊点です——登録簿は存在するが、P&Lはそれを参照していない。
P&Lの主要な各行の直下に「リスク調整額」の行を設け、登録簿の集計値をSUMIFSで参照させます。「解消済」ステータスのリスクを自動除外するために、条件を2つ重ねます:
// 売上タブ 15行目 — リスク調整額(売上期待損失)
=SUMIFS('リスク登録簿'!G:G, 'リスク登録簿'!C:C, "売上", 'リスク登録簿'!H:H, "<>"&"解消済")
H列のステータスフィルターが重要です。四半期途中でR-05(為替リスク)がヘッジ契約の締結により解消済になった場合、H列を「解消済」に更新するだけでそのリスクが集計から自動除外されます。QBRのたびにリスク行を手動で非表示にしたり、別シートに退避させたりする必要がなくなります。
P&Lの構造は以下のようになります(売上セクションの例):
売上(基本計画) 1,840,000,000円 ← Revenue!$D$12
リスク調整額(売上) [上記SUMIFS] ← 登録簿から自動参照
リスク調整後売上 [基本 + 調整額] ← 上記2行の合計
基本売上18億4,000万円、売上総利益率38.5%のモデルで、上記5件のリスクがすべてオープンの場合(R-05を解消済とする)、悲観シナリオの売上リスク調整額はR-01・R-04合計で約△1億7,000万円となります。CFOが「変動要因の内訳」として明示を求める規模です。差異分析の一行として埋もれさせてはいけません。
DCFモデルへのリスク反映:WACCとターミナルバリュー
大型案件のDCFや投資判断モデルで規制リスク(R-04)が顕在化している場合、シナリオ連動のWACC調整が必要になります。前提条件タブに以下のセルを追加します:
| セル | 内容 | 値 |
|---|---|---|
| C8 | 基本WACC | 9.4% |
| C9 | 悲観シナリオ追加コスト(bps) | 1.0% |
| C10 | 楽観シナリオ調整(bps) | -0.5% |
DCFタブのWACCセル(例:DCF!$C$3)には以下を設定します:
=IF(ScenarioSwitch="悲観", 前提条件!$C$8+前提条件!$C$9, IF(ScenarioSwitch="楽観", 前提条件!$C$8+前提条件!$C$10, 前提条件!$C$8))
これで悲観シナリオ選択時にWACCが9.4%→10.4%に自動切り替わります。
ターミナルバリューへの影響について: EV/EBITDAマルチプル法でターミナルバリューを計算する場合(例:EBITDA × 14.2倍)、WACC変化の直接的な影響はDCF法(ゴードン成長モデル)ほど単純ではありません。マルチプル自体をシナリオ別に設定する方が実務的です:
// DCFタブ — ターミナルバリュー計算行
=IF(ScenarioSwitch="悲観", EBITDA_Terminal * 12.5, IF(ScenarioSwitch="楽観", EBITDA_Terminal * 15.8, EBITDA_Terminal * 14.2))
悲観シナリオでマルチプルが14.2倍→12.5倍に低下し、ターミナルEBITDAが10億円であれば企業価値は△17億円(=(14.2-12.5)×10億円)の減少となります。このマルチプルの根拠(業界比較会社の過去レンジ、足元の金利水準など)は前提条件タブの注記欄に必ず記載してください。モデルを受け取った上司が「なぜ12.5倍なのか」と聞いてきたとき、その根拠が前提条件タブにあれば一行で回答できます。
FP&Aリスクスプレッドシート:提出前の7項目チェックリスト
モデルを関係者に共有する前に、以下を確認してください:
- すべてのリスク行に、ステータス列(H列)が設定されており「オープン/解消済/対応中」で管理されている
- P&LにSUMIFSで登録簿を参照するリスク調整額の行が明示されており、ステータスフィルターが機能している
- 前提条件タブの名前付き範囲(
ScenarioSwitch・BearMultiplier・BullMultiplier)が定義され、F列の数式がそれを参照している - 倍率(1.5倍・0.7倍)の根拠が前提条件タブの注記欄に記載されている
- 期待損失額の列が**金額(円)**で表示されており、定性的なラベル(高・中・低)ではない
- 悲観シナリオでリスク調整後EBITDAが基本シナリオ比5%以上変動する——たとえば基本EBITDAが2億円なら、悲観シナリオの調整後EBITDAは1億9,000万円以下になるはず。それより変動幅が小さい場合、登録簿に計上したリスクの影響額が過小か、確率倍率の振れ幅が不十分です
- 登録簿タブが取締役会資料のアウトプットタブに数式でリンク参照されており、コピー&ペーストではない
この7項目をすべてクリアすれば、それは財務モデルです。クリアできていなければ、それはただの登録簿です。
スプレッドシートのAI活用で運用負荷を下げる
上記の構造設計と初期実装には数時間かかります。しかし実際に時間を奪うのは、継続的な運用業務です——新情報が入るたびに発生確率を更新し、解消済みリスクをクローズし、取締役会資料の直前に感度分析を再実行する繰り返しです。
ModelMonkeyはスプレッドシートのサイドバーに常駐し、登録簿をそのまま参照できます。「売上カテゴリでオープンなリスクの悲観シナリオ合計は?」と質問するだけで、ライブのシートからその場で回答が返ってきます。ピボットテーブルも手動フィルターも不要です。Google SheetsとExcel、両方に対応しており、ModelMonkeyのプランを選ぶことができます。
よくある質問
Q. リスクスプレッドシートとリスク登録簿は何が違うのですか?
厳密な定義の違いはありませんが、実務上の差は大きいです。「リスク登録簿」は洗い出したリスクの一覧表であり、多くの場合はリスクの内容・確率・影響度を記録するだけにとどまります。一方、本記事で解説する「リスクスプレッドシート」は、その登録簿が財務モデルのドライバーに数式で連動した構造を指します。登録簿の更新が即座にP&Lやシナリオ分析に反映されて初めて、財務意思決定ツールとして機能します。
Q. 発生確率の初期値はどのように設定すればよいですか?
3つのアプローチがあります。①過去の類似案件のデータ(例:過去5年間の主要顧客の解約率)、②業界標準のベンチマーク(業界レポートや監査法人の実態調査など)、③担当部門へのヒアリングによる専門家判断です。多くのFP&Aチームはヒアリングベースの主観確率から出発し、四半期ごとのレビューで実績データに基づいて更新するサイクルを採用しています。重要なのは完璧な確率より、根拠を前提条件タブに記載し、更新できる構造を作ることです。説明できない確率をモデルに置かないでください。
Q. どのくらいの頻度でリスク登録簿を更新すべきですか?
四半期ごとのビジネスレビュー(QBR)に合わせた更新が最低ラインです。ただし、重大なリスクイベント(主要顧客からの解約通知、規制変更の発表、為替の急変動など)が発生した場合は、次の四半期を待たずに即時更新してください。日本企業の場合、年度(4月始まり)の切り替わりと上半期・下半期の中間レビュータイミングが、登録簿の大規模見直しに適しています。
Q. 従業員50名規模の中小企業でもこの構造は実用的ですか?
はい。むしろ小規模チームほど恩恵が大きいです。リスク件数は5〜10件に絞り込み、P&Lへの接続は売上・原価・販管費の3行に限定するだけでも、取締役会資料の精度は大きく向上します。タブ数を減らしてもSUMIFSと名前付き範囲による連動の仕組みは同じです。スタートアップのCFOや経営企画担当者が単独でモデルを管理するケースでは、シンプルな3タブ構造が最も運用しやすいと言えます。