Google SheetsでつくるP&L(損益計算書)テンプレート完全ガイド
5タブ構成のP&Lテンプレートを Google Sheets で構築。SUMIFSによる実績取込み、予算対実績の差異分析、EBITDAブリッジまで、タブ間連携でまるごと自動化する方法を解説します。
Google SheetsでP&L(損益計算書)テンプレートを構築し、財務3表に連動できる本格的な損益モデルを完成させましょう。Assumptionsタブですべての前提数値を一元管理し、SUMIFSで総勘定元帳(GL)データから実績を自動取込み、差異列を自動更新、さらにディールの試算と連動するEBITDAブリッジまで実装します。このガイドでは5つのタブをゼロから構築し、月次決算サイクルを重ねても数値が必ずタイアウトする仕組みをつくります。
必要なもの
- 対象ワークブックへの編集権限を持つ Google Sheets アカウント
- ERPシステム(NetSuite、QuickBooks、Xero、freeeなど)からエクスポートしたGLデータ(フラットファイル形式)。最低限、日付・勘定科目コード・部門・金額の列が必要です
- SUMIFS、絶対参照と相対参照の違い、名前付き範囲の基本操作に慣れていること
- 月次明細ベースの予算ファイルまたは予算タブ(実績との比較に使用)
- 損益計算書の基本構造およびEBITDAの計算方法に関する基礎知識
ステップバイステップ
Google SheetsのP&Lテンプレートにおけるタブ設計
タブは5つ、データの流れは一方向のみ。モデル内のすべての数値は単一のソースに遡ります——実績はGL_Raw、計画値はBudget、各種レートはAssumptionsから。P&L本体には直接数値を入力しません。
- Assumptions** — 割引率、実効税率、成長ドライバー、人件費、参照金利など(2025年半ば時点のTIBOR目安などを参考に設定)
- P&L** — 損益計算書本体。すべての数式は他のタブを参照し、ここには生の数値を直接入力しない
- GL_Raw** — ERPエクスポートデータをフラットテーブル形式で貼り付けまたはインポート。月次決算のたびに上書きする
- Budget** — 明細ごとの月次予算。P&Lと同じ行構造を維持する
- Variance** — 予算対実績の差額および差異率。数式のみで構成する
Pro Tip
すべてのタブで1行目を固定(フリーズ)し、タブ間で列ヘッダー名を統一してください。GLエクスポートで「Dept」、Budgetタブで「Department」のように表記が異なると、SUMIFSの照合が無言で失敗します。Assumptionsタブの設定とロック
Assumptionsタブは、モデル内で人間が数値を入力する唯一の場所です。それ以外はすべて計算で導出します。
B1にFY2026 Assumptionsのヘッダーを設定。B列に値、A列にラベル、C列にソースメモを配置する- 主な入力値:
RevenueBase(19億円)、RevenueGrowthRate(12%)、GrossMarginPct(38.5%)、EffectiveTaxRate(25%)、DiscountRate_WACC(10.5%)、DA_Annual(8,800万円) - 各項目に名前付き範囲を設定:B3を選択し、[データ] > [名前付き範囲] で
RevenueBaseと命名。モデル内のどこからでも=RevenueBaseとして参照可能 - タブを権限管理でロック:[データ] > [シートと範囲の保護] で、財務担当者以外の編集を制限する
Pro Tip
Assumptionsタブのヘッダー部分に=TODAY() で「最終更新日」セルを設けておきましょう。取締役会直前に、6ヶ月前の前提数値でモデルが動いていないかを一目で確認できます。GL_Rawデータの貼り付けと構造化
GL_Rawは実績データのソースです。月次決算のたびに上書きされます。P&Lはここから読み込むだけで、書き戻しは行いません。
- 必須列:
Date(YYYY-MM-DD形式)、Account_Code、Account_Name、Department、Amount、Type(収益/費用 または 借方/貸方) - ERPエクスポートの列名が異なる場合は、GL_Raw側のヘッダーを変更してください——P&L側のSUMIFS参照を変更するのではありません
- Google Sheetsのセル上限は1スプレッドシートあたり1,000万セル(Google Workspaceのストレージ制限)。売上20億円規模の企業で12ヶ月分のGLは通常5,000〜15,000行程度で、上限には余裕があります
- 範囲をテーブルに変換([フォーマット] > [テーブルに変換])すると、行を追加したときにSUMIFSの参照範囲が自動で拡張されます
- 補助列として
Monthを追加:=EOMONTH(A2,0)— 日付範囲ロジックを使わずに月次実績をSUMIFSで集計するために使用します
Pro Tip
GL_Rawをフィルタリングや並べ替えして保存しないでください。アドホック分析が必要な場合は別途Analysisタブを作成してください。生データを誤って並べ替え保存すると、明細が消えてしまいます。タブ間SUMIFS連携で実績データを取り込む
ここでモデルがつながります。P&Lの各行は、タブをまたいだSUMIFSでGL_Rawから月次実績を取り込みます。GoogleのSUMIFSドキュメント(2025年更新)によると、最大127組の条件範囲と条件を指定でき、勘定科目コード+部門+月の絞り込みには十分です。
P&LタブのセルC5(2026年1月の売上)の数式例:
=SUMIFS(
GL_Raw!$E:$E,
GL_Raw!$B:$B, 'P&L'!$A5,
GL_Raw!$D:$D, 'P&L'!C$2
)
P&LのA列に勘定科目コード、2行目に期末日(=EOMONTH("2026-01-01",0) から12月まで)を入力します。GL_RawのE列は金額、B列は勘定科目コード、D列はステップ3で追加したEOMONTH補助列です。
複数部門にまたがる集計(製造と物流の「4xxx」番台勘定を合算したCOGSなど):
=SUMIFS('GL_Raw'!$E:$E, 'GL_Raw'!$B:$B, "4*",
'GL_Raw'!$D:$D, 'P&L'!C$2)
+ SUMIFS('GL_Raw'!$E:$E, 'GL_Raw'!$B:$B, "5*",
'GL_Raw'!$D:$D, 'P&L'!C$2)
A列は $A5、2行目は C$2 で固定し、1月分が検証できたら12ヶ月分にコピーします。
Pro Tip
12ヶ月分にコピーする前に、まず1ヶ月分をエンドツーエンドで検証してください。別のセルで同じ勘定科目・月をシンプルなSUMIFで手動確認し、SUMIFS出力と照合しましょう。ズレがあれば、同じエラーを11ヶ月分にコピーする前に条件参照を修正できます。P&L損益計算書の明細行を構築する
GL_Rawから実績が流れてきたら、損益計算書は上から下に向かって計算されます。各小計は上位行を参照する数式で導出し、再度SUMを書き直すことはしません。そうすることで、修正漏れによるズレを防ぎます。
売上15億〜25億円規模の企業の標準的な構造:
売上高 =SUMIFS(GL_Raw実績, 売上勘定 1xxx)
(控除) 売上原価 =SUMIFS(GL_Raw実績, 原価勘定 4xxx〜5xxx)
売上総利益 =売上高 - 売上原価
売上総利益率 =売上総利益 / 売上高 [目標: 38.5%]
(控除) 販売費 =SUMIFS(...)
(控除) 研究開発費 =SUMIFS(...)
(控除) 一般管理費 =SUMIFS(...)
EBITDA =売上総利益 - 販管費合計
EBITDAマージン率 =EBITDA / 売上高
(控除) 減価償却費 =Assumptions!DA_Annual / 12 [8,800万円 / 12]
EBIT =EBITDA - 減価償却費
(控除) 支払利息 =有利子負債 * 参照金利 / 12
EBT(税前利益) =EBIT - 支払利息
(控除) 法人税 =MAX(EBT,0) * EffectiveTaxRate [25%]
当期純利益 =EBT - 法人税
マージン行には条件付き書式を設定しましょう:売上総利益率が35%未満なら赤、35〜38%なら黄、38%超なら緑。2分でできる設定で、12列のビューから問題のある月を探す手間がなくなります。
Pro Tip
「年度累計(YTD)」列を追加し、4月から直近の確定期間までの合計を表示しましょう。=SUMIF('P&L'!$C$2:$N$2,"<="&EOMONTH(TODAY(),0),'P&L'!C5:N5) の数式なら、毎月自動的に集計範囲が更新されます。P&Lテンプレートに予算対実績の差異分析を追加する
Varianceタブは、四半期の取締役会資料作成でこのモデルが真価を発揮する場所です。予算は専用タブで管理し、Varianceタブが自動的に行ごとにP&L実績と比較します。
Varianceタブ(1月分):C列(実績)、D列(予算)、E列(金額差異)、F列(差異率):
=P&L!C5 - Budget!C5 [金額差異。マイナスは予算未達を意味する]
=(P&L!C5 / Budget!C5) - 1 [差異率]
売上高19億円・成長率12%の予算をベースにすると、結果のイメージは以下のとおりです:
| 明細 | 実績 | 予算 | 差異額 | 差異率 |
|---|---|---|---|---|
| 売上高 | 18億2,000万円 | 19億1,000万円 | -9,000万円 | -4.7% |
| 売上総利益 | 6億9,000万円 | 7億4,000万円 | -5,000万円 | -6.8% |
| EBITDA | 2億円 | 2億3,000万円 | -3,000万円 | -10.9% |
売上高-4.7%の差異は議論に値します。EBITDAが2億3,000万円の計画に対して-10.9%(約2,500万円の未達)ともなれば、即座にフォローアップの連絡が飛んでくるレベルです。差異率列には条件付き書式を設定してください:-5%未満は赤、-5%〜-2%は黄。この閾値はEBITDA2億〜5億円規模の企業を想定しており、金額の絶対値基準は規模に応じて調整してください。
Pro Tip
G列に「差異コメント」列を追加し、フリーテキスト入力のみに保護設定を行いましょう——数式はE列・F列でロック、G列はファイナンスチームが定性的な説明を記入する欄にします。CFOが最初に目を向けるのはこの列です。EBITDAブリッジとリターン計算の構築
ブリッジは、P&Lをディール試算に変換するセクションです:EBITDAマルチプル、企業価値(EV)、株主価値。このモデルが銀行シンジケートへのDCFやLP(リミテッドパートナー)向けアップデートに使われる場合、スクリーンショットで切り取られるのはこのセクションです。
P&Lタブ下部または専用タブの Returns セクション:
LTM EBITDA =EBITDAの過去12ヶ月合計 [2億3,000万円]
EV/EBITDAマルチプル =Assumptions!EV_Multiple [14.2x]
企業価値(EV) =LTM_EBITDA * EV_Multiple [32億6,000万円]
(控除) 純有利子負債=有利子負債合計 - 現金・預金
株主価値 =企業価値 - 純有利子負債
マルチプルを2変数データテーブルで感度分析します:行入力にEV/EBITDAマルチプル(10x〜18x)、列入力にEBITDAマージン(33%〜44%)を設定。9列×6行のテーブルで、モデルの数式に触れることなく54パターンの株主価値シナリオを算出できます。EBITDA2億3,000万円をベースにした場合、10xと18xの間で企業価値の差は約18億4,000万円——この試算幅は取締役会資料に掲載すべき情報であり、シナリオ切り替えの奥に埋もれさせるべきではありません。
Pro Tip
ここで使うEBITDAは常にLTM(過去12ヶ月)であり、将来予測ベースではありません。銀行やバイヤーがNTM(今後12ヶ月)マルチプルを求める場合は、Assumptionsタブに別途NTM_EBITDA セルを設けてください。LTMとNTMを切り替えるためにP&LのSUMIFS数式を変更するのはNG——追跡困難なモデル破損の原因になります。まとめ
これで5タブ構成のP&Lテンプレートが完成しました。すべての数値はソースに遡ることができます——Assumptionsでレートを管理し、GL_Rawで実績を取り込み、Budgetは比較用にクリーンな状態を保ち、P&Lが上から下に計算し、Varianceが乖離を自動でフラグします。月次決算のたびにGLデータを貼り直せば、すべてが更新されます。
実運用で問題が起きやすいのは数式ではありません。GLエクスポートです。期中に勘定科目コードが変更され、部門が再編成されると、SUMIFSは無言でゼロを返します。P&Lの最下部に突合チェック行を設けて、各月のGL_Raw合計とP&L売上高合計を比較してください。1円でもズレがあれば、取締役会資料を送る前にソースデータ側で何かが変わったサインです。
StripeのMRRやHubSpotのパイプラインデータをリアルタイムでこのモデルに取り込んでいるチームにとって、CSVをダウンロードして貼り付けるステップが更新サイクルのボトルネックになりがちです。ModelMonkeyのプランを選ぶ——請求データやCRMデータを直接Actualsタブに取り込みながら、構築済みのSUMIFS構造を壊しません。
よくある質問
Google SheetsのP&Lテンプレートに必要なタブ数は?
中堅企業のユースケースであれば5タブで十分です:Assumptions、P&L、GL_Raw、Budget、Variance。ディール分析に活用する場合はReturnsタブを追加します。重要なルールは、インプットとアウトプットを同じタブに混在させないこと。3ヶ月後に忘れた数値をハードコードしてしまう最大の原因です。
SUMIFSは複数部門にまたがる1年分のGLデータを処理できますか?
はい。GoogleのSUMIFSドキュメントによると、最大127組の条件範囲と条件をサポートしており、Google Sheetsは1スプレッドシートあたり最大1,000万セルまで対応しています。売上20億円規模の企業で12ヶ月分のGLエクスポートは通常5,000〜15,000行程度で、どちらの上限にも余裕があります。複数の複雑な条件を使う場合でも、50,000行を超えるまではパフォーマンスへの影響はほとんどありません。
期中に勘定科目コードが変更された場合はどう対処しますか?
GL_Rawにマッピング列を追加し、旧コードを現在の勘定科目体系に変換してください。SUMIFSは生の勘定科目コード列ではなく、このマッピング列を参照します。10月の部門名変更が1月の実績に影響せず、何がいつ変わったかのトレイルも残ります。
売上15億〜25億円規模の企業に適切なEV/EBITDAマルチプルは?
業種・成長率・市場環境によって異なり、Google Sheetsで答えが出る問いではありません。モデル上はAssumptionsタブでパラメータ化し(本ガイドでは14.2xをプレースホルダーとして使用)、10x〜18xをカバーする感度分析テーブルを作成してください。モデルの役割は幅を示すことであり、マルチプルの選定はディール交渉の場で議論すべき事項です。
毎月のGLデータ更新を手作業の貼り付けなしで自動化するには?
Sheets内で最もシンプルな方法は、GL_Rawの2行目以降をクリアして新しいエクスポートデータを一括貼り付けするマクロです。ERPがCSVをGoogle Driveに自動出力する場合、Apps Scriptでスケジュール実行による自動貼り付けも可能です。StripeやHubSpotなどのライブデータソースであれば、APIで直接タブに接続することでCSVステップを省略できます。