Google SheetsでP&Lテンプレートを作る:FP&Aガイド
Google Sheetsで8タブ構成の損益計算書テンプレートを構築——クロスタブSUMIFS、リアルタイムEBITDAブリッジ、3表連動リンク、取締役会向けフォーマットまで徹底解説。
このガイドでは、CFOレビューに耐えられる8タブ構成の損益計算書テンプレートをGoogle Sheetsで構築する手順を解説します。実績データを参照するクロスタブSUMIFS、リアルタイムのEBITDAブリッジ、整合性の取れた3表連動リンク、そして非アナリストでも90秒で把握できる取締役会向けサマリーのフォーマットまで、実践的な内容を網羅しています。
必要なもの
- Google Sheetsへのアクセス権(対象ファイルに編集者権限があること)
- 実績データのソース(ERPエクスポート、会計ソフトのCSV、またはStripeのMRRデータ)。最低限、日付・勘定科目名・コストカテゴリ・金額の各列が必要です
- SUMIFS、EDATE、絶対参照/相対参照の基本的な使い方に慣れていること
- 自社で管理している勘定科目体系またはコスト分類スキーム
- ソースデータに名前付き範囲または統一された列ヘッダーが設定されていること
ステップバイステップ
P&Lテンプレートのタブ構成を設計する
最初の10分で決めるタブ構成が、このモデルが6ヶ月後も保守可能な状態を保てるか、それとも誰かに謝りながら引き継ぐことになるかを左右します。各タブには厳密に1つの役割——入力、ソースデータ、計算、アウトプット——を持たせ、データの流れは一方向にするべきです。
FP&A用P&Lテンプレートとして機能する8タブ構成の例:
| タブ | 役割 |
|---|---|
| Assumptions | すべてのハードコード入力値:成長率・採用計画・利益率目標 |
| Revenue | 製品ライン別・セグメント別の月次/四半期売上 |
| COGS | 売上ラインに対応する直接コスト |
| OpEx | 人件費および非人件費の営業費用 |
| P&L | 上記4タブを集計した損益サマリー |
| Actuals | ERPや会計システムからの実績データ(読み取り専用) |
| Variance | 実績対予算の差異(金額・比率) |
| Board Summary | 非アナリスト向けにフォーマットした前四半期比・年累計ビュー |
- Actualsタブは完全に読み取り専用として扱うこと——外部データを貼り付けるだけにし、他タブへの参照はすべてSUMIFSで行います
- タブをカテゴリ別に色分けする:入力は青、ソースデータはグレー、アウトプットは緑——取締役会資料のナビゲーション時にCFOが迷わずに済みます
- タブ名にスペースを使わないこと(
P_and_LやPLなど)——スペースを含むタブ名はクロスタブ数式でシングルクォートの囲みが必要になり、手間が増えます - 左から右へ順番に構築する:Assumptions → Revenue → COGS → OpEx → P&L → Actuals → Variance → Board Summary の順がデータフローと一致しています
Pro Tip
Actualsタブはすぐにロックしましょう——データ → シートと範囲の保護から設定できます。ロックされていない共有モデルでは、誰かが実績エクスポートではなくデータタブに直接数値を「修正」してしまうことが必ずあります。その誤りに気づくのは、3ヶ月後の監査のときです。Assumptionsタブを作る——P&Lテンプレートの唯一の真実のソース
モデル内のすべてのハードコード入力値はこのタブに集約します。例外なしです。成長率をRevenueタブの数式の中に埋め込むのは技術的負債であり、決算説明会の準備で最も忙しいタイミングに必ず問題が表面化します。Assumptionsタブは、1つのセルを変更するだけでモデル全体が更新される場所です。
ラベル付きのセクションを空白行で区切り、すべての主要入力セルに名前付き範囲を設定して整理してください。
- 売上の前提:FY2026のARR目標(1億8,400万円)、製品ライン別の成長率(SaaS:22%、プロフェッショナルサービス:8%)、月間グロスチャーン率(4.2%)
- 採用計画:部門別の現在の従業員数、四半期ごとの採用予定、1名あたりの全額コスト(全レベル平均で1,650万円)
- 利益率目標:粗利益率目標(61.5%)、EBITDAマージン目標(18.0%)、売上に対するD&A比率(2.3%)
- モデル期間アンカー:
$B$3をmodel_start、$B$4をmodel_endと命名し、全タブの列ヘッダーをこの2つのセルから生成します - 税務・資本構成:実効税率(27%)、支払利息(既存借入の年換算で2,340万円)
Pro Tip
Assumptionsに「シナリオ」切り替えを追加しましょう——データ → データの入力規則 → リストで、Base / Upside / Downside のドロップダウンを作成します。主要な前提値を=IF(Assumptions!$B$1="Upside", 0.28, IF(Assumptions!$B$1="Downside", 0.14, 0.22)) のように設定すれば、モデルを複製することなく1つのセル変更で3つのシナリオを切り替えられます。Revenueタブを構築する
売上は製品ライン別またはセグメント別に分解し、列はAssumptionsのモデル期間アンカーから生成します。2026年5月時点において、SaaSビジネスで最も一般的な構成は、MRR → ARR → 認識売上の流れで、新規受注・アップセル・解約/チャーンを別々の行で管理するものです。
実績値を認識売上の行に引き込む数式:
=SUMIFS(
Actuals!$D:$D,
Actuals!$B:$B, ">="&Assumptions!$B$3,
Actuals!$B:$B, "<"&EDATE(Assumptions!$B$3,1),
Actuals!$C:$C, "Revenue - SaaS"
)
- 月末の境界値には日付をハードコードせず
EDATEを使用すること——model_startを更新してモデルを翌月にロールフォワードすると、すべての列ヘッダーとSUMIFSの日付境界が自動で更新されます - 各売上ラインを3行で構成する:予算、実績、差異(
=B4-B3)——そして今すぐ符号のルールを固定する:売上の場合、正の差異は実績が予算を上回ったことを意味します - Revenueタブの最下部にサニティチェックの行を追加する:
=SUMIFS(Actuals!$D:$D, Actuals!$C:$C, "Revenue*")で全期間の合計を算出し、P&Lの売上合計行と照合します——一致しない場合は勘定科目名のマッピングにズレがあります - 列ヘッダーをAssumptionsから生成する:3行目に
=TEXT(EDATE(Assumptions!$B$3, COLUMN()-3), "MMM-YY")を入れることで、Q3へのロールには1セルの変更だけで対応できます
Pro Tip
勘定科目名が統一されていない場合("Revenue-SaaS" vs "Revenue - SaaS" vs "Rev SaaS" など)、ActualsタブにヘルパーColumnを追加して=TRIM(SUBSTITUTE(C2,"-"," - ")) で正規化してからSUMIFSで参照してください。数式の中で名前のばらつきを処理しようとすると、ケースを見落とします。COGSタブで粗利益率を正確に把握する
COGSは複数製品のP&Lモデルが雑になりやすい箇所です。コストが1行にまとめられると、ブレンド粗利益率61.5%が58%まで落ちている原因がどの製品ラインにあるのか分解できなくなります。COGSはRevenueと同じ粒度で構築してください——コストカテゴリごとに1行、それが支える製品ラインにマッピングします。
プロフェッショナルサービス売上を持つSaaSビジネスのCOGS構成例:
- クラウドインフラ(COGS - Hosting):変動直接コスト、SaaS売上にのみ紐付く
- カスタマーサクセス人件費(COGS - CS):タイムトラッキングデータまたはAssumptionsの固定比率に基づき、SaaSに70%・サービスに30%を配賦
- プロフェッショナルサービスの提供コスト(COGS - Services):サービス売上に全額紐付く
- シート課金の外部ソフトウェア(COGS - Tools):Assumptionsから参照するアクティブユーザー数で配賦
Pro Tip
COGSタブの別セクションにセグメント別粗利益率の一覧表を追加しましょう。SUMIFS数式3つと割り算だけで作れます。200bpsの利益率圧縮がSaaSのインフラコスト問題なのか、サービス提供コストの問題なのかをCFOに聞かれる前に特定できます。P&LテンプレートでタブをまたいだOpExを連携する
OpExはモデルの中で最も密度が高い部分です。APQCのFP&Aベンチマーキングデータによると、ソフトウェア・テクノロジー企業における人件費は営業費用全体の60〜70%を占めます——つまり採用スケジュールがOpExタブの大半を決定し、そこでの誤りはEBITDAに直接波及します。
まず採用スケジュールを作成します:部門 × 四半期のグリッドで現在の従業員数と採用予定を管理します。人件費をOpExサマリーに引き込む数式:
=SUMIFS(
'OpEx'!$E:$E,
'OpEx'!$B:$B, "Engineering",
'OpEx'!$C:$C, "Headcount"
)
- 1,650万円の全額コストで現従業員45名の場合、採用増加前の年間人件費OpExは約7.4億円になります——新規採用は既存ヘッドカウントと別の行として追加し、採用ペースを独立して感応度分析できるようにします
- Assumptionsに
hire_pace_multiplierセル(デフォルト1.0)を追加する:OpExの採用予定行はすべてこの値を乗算するため、0.75に変更するだけで個別の行を触らずに採用スローダウンをモデル化できます - 非人件費のOpEx(SaaSツール、交通費・交際費、オフィス費、マーケティング費)は、Revenueタブと同じ日付範囲パターンのSUMIFSでActualsから取得します
- OpEx合計のチェック:P&LタブでのSUM(
=SUM('OpEx'!C2:C200))が、予実対比フェーズを過ぎたら同期間のActualsからのSUMIFS合計と一致することを確認します
Pro Tip
取締役会でよく聞かれるランウェイの感応度分析には、Board SummaryタブにRunwayセルを設けましょう:=('Balance Sheet'!cash_balance) / ('P&L'!monthly_burn)。hire_pace_multiplierを変更すると、ランウェイの計算も自動的に更新されます。EBITDAを算出してブリッジを構築する
P&LタブのEBITDAは、売上からCOGSとOpExを引き、AssumptionsのD&Aを加算するだけです。EBITDAブリッジ——期間比較のウォーターフォール——は、P&LタブのまとまったセクションかBoard Summaryに連携する名前付き範囲ブロックに配置します。
タブをまたいでEBITDAを算出する数式:
='Revenue'!C3 - 'COGS'!C25 - 'OpEx'!C42 + (Assumptions!rev_pct_da * 'Revenue'!C3)
ここでC25はCOGS合計、C42はOpEx合計、rev_pct_daは売上に対するD&A比率の名前付き範囲(このモデルでは2.3%)です。
- EBITDAブリッジを数式で構成した行の列として構築する:前期EBITDA、売上変動の加算、COGS変動の減算、OpEx変動の減算、当期EBITDAの順——各行はハードコードではなく数式で算出します
- 3億1,200万円のEBITDAにEBITDAマルチプル14.2倍を適用すると、インプライドEV(企業価値)は約44億円となります——EBITDAが変動したときに更新されるよう、このバリュエーション計算はP&LタブのNamedセクションに配置します
- 各段階の利益率行を追加する:粗利益率%、EBITDAマージン%、純利益率%——取締役会が最初に確認するのはこの数値です
- クロスチェック:P&LタブのEBITDAは、運転資本変動前のキャッシュフロー計算書の営業キャッシュフローと整合している必要があります——一致しない場合は、営業とその他の区分でコストが誤分類されています
Pro Tip
P&LタブにOFFSETを使った「前期」列を追加しましょう。EBITDAブリッジがその列から自動的に参照するため、モデルをロールフォワードしても手動で期間を選択し直す必要がありません。3表連動モデルをリンクする
P&LはBalance Sheetの利益剰余金に連携し、キャッシュフロー計算書の出発点となる当期純利益を提供します。両方のリンクは数式で構成しなければなりません——どちらかをハードコードすると、実績が入った瞬間に3表の整合性が崩れます。
会計基準上(IFRSおよびJ-GAAPいずれにおいても)、損益計算書は純資産の変動と整合している必要があります——つまりBalance Sheetの利益剰余金の繰越しはP&Lの当期純利益と完全に一致しなければなりません。
利益剰余金のリンク:
='Balance Sheet'!$C$42 + 'P&L'!C58
ここでC58は当期の純利益、$C$42は前期末の利益剰余金です。キャッシュフロー計算書の出発点:
='P&L'!C58
- 営業活動の項目に非現金項目を加算する(AssumptionsのD&A、OpExの株式報酬費用)——両方とも数式参照とし、ハードコードしないこと
- 運転資本の変動はBalance Sheetの差分から取得する:売掛金の増加はキャッシュの使用のため
=('Balance Sheet'!C22 - 'Balance Sheet'!B22) * -1 - Balance Sheetの最下部にバランスチェック行を設ける:
='Balance Sheet'!Total_Assets - 'Balance Sheet'!Total_Liabilities - 'Balance Sheet'!Total_Equity——このセルが0から1円でも乖離したら赤くなる条件付き書式を設定します - EBITDAからFCFへのブリッジが整合していることを確認する:EBITDA → D&Aの税調整後加算 → 設備投資の控除 → アンレバードFCF——これがキャッシュフロー計算書の結果と一致するはずです
Pro Tip
3表をつなげてもBalance Sheetが合わない場合は、まず利益剰余金を確認してください(最も多い破綻箇所)。次に運転資本(2番目に多い)、次に借入スケジュールの順に切り分けます。最初からやり直す必要はありません——必ずどこかの参照が1つ壊れているだけです。取締役会提出用にP&Lテンプレートをフォーマットする
自分しか読めないP&Lテンプレートは成果物とは呼べません。Board Summaryタブは、モデルのアウトプットを取締役会メンバーが90秒で読める形に変換する場所です——数式バーも、生の参照も、デフォルト書式の8桁の金額表示も不要です。
Board Summaryのキーフォーマットルール:
- 金額はカスタム数値書式で千円単位・小数点1桁で表示する:
¥#,##0.0"K"——書式設定 → 表示形式 → カスタム数値形式で適用;4,218,312円が¥4,218.3Kと表示されます - 差異列には条件付き書式を使用する:有利差異は緑(RGB 87, 187, 138)、不利差異は赤(RGB 255, 87, 87)——ただし符号のルールを先に固定すること:売上の有利は実績>予算、OpExの有利は実績<予算と逆向きになります
- 列ヘッダーをAssumptionsから生成する:
=TEXT(EDATE(Assumptions!$B$3, COLUMN()-3), "MMM-YY")で、モデルのロールフォワード時に12個のヘッダーを手打ちし直す必要がなくなります - 行1〜3(社名・期間ヘッダー・スペーサー)を固定し、列A(項目ラベル)を固定する——表示 → 固定から設定;ロックを解除せずにナビゲートできる状態にします
- 前四半期比の成長率をインラインで計算する:
=(C3-B3)/B3をパーセント表示・小数点1桁でフォーマット——列Bに=SPARKLINE('P&L'!B3:M3)でスパークラインチャートを追加すると、トレンドの方向が一目で分かります
Pro Tip
数式タブ(Revenue、COGS、OpEx、Variance)は書式設定 → シートを非表示で隠し、Board SummaryタブとP&Lタブのみを閲覧専用で共有しましょう。モデル自体はそのまま維持され、受け手には必要な情報だけが表示されます。まとめ
このように構築されたP&Lテンプレート——前提値を1つのタブに集約し、実績データをSUMIFSで参照し、3表が連動して整合している——は、構築者以外の人でも保守できます。これは思っている以上に重要なことです。次にこのモデルを触るのは、3ヶ月後の深夜、取締役会の前日に、税率をどこにハードコードしたか記憶にない状態の自分かもしれません。
ほとんどのP&Lテンプレートで最も弱い部分は数式ではありません。実績データの取込みです。手動のCSVエクスポートは貼り付けに失敗し、列の順序がずれ、勘定科目名が変わっていきます。そこに時間が奪われ、誤りが忍び込みます。ModelMonkeyはこの問題点に特化して対処します:Google Sheetsのサイドバーに常駐し、HubSpot、Stripe、または会計システムから定期的にActualsタブへ直接データを取り込みます——CSVなしで。
ModelMonkeyのプランを選ぶ ——Google SheetsとExcelの両方で動作します。
よくある質問
Google SheetsのP&Lテンプレートには何タブ必要ですか?
実用的なFP&A用P&Lテンプレートには最低6タブが必要です:Assumptions、Revenue、COGS、OpEx、P&Lサマリー、そして実績データのActualsタブ。VarianceタブとBoard Summaryを追加すると8タブになり、月次レポートと取締役会資料の両方に対応できます。10タブを超えると、ナビゲーションのオーバーヘッドが整理のメリットを上回り始めます。
Google SheetsでP&LテンプレートをBalance Sheetにリンクする方法は?
主要なリンクは利益剰余金です:`='Balance Sheet'!$C$42 + 'P&L'!C58`(C58は当期の純利益)。会計基準上、損益計算書は純資産の変動と整合している必要があります——つまりこのリンクはハードコードではなく数式でなければなりません。Balance Sheetの最下部にバランスチェック行(総資産 − 総負債 − 純資産)を設け、0から乖離したときに赤くなる条件付き書式を設定してください。
P&LテンプレートへのActuals取込みにはどんなSUMIFSパターンを使えばよいですか?
Assumptionsタブに固定した期間アンカーを使った日付範囲条件を利用してください:`=SUMIFS(Actuals!$D:$D, Actuals!$B:$B, ">="&Assumptions!$B$3, Actuals!$B:$B, "<"&EDATE(Assumptions!$B$3,1), Actuals!$C:$C, "Revenue - SaaS")`。`EDATE`を使うことで日付をハードコードせずに月末境界を処理でき、モデルのロールフォワード(`model_start`を1セル変更するだけ)ですべての数式が自動で更新されます。
P&Lテンプレートで人件費はどのように扱うべきですか?
OpExタブに採用スケジュールを構築してください:部門別の現従業員数 × 1名あたり全額コスト、採用予定は別の行として追加します。APQCのベンチマーキングデータによると、ソフトウェア企業の人件費は営業費用の60〜70%を占め、最も感応度の高いラインです。Assumptionsに`hire_pace_multiplier`セル(デフォルト1.0)を設けることで、個別の行を編集することなく1つの入力変更で全部門の採用ペースの感応度分析が可能になります。
取締役会向けP&Lテンプレートにはどんな数値書式を使うべきですか?
金額には`¥#,##0.0"K"`を使用してください——4,218,312円が¥4,218.3Kと表示され、一目で読めて列幅もはみ出しません。利益率の行にはパーセント表示・小数点1桁を使用します。列ヘッダーはAssumptionsから `=TEXT(EDATE(Assumptions!$B$3, COLUMN()-3), "MMM-YY")` で生成することで、モデルのロールフォワード時に複数タブにまたがる12個のヘッダーを手動で更新する必要がなくなります。