この記事で分かること

  • CHOOSE関数の構文 =CHOOSE(インデックス, 値1, 値2, …) と、シナリオ番号セル1つでBase/Upside/Downsideの前提を丸ごと切り替える仕組み
  • 入力シートの設計・ドロップダウン・CHOOSE行・モデル本体の参照ルールという、シナリオ切替を組む4ステップ
  • 売上成長率・EBITDAマージン・CAPEX比率の3ドライバー×3シナリオ×5年の仮設例と、その数式・結果表
  • INDEX/OFFSET/XLOOKUP/IFとの比較、データテーブルとの併用、切替セルの統制、そして典型的な失敗パターン

結論:CHOOSEは「シナリオ番号1つで前提セットを丸ごと差し替える」ための関数

CHOOSE関数の構文はとてもシンプルです。

=CHOOSE(インデックス, 値1, 値2, 値3, …)
第1引数の「インデックス」が1なら値1を、2なら値2を、3なら値3を返します。値は最大254個まで指定できます。インデックスが1未満、または値の個数を超えると #VALUE! エラーになります。

財務モデルにおけるCHOOSEの使いどころは、ほぼ一点に集約されます。シナリオ番号を入れたセルを1つだけ用意し、そのセルの値に応じて、モデルが参照する前提行を丸ごと差し替えるという使い方です。たとえばセル C4 に「1」と入れればBase(基本ケース)、「2」ならUpside(強気ケース)、「3」ならDownside(弱気ケース)の前提がモデル全体に一斉に流れ込む——この仕組みを最小の部品数で実現できるのがCHOOSEです。

シナリオ切替の中核となる1行
=CHOOSE($C$4, E12, E13, E14)
E12=Baseの売上成長率、E13=Upside、E14=Downside。この式を横方向にコピーすれば、5年分・10年分の「生きている前提」行が一気に出来上がります。

CHOOSEそのものは難しい関数ではありません。難しいのはモデルの構造設計——「どこにシナリオ選択セルを置くか」「前提をどう並べるか」「モデル本体はどの行を参照してよいのか」を決めきることで、それが壊れないシナリオ切替の本体です。本記事では設計・統制・検証まで含めて扱います。関数の早見表はExcel関数の早見辞典|財務モデリング頻出関数リファレンスを、用語の定義はCHOOSE関数をご覧ください。

仕組み:シナリオ切替は「3層+1本のルール」でできている

CHOOSEによるシナリオ切替は、次の3つの層で構成されます。層を混ぜないことが、そのまま監査しやすさに直結します。

第1層:シナリオ選択セル(入力)

モデル全体でただ1つだけ存在するセルで、1・2・3のいずれかの整数が入ります。複数箇所に「ケース番号」が散らばっている時点で、そのモデルは事故ります。入力シート(または表紙)の目立つ位置に置き、入力セルと一目で分かる書式にします。

第2層:各シナリオの前提行(入力)

Base・Upside・Downsideそれぞれの前提を、ドライバーごとに縦に3行並べます。ここは全部が手入力の数値で、数式は原則入りません。どのシナリオが選ばれていようとこの3行は残るため、後からICや銀行に「Downsideは何を織り込んでいるのか」と聞かれたときに即答できます(用語集:前提一覧シート)。

第3層:生きている前提行(CHOOSEの出力)

第2層の3行から、選ばれた1行だけを取り出した行です。実務では「ライブ行」「アクティブ行」などと呼ばれます。ここだけがCHOOSE式で構成されます。

守るべきルール(これが本体です)
モデル本体(売上・費用・運転資本・CAPEX・借入・バリュエーション)は、第3層の「生きている前提行」だけを参照する。第2層のシナリオ別前提行を直接参照してはいけない。

このルールが1箇所でも破られると、切り替えても一部の計算だけがBaseのまま残り、しかも見た目には何も起こらないという最悪の壊れ方をします。検出方法は後述の統制セクションで扱います。

シナリオ切替の3層構造:選択セル → CHOOSE → 生きている前提 → モデル 入力(手入力)は左の2ブロックだけ。右の2ブロックはすべて数式で、上書き禁止領域とします。 ① シナリオ選択セル セル C4(入力) 1 = Base 2 = Upside 3 = Downside ② 各シナリオの前提行 売上成長率(例) Base 5.0% Upside 8.0% Downside 1.0% ③ CHOOSE CHOOSE 1行だけ取り出す =CHOOSE($C$4, E12, E13, E14) ④ 生きている前提行 売上成長率 5.0% EBITDAマージン 20.0% CAPEX比率 4.0% (C4=1のときの表示) ⑤ モデル本体(売上・費用・運転資本・CAPEX・借入・バリュエーション) 参照してよいのは④の「生きている前提行」だけ。②を直接参照した瞬間、シナリオ切替は壊れます。
図:シナリオ選択セル→CHOOSE→生きている前提行→モデル本体という一方向の流れ。数値は本文の仮設例と対応しています。

手順:4ステップでシナリオ切替を組む

ステップ1|入力シートを設計する

入力シートの上部にシナリオ選択ブロック、その下にドライバー別の前提ブロックを縦に積みます。ドライバーごとにBase・Upside・Downsideの3行をセットで並べ、行の並び順(1行目=Base、2行目=Upside、3行目=Downside)を全ドライバーで統一してください。順序が揃っていないと、CHOOSEの引数の順番とシナリオの対応がドライバーごとにズレ、監査不能になります。

本記事では以下のレイアウトを前提に説明します(列Eから列Iが1年目〜5年目)。

内容種別
C3ケース名の選択(ドロップダウン:Base/Upside/Downside)入力
C4シナリオ番号(1〜3)=MATCHで自動算出数式
12〜14行売上成長率(Base/Upside/Downside)入力
16〜18行EBITDAマージン(Base/Upside/Downside)入力
20〜22行CAPEX比率(Base/Upside/Downside)入力
25〜27行生きている前提行(CHOOSE)数式
表:本記事の説明用レイアウト。行番号は例示です。

ステップ2|データの入力規則でドロップダウンを付ける

「1・2・3」という裸の数字を人間に直接入力させると、必ず4や0が入ります。実務では文字列を選ばせ、番号は数式で作るのが安全です。B12・B13・B14にそれぞれ「Base」「Upside」「Downside」というラベルを入れておき、C3に「データ」タブ→「データの入力規則」→「リスト」で =$B$12:$B$14 を元の値として設定します。そのうえでC4を次の式にします。

C4(シナリオ番号)
=MATCH($C$3, $B$12:$B$14, 0)
選ばれたケース名が3行のどこにあるかを返すため、C4には必ず1〜3の整数が入ります。ラベル行の順序を入れ替えても、番号とケースの対応が自動的に追随します。MATCHの使い方はINDEX/MATCHとXLOOKUP実践|VLOOKUPを卒業する理由と使い方で詳しく扱っています。

ステップ3|CHOOSE行(生きている前提行)を作る

25〜27行に、ドライバーごとのCHOOSE式を置きます。E25に次の式を入れ、右方向にI25までコピーします。

E25(生きている売上成長率)
=CHOOSE($C$4, E12, E13, E14)
E26は =CHOOSE($C$4, E16, E17, E18)、E27は =CHOOSE($C$4, E20, E21, E22)。シナリオ選択セルだけを絶対参照($C$4)にし、前提側は相対参照にしておくことで、横コピーが素直に効きます。

C4を名前定義して =CHOOSE(sCase, E12, E13, E14) と書く流儀もあります。可読性は上がりますが、名前定義は増やしすぎると別の意味で監査しづらくなるため、シナリオ選択セルだけを名前定義するくらいの節度が実務的です。この線引きは名前定義と構造化参照|使いどころと「乱用しない」規律の考え方と同じです。

ステップ4|モデル本体は生きている行だけを参照する

ここからは通常のモデリングです。売上は前年売上×(1+E25)、EBITDAは売上×E26、CAPEXは売上×E27。モデル本体のどの数式にも12〜22行(シナリオ別前提)は登場しません。この「参照してよい行/いけない行」を書式で見えるようにすると事故が激減します(用語集:モデルの書式規約)。

仮設例:3ドライバー×3シナリオ×5年で動かしてみる

以下は説明用の仮設例です。実在企業の数値ではありません。直前期(Year0)の売上を10,000百万円とし、5年間の計画を3シナリオで作ります。

ドライバーBase(1)Upside(2)Downside(3)
売上成長率(年率)5.0%8.0%1.0%
EBITDAマージン20.0%22.0%17.0%
CAPEX比率(対売上)4.0%5.0%3.5%
表:シナリオ別の前提(第2層)。ここは全て手入力で、切替後も消えずに残ります。

C4に1を入れた(Baseを選んだ)ときの5年展開は次のとおりです。単位は百万円、小数第1位で表示しています。

項目(Baseケース)1年目2年目3年目4年目5年目
売上10,500.011,025.011,576.312,155.112,762.8
EBITDA2,100.02,205.02,315.32,431.02,552.6
CAPEX420.0441.0463.1486.2510.5
EBITDA−CAPEX1,680.01,764.01,852.21,944.82,042.1
表:Baseケース(C4=1)の5年展開。単位:百万円。EBITDA−CAPEXは簡易的な目安で、税・運転資本は考慮していません。

ここでC4を2に変えるだけで、売上成長率が8.0%、EBITDAマージンが22.0%、CAPEX比率が5.0%に同時に切り替わり、モデル全体が再計算されます。3ケースの結果を並べると次のようになります。

ケース5年目売上5年目EBITDA5年累計EBITDA5年累計CAPEX累計EBITDA−CAPEX
Base(1)12,762.82,552.611,603.82,320.89,283.1
Upside(2)14,693.33,232.513,939.03,168.010,771.1
Downside(3)10,510.11,786.78,758.41,803.26,955.2
表:3ケースの結果比較(単位:百万円)。Year0売上10,000百万円から複利で展開した仮設例です。

累計EBITDA−CAPEXで見ると、Downsideの6,955.2百万円はBaseの9,283.1百万円の約75%、Upsideの10,771.1百万円は約116%です。3つのドライバーが数ポイント動いただけで、5年間のキャッシュ創出力に25%前後の差が出る——これがシナリオ分析を数値で語るということです。

この構造を、実際に手を動かして組めるようにする

シナリオ切替は「関数を知っている」だけでは組めません。入力・計算・出力の層を分け、参照の向きを一方向に保つ設計が必要です。Excel上での構築手順とモデル規約を体系的に学びたい方へ。

→ 財務モデリングのためのExcel実務を見る

INDEX・OFFSET・XLOOKUP・IFとの比較:なぜCHOOSEが定番なのか

同じことは他の関数でもできます。それぞれの性質を並べます。

手法数式例可読性・監査性揮発性シナリオ追加時
CHOOSE=CHOOSE($C$4,E12,E13,E14)高い。参照先が数式に列挙されるためトレースが容易なし引数を追加するため全CHOOSE行の修正が必要
INDEX=INDEX(E12:E14,$C$4)高い。ただし範囲の並び順への依存が見えにくいなし範囲を1行広げるだけで済み拡張性が高い
OFFSET=OFFSET(E11,$C$4,0)低い。基準セルからの相対移動のため意図が読めないあり(揮発性関数)行の挿入・削除で静かに壊れる
XLOOKUP=XLOOKUP($C$3,$B$12:$B$14,E12:E14)高い。ケース名で照合するため意図が明確なし行を追加するだけ。ただし対応バージョンが必要
ネストIF=IF($C$4=1,E12,IF($C$4=2,E13,E14))シナリオが増えるほど急速に低下なし入れ子が深くなり修正漏れが起きやすい
表:シナリオ切替の実装手段の比較。揮発性関数は再計算のたびに必ず再評価されるため、大規模モデルでは処理速度に影響します。

実務上の結論は明快です。シナリオが3〜5個で固定なら、CHOOSEが最も読みやすく安全です。数式を見た瞬間に候補セルが全部見えるため、レビュアーがF2やトレース機能で追いやすいからです(Excelの数式監査の技術|F2・F9・数式表示・トレースで他人のモデルを読み解く)。

シナリオ数が可変または多数の場合は、前提行を1行足すだけで拡張できるINDEXやXLOOKUPに切り替えます。OFFSETは原則として避けてください。揮発性関数であるため再計算が重くなるうえ、行の挿入で参照が静かにズレます(用語集:OFFSET関数と揮発性関数)。ネストIFは3シナリオまでなら実用範囲ですが、拡張性がないため最初からCHOOSEにするほうが得です(用語集:ネストIFとIFS関数)。

データテーブルとの併用:全シナリオを1枚で見せる

CHOOSEによる切替の弱点は、一度に1つのケースしか画面に出せないことです。ICメモでは3ケースを並べたいのが普通で、ここで使うのがWhat-If分析の「データテーブル」です。

1変数データテーブルは、指定した「列の入力セル」に左端列の値を順に代入し、上端行に置いた数式の結果を一覧化します。列の入力セルにシナリオ番号セル(C4)を指定することで、モデル全体を3回計算した結果が一気に並びます。

左端列(C4に代入する値)5年目EBITDA累計EBITDA−CAPEX
(空白セル)=出力セル参照=出力セル参照
1(Base)2,552.69,283.1
2(Upside)3,232.510,771.1
3(Downside)1,786.76,955.2
表:1変数データテーブルのレイアウト。左上の空白セルを起点に範囲を選択し、「データ」→「What-If分析」→「データテーブル」で列の入力セルにC4を指定します。

実装上の注意点が3つあります。第一に、データテーブルの入力セルは、データテーブルと同じワークシート上になければなりません。前提が別シートにある場合は、出力シート側にC4を参照する中継セルを置き、そこを入力セルにする必要があります。第二に、データテーブルはモデル全体を代入回数分だけ再計算するため重くなります。計算方法で「自動(データテーブルを除く)」を選び、必要なときだけF9で更新する運用が現実的です。第三に、入力セルはC3(文字列)ではなくC4(番号)を指定します。

データテーブル・ゴールシーク・シナリオ機能の使い分けはWhat-If分析の3兄弟|データテーブル・ゴールシーク・シナリオの使い分けで整理しています。また、複数の前提を掛け合わせた重み付き集計にはSUMPRODUCTが効きますので、SUMPRODUCT関数の使い方|財務モデリングで強力な理由と実務例もあわせてどうぞ。

実務での使いどころ:LBO・DCF・事業計画

LBOモデル:Management Case/Bank Case/Downside

PEのLBOモデルでは、シナリオ切替はほぼ必須の実装です。典型的には、売手から提示された事業計画をそのまま入れたManagement Case、スポンサーが独自に引き直したSponsor Case(Base)、レンダー説明用に保守化したBank Case、そしてDownsideの4本を持ちます。切り替えるのは売上成長率やマージンだけでなく、シナジー実現時期、CAPEX、運転資本回転日数、Exit倍率にまで及びます(用語集:マネジメントケースとスポンサーケース)。

LBOでは、シナリオ切替の出力が「IRRが何%変わるか」だけでなく「財務コベナンツに抵触するか」という離散的な判定に効いてくる点が重要です。Downsideで純有利子負債/EBITDA倍率がコベナンツ水準を超えるなら、その事実こそが投資判断の材料になります。モデルの組み方はLBOモデルの作り方|S&Uからリターン計算まで6ステップで組むを、悲観ケースの作り込み方はダウンサイドケースの設計|ICで信頼される「本物の悲観」の作り方をご覧ください。単に全項目を一律10%下げるだけの「機械的な悲観」は、ICでは通用しません。

DCF:シナリオ別の事業価値と期待値

DCFでは、シナリオ切替でFCFの経路そのものを差し替えます。WACCはシナリオ切替の対象に含めないのが原則です。資本コストは計画の楽観・悲観に応じて恣意的に動かす変数ではなく、一緒に動かすと「何が価値差の原因か」が分解不能になります。3ケースの事業価値を確率で加重平均する運用もありますが、その確率は必ず明示的な入力セルとして残してください。

事業計画・予算:DSCRやコベナンツの検証

プロジェクトファイナンスや設備投資案件では、Bank Caseでの返済能力が主戦場になります。CFADSやDSCRといった指標をシナリオごとに出し、最低DSCRが基準を割らないかを確認します(DSCRとは?計算式・目安・1.0倍/1.2倍/1.5倍の意味を解説)。事業会社の予算・中期計画でも同じ構造で、達成可能性の検証には事業計画の精査(Business Plan Review)|達成可能性をバリュエーションにつなぐの視点が有効です。シナリオ分析とストレステストの関係は用語集のストレステスト・シナリオ分析を参照してください。

なお、シナリオ別に実績を集計して前提の妥当性を検証する場面では、条件付き集計が必要になります。その基本はSUMIFS関数の使い方|財務モデル・予算管理で使える実務例で扱っています。

ケース切替セルの統制:事故を構造的に防ぐ

シナリオ切替は便利な反面、「今どのケースを見ているのか分からないまま数字を持ち出す」という事故を生みます。以下の統制をセットで入れてください。

1. ケース名を出力に必ず刻む

アウトプットシートのヘッダーや印刷タイトルに、選択中のケース名を数式で表示します。

ケース名の表示
="Case: "&CHOOSE($C$4,"Base","Upside","Downside")
すべての出力シート上部と、可能なら印刷ヘッダーにも入れます。PDF化して配ったあとに「これBaseだったっけ」と誰も言えない状態を作るのが目的です。

2. 切替セルを1つに限定し、書式で示す

入力セルは青字、数式は黒字という一般的な色分けに加え、シナリオ選択セルだけは強い塗りつぶしで目立たせます。名前定義(例:sCase)を付ければ他シートから =sCase で参照でき、シート名の変更にも強くなります。

3. 番号の妥当性チェック行を置く

C4が1〜3の整数であることを検査する行を、チェックシートに置きます。

チェック式
=IF(AND($C$4>=1,$C$4<=3,$C$4=INT($C$4)),0,1)
0が正常、1が異常です。モデル全体のチェック行を1つのセルに合計し、合計が0でなければ条件付き書式で赤く光らせます。この「壊れたら光る」設計の考え方は財務モデルのクオリティチェック(QC)完全ガイド|提出前に回す4層チェックで体系的に扱っています。

4. 「取り違え」を検出する往復チェック

モデル本体がシナリオ別前提行を直接参照していないかを確かめる簡便法として、C4を1にしたときの主要出力を記録し、2→1と往復させて元の値に戻るかを確認する方法があります。戻らなければ、どこかにハードコードか誤参照があります。より厳密には数式監査でトレースし、12〜22行に矢印が伸びていないかを目視します。

5. 保存前は必ずBaseに戻す

共有ファイルがDownsideのまま保存され、翌朝別のメンバーがその数字を資料に転記する——という事故は現実に起こります。単純ですが効果的な運用ルールです。

よくある間違いと対処

インデックスが0や範囲外で #VALUE! が出る

CHOOSEのインデックスは1始まりです。0や4(値が3個の場合)を与えると #VALUE! になります。プログラミング経験者ほど0始まりで書いてしまいがちです。対処は、番号を人間に直接入力させず、前述のMATCH+ドロップダウン方式にすること。なお、インデックスに小数を与えた場合は整数部分に切り捨てられて処理されるため、1.9は1として扱われます。エラーが出ないぶん、かえって気づきにくい挙動です(用語集:Excelのエラー値)。

CHOOSEの値にセル範囲と単一セルを混ぜる

CHOOSEは単一セルだけでなくセル範囲を候補にすることもできますが、単一セルと範囲を混在させる書き方は避けてください。何が返るのかが直感に反し、レビュアーが挙動を追えなくなります。範囲を返す使い方(例:SUM関数の引数としてCHOOSEで集計範囲を選ぶ)は、それ単独のテクニックとして意図的に使う場合に限り、必ずコメントを残してください。前提の切替という本記事の用途では、候補はすべて同じ形の単一セルに統一するのが鉄則です。

シナリオを追加したのに数式の修正が漏れる

4つ目のケース(例:Management Case)を足すとき、CHOOSEではすべてのCHOOSE行に引数を1つ追加する必要があります。ドライバーが20個あれば20行の修正で、1行でも漏れるとそのドライバーだけ選択が効きません。防ぎ方は2つです。(1) 追加後にC4を新しい番号にして、全CHOOSE行が #VALUE! にならず、かつ値が変わることを1行ずつ確認する。(2) シナリオ数が増える見込みがあるなら、最初からINDEXで組む。

シナリオ別前提の中にハードコードが混入する

「Downsideのときだけ3年目の売上を手で下げたい」という要請は必ず来ます。ここでモデル本体の計算セルに直接数値を打ち込むと、切替の構造が崩壊します。正しい対処は、調整項目を新しいドライバーとして第2層に追加し、3シナリオ分の値を持たせることです。例外を数式に埋め込まず、前提に昇格させてください。

切替後に再計算されていない

計算方法が「手動」になっていると、C4を変えても数値が動きません。データテーブルを使ううちに「自動(データテーブルを除く)」や「手動」に変更したまま忘れるのが典型パターンです。切替が効かないと感じたら、まずF9を押し、計算方法の設定を確認してください。

よくある質問(FAQ)

Q. CHOOSEとINDEX、結局どちらを使うべきですか。
A. シナリオ数が3〜5個で固定ならCHOOSE、可変または多数ならINDEXです。CHOOSEは候補セルが数式内に列挙されるため監査しやすい反面、シナリオ追加時に全数式の修正が必要になります。INDEXは範囲を広げるだけで拡張できますが、範囲内の並び順に依存するため、行の並べ替えに注意が必要です。どちらも揮発性関数ではないため、速度面の差はほとんどありません。

Q. CHOOSEでセル範囲を返せますか。
A. 返せます。=SUM(CHOOSE($C$4, E12:I12, E13:I13, E14:I14)) のように集計対象の範囲そのものを選べます。ただし前提切替の用途では、行ごとに単一セルを返す形に統一するほうが可読性・監査性に優れます。

Q. シナリオ切替と感応度分析(センシティビティ)はどう違いますか。
A. シナリオ切替は「複数の前提を整合的にセットで動かす」もので、Upsideなら成長率もマージンも同時に良くなる、という世界観の切替です。感応度分析は「1〜2個の変数だけを他を固定して動かす」もので、どの変数が結果に効くかを測る道具です。実務では両方使います。まずシナリオでストーリーを提示し、そのうえで主要変数の感応度グリッドを添えるのが標準的な構成です。

Q. 4つ目・5つ目のケースを追加するときの安全な手順は。
A. (1) 全ドライバーのシナリオブロックに同じ位置で1行ずつ挿入し、ラベル行にも同じケース名を追加する。(2) すべてのCHOOSE行に引数を追加する。(3) C4を新しい番号にして、全ドライバーの生きている行が新しい値に変わることを1行ずつ確認する。(4) C4を1に戻し、主要出力が追加前の値と一致することを確認する。この(4)の往復確認が最も効きます。

まとめ

CHOOSE関数は =CHOOSE(インデックス, 値1, 値2, …) という単純な構文ですが、財務モデルにおいては「シナリオ番号セル1つで前提セットを丸ごと差し替える」という構造を最小の部品数で実現する中核部品になります。鍵は関数ではなく設計にあり、シナリオ選択セル・シナリオ別前提行・生きている前提行という3層を分け、モデル本体は生きている行だけを参照するというルールを徹底することが本体です。

手段としてはINDEXやXLOOKUPも有効で、シナリオ数が可変なら拡張性で勝ります。一方、OFFSETは揮発性かつ行操作に弱いため、シナリオ切替の実装には推奨されません。全ケースを1枚で見せたい場合は、シナリオ番号セルを入力セルに指定した1変数データテーブルを併用します。

最後に統制です。ケース名を出力に刻む、切替セルを1つに限定する、番号の妥当性をチェック行で検査する、保存前はBaseに戻す。この4点を運用ルールにするだけで、切替に起因する事故の大半は防げます。

シナリオ切替を「動くモデル」に落とし込む

シナリオ切替が本当に力を発揮するのは、PL・BS・CFが連動した三表モデルの上で、前提を1つ動かすと財務三表と資金繰りが同時に動くときです。三表の連動構造から順に組み上げたい方へ。

→ 財務三表モデリング講座を見る

出典・参考(2026年8月21日確認)

  • Microsoft「CHOOSE 関数」Microsoft サポート——構文、値の指定可能数(254)、範囲外インデックスのエラー挙動、小数インデックスの切り捨て
  • Microsoft「データ テーブルを使用して複数の結果を計算する(What-If 分析)」Microsoft サポート——1変数データテーブルの手順、入力セルが同一ワークシート上にある必要があること、計算オプション
  • Microsoft「セルにドロップダウン リストを作成する(データの入力規則)」Microsoft サポート
  • Microsoft「Excel の数式を最適化して処理速度を上げる」Microsoft Learn——揮発性関数と再計算負荷

※本記事は教育目的の一般的な解説であり、法務・税務・投資助言ではありません。設例は理解のための仮設例です。