Google SheetsでFP&A向けOKRを作成する方法
P&Lと財務予測に連動したOKRを構築します。FP&Aアナリスト向けのステップバイステップガイド — タブ構成、ライブ数式、スコアリング、レビューサイクルを網羅。
このガイドでは、Google Sheetsの財務モデルに構造的に組み込まれたOKRの作成方法を解説します。KRの目標値はAssumptionsタブで管理し、Current(現在値)はP&Lとキャッシュフローからリアルタイムで参照し、スコアは手動入力なしに自動更新される仕組みです。多くのOKRフレームワークは目標設定で終わりますが、このガイドではOKRを独立したドキュメントではなく、財務モデルのひとつのレイヤーとして扱います。
必要なもの
- P&Lタブ、キャッシュフロータブ、Assumptionsタブを備えたGoogle Sheets財務モデル
- タブ間参照が機能していること(`='P&L'!C12`などを使用したことがある)
- SUMIFS、IFERROR、AVERAGEIF、IFロジックの基本的な知識
- 明確な計画サイクルがあること — 四半期ごとのOKRが最適。年次ではモデル連動スコアリングには大まかすぎます
- 初期の目標設定のスコープとなる事業部門または部署が少なくとも1つあること
ステップバイステップ
Objectiveを書く — 方向性を示すものであり、定量的である必要はない
Objectiveは「どこを目指すのか?」を示すものです。定性的でモチベーションを高める内容であるべきで、指標そのものであってはなりません。財務チームはプロダクトチームよりもこの点を誤りがちです。たとえば「ARR5億8,000万円を達成する」をObjectiveとして書いてしまうケースですが、それはKRです。Objectiveはそのなぜを示すものです。
FP&Aの文脈で優れたObjectiveの例:
- 「資本効率の高いシリーズB調達への道筋を構築する」
- 「Q3予算確定前に収益ミックスを高粗利SKUへシフトする」
- 「GTM人員を維持しながらバーンレートを削減する」
- 「Q2クローズまでに銀行シンジケートへオペレーティングレバレッジを示す」
- Objectiveは四半期あたり最大3〜5個に絞る。5つを超えると優先順位が定まっていないことを示す
- 各Objectiveには1名のオーナーを設定する — CFO、VP Finance、事業部長など — 委員会ではなく
- Objectiveは自然に90日のスパンを持つものにする。それより短いものはマイルストーンです
- 「改善する」「最適化する」といった曖昧な動詞は避ける — 定量化はKRで行います
Pro Tip
「これを達成したら、取締役会は感銘を受けるか?」と自問してObjectiveを検証してください。正直な答えが「たぶん」なら、書き直しましょう。Key Resultを書く — 定量的かつP&Lで追跡可能なもの
各KRには3つの構成要素が必要です。指標、ベースライン、目標値です。指標はモデルや連携データソースから直接取得できるものでなければなりません。手動カウントやアンケート結果は不可です。P&Lのどの行にその数値があるかを指摘できない場合、そのKRはまだ準備ができていません。
「資本効率の高いシリーズB調達への道筋を構築する」というObjectiveに対するKRの例:
| Key Result | 指標 | ベースライン | 目標値 |
|---|---|---|---|
| KR1: ARRの拡大 | ARR(円) | 4億2,000万円 | 5億8,000万円 |
| KR2: 売上総利益率の改善 | 売上総利益率(%) | 38.5% | 42.0% |
| KR3: ネットバーンの削減 | 月次ネットバーン(万円) | 3,800万円 | 2,400万円 |
| KR4: EBITDAの改善 | EBITDA(円) | 8,400万円 | 1億1,000万円 |
- Objectiveごとに3〜5個のKRに絞る。5つを超えるとアカウンタビリティが希薄になる
- 各KRは独立して動くものにする — KR2の改善がKR3を自動的に改善するなら、それらは別のKRではない
- 二値的なKR(「6月30日までに監査を完了する」)は避ける — スコアが0か1になるため、線形補間が無意味となり、進捗の軌跡が見えなくなる
- ベースラインは予測ではなく、直近完了期の実績値を使う。予測は変わるが、実績は変わらない
Pro Tip
KR候補にP&Lまたはキャッシュフロー計算書の明確な行がない場合、それは財務OKRフレームワークではなく、オペレーショナルダッシュボードに属するものかもしれません。Google SheetsでOKRタブの構造を設定する
数式を組み込む前に、クリーンなデータレイアウトを用意する必要があります。専用のOKRタブを作成し、フラットな行構造にしてください — KRごとに1行、その行には親のObjectiveを繰り返し記載します。
列のレイアウト: Obj_ID | KR_ID | Objective | Key Result | Metric | Baseline | Target | Current | Score | RAG_Status | Owner | Quarter
Objectiveのグループ化にセル結合を使わないでください — SUMIFSやAVERAGEIFの範囲ロジックが壊れます。フラット構造は冗長に見えますが、数式との相性は抜群です。
OKRタブはAssumptionsとP&Lの間に配置し、参照の連鎖が一目でわかるようにする- 列の位置を統一する:F列にBaseline、G列にTarget、H列にCurrent、I列にScore — これによりスコアリング数式をすべてのKR行にコピー&ペーストできる
- 4つのObjectiveと16のKRからなる標準的なモデルでは、OKR、ダッシュボード、Assumptionsタブ全体で約200のセル数式が生成される
- F列とG列全体を指す名前付き範囲
OKR_TargetsとOKR_Baselinesを定義する — Assumptionsタブの参照が読みやすくなる
Pro Tip
Current列(H列)をライトブルーで塗りつぶして、数式駆動であることを示してください。30秒でできるこの作業が、取締役会前夜の深夜に誰かがライブ参照を上書きしてしまうのを防ぎます。Currentカラムにライブ値を取り込む
Current列こそ、OKRトラッカーの真価が発揮される場所です。各セルは財務モデルの信頼できるソースを直接参照するべきで、コピー&ペーストは厳禁です。
ARR(KR1)の場合、売上集計タブから累計合計を取得:
=SUMIFS('Revenue'!D:D,'Revenue'!A:A,"ARR",'Revenue'!B:B,"<="&Assumptions!$B$3)
売上総利益率(KR2)の場合、P&Lから取得:
=IFERROR(('P&L'!C12-'P&L'!C14)/'P&L'!C12,0)
月次ネットバーン(KR3)の場合、四半期の純現金流出を平均:
=AVERAGEIFS('CashFlow'!E:E,'CashFlow'!B:B,">="&Assumptions!$B$4,'CashFlow'!B:B,"<="&Assumptions!$B$5)
Current値を直接入力しないでください。セルに4億8,000万円と手入力している時点で、モデルの整合性が崩れていますAssumptions!$B$3(期末日)は、すべての「時点」ロジックのSingle Source of Truthとすべきです — 1つのセルをあらゆる場所で参照しますIFERROR(...,0)の使用は最小限に。除算エラーをゼロで隠すと、スコアがサイレントに破損し、取締役会まで気づかない可能性があります- ソースタブに数式でアクセスできる形式で指標がない場合は、まずソースタブを修正してください — 手動入力で回避しないこと
Pro Tip
ダッシュボードタブに=MAX('CashFlow'!B:B)を使った最終データ日付セルを追加してください — レビュアーが実績値の鮮度をすぐに確認できます。KRの目標値をAssumptionsタブに組み込む
AssumptionsタブはOKRの目標値を含め、モデルを動かすすべての数値を管理すべきです。VP of SalesがARRの目標を5億8,000万円から6億1,000万円に四半期途中で修正した場合、その変更が1つのセルに触れるだけで、OKRスコア、P&L感度分析、ボードパックのサマリーすべてに伝播するべきです。
AssumptionsにOKR目標値のブロックを追加します:
| 項目 | 値 | 備考 |
|---|---|---|
| KR1 ARR目標 | 5億8,000万円 | OKR Q2 2026 |
| KR2 粗利益率目標 | 42.0% | OKR Q2 2026 |
| KR3 バーン目標 | 2,400万円 | 月次ネット |
| KR4 EBITDA目標 | 1億1,000万円 | Q2累計 |
次にOKRタブのTarget列(G列)から逆参照します:
='Assumptions'!$C$18 // KR1 ARR目標
='Assumptions'!$C$19 // KR2 粗利益率目標
P&LでARR目標が予測前提値のゲートになっている箇所では:
=IF('P&L'!C5>=Assumptions!$C$18,Assumptions!$D$7,Assumptions!$D$8)
- 目標値をAssumptionsに集約することで、四半期途中に目標が変わった際のモデル照合時間が約45分から5分以内に短縮されます — タブをまたいで修正箇所を探す代わりに、1つのセルを更新するだけです
- 四半期が始まったらシート保護でAssumptionsタブをロックしてください。変更には明示的な解除と変更ログへの記録が必要です
Ctrl+Shift+;を使って静的な最終更新日時タイムスタンプを追加してください(NOW()は避けてください。毎回開くたびに再計算され、監査証跡が不明瞭になります)
Pro Tip
モデルに既にScenariosタブがある場合、「OKR目標」を名前付きシナリオとして列を追加してください。ベースケースとOKR連動の予測を上書きなしで切り替えられるようになります。スコアリング数式を構築する
KRスコアは合否だけでなく、部分的な進捗を反映すべきです。標準的な0〜1.0スケール — ジョン・ドーア著『Measure What Matters』を含むほとんどのOKRフレームワークで0.7が「順調」とされる — では、ベースラインと目標値の間で線形補間を使用します。
5行目のKRのコアスコアリング数式:
=MIN(1,IFERROR((OKR!H5-OKR!F5)/(OKR!G5-OKR!F5),0))
H5 = Current、F5 = Baseline、G5 = Targetです。MIN(1,...)の上限設定により、目標を超過した際に1.0以上のスコアがObjectiveレベルの集計を歪めるのを防ぎます。
低いほど良いKR(バーンレート、チャーン、サポートチケット数)の場合:
=MIN(1,IFERROR((OKR!F5-OKR!H5)/(OKR!F5-OKR!G5),0))
Objectiveレベルへのロールアップ:
=AVERAGEIF(OKR!$A:$A,"OBJ-1",OKR!$I:$I)
Scoreの隣にRAGステータス列を追加:
=IF(I5>=0.7,"Green",IF(I5>=0.4,"Amber","Red"))
- スコア0.4未満 = 遅延;0.4〜0.7 = 要注意;0.7超 = 順調 — 条件付き書式でこれに対応した色を設定する
- テキストベースのRAG列は、COUNTIFやフィルタリングなどの後続ロジックで、塗りつぶし色に依存するよりも数式との相性が良い
- 方向性に応じたカスタマイズをする前に、スコアリング数式をすべてのKR行に統一して適用する — 一貫性により監査が速くなる
Pro Tip
ダッシュボードの上部に、現在の四半期でフィルタリングした=AVERAGE(OKR!I:I)を使うポートフォリオスコアセルを追加してください。CFOが詳細ビューを開く前に、会社全体の状況を1つの数字で把握できます。1画面で完結するレビューダッシュボードを構築する
取締役会はフラットなKRテーブルをスクロールしたくありません。ダッシュボードタブは重要な5〜6個の数値を表示し、それぞれをライブモデルにリンクすべきです。
IDと四半期でObjectiveスコアを取得:
=AVERAGEIFS(OKR!$I:$I,OKR!$A:$A,Dashboard!$B$3,OKR!$L:$L,Dashboard!$C$1)
$B$3はObj_IDフィルター、$C$1は四半期フィルター(例:「Q2 2026」)を保持します。
KR3目標に向けた軌跡を示すバーンレートのスパークラインを追加:
=SPARKLINE('CashFlow'!E2:E14,{"charttype","line";"color","#E53935";"min",0;"max",500000})
現在のARRと目標の達成率を取得:
=IFERROR(SUMIFS('Revenue'!D:D,'Revenue'!A:A,"ARR",'Revenue'!B:B,"<="&Assumptions!$B$3)/Assumptions!$C$18,0)
- ダッシュボードは印刷1ページ(横向き、約11列)に収める — 収まらない場合はOKRが多すぎるか列が多すぎる
- ARR40億円規模の企業向け四半期ボードパックは通常4〜5つのObjective、16〜20のKR、3つの財務シナリオをカバーする — 最初からそのスケールを想定して設計する
- コピー&ペーストした値ではなく、ライブモデルのデータを参照する。古いダッシュボードはステークホルダーを積極的に誤解させる
Pro Tip
ダッシュボードの1〜3行目をロック(ペインの固定)して、Objectiveの詳細行をスクロールしても四半期フィルターとポートフォリオスコアが常に表示されるようにしてください。まとめ
ドキュメントに眠るOKRと意思決定を動かすOKRの違いは、Key Resultがライブの財務データに接続されているかどうかにかかっています。Current列がP&Lとキャッシュフローから直接値を取得し、目標値がAssumptionsに集約されれば、このフレームワークは目標設定の儀式を超え、モデルのコントロールレイヤーとして機能し始めます。
ほとんどの実装における弱点はメンテナンスです — タブがリネームされ、列がシフトし、四半期途中にモデルが再構成される中で、数式参照を健全な状態に保つことです。誰かがタブを整理するたびに数式の参照先を修正している場合、シートの構造を理解したAIアシスタントがモデルロジックを壊すことなくそれらの再接続を処理できます。
これをサポートするトラッカーの構造については、FP&A向けOKRトラッカーシート:財務モデルに紐付くものを構築するおよびFP&A向けOKRシート:財務モデルに組み込むをご覧ください。
ModelMonkeyのプランを選ぶ — Google SheetsとExcelの両方に対応しています。
よくある質問
財務チームは四半期あたりいくつのOKRを作成すべきですか?
中堅企業の財務チームにとって、3〜5つのObjectiveにそれぞれ3〜5つのKey Resultというのが現実的な上限です。合計9〜25のKRとなり、すべてが財務モデルへのライブ数式接続を必要とします。これを超えると、メンテナンスの負担が計画の価値を上回ります — スコアを更新することに、それに基づいて行動するよりも多くの時間を費やすことになります。
Key Resultとマイルストーンの違いは何ですか?
Key Resultはベースラインと目標値を持つ継続的な指標で、線形スケールで0〜1.0の間でスコアリングされ、進捗の軌跡を示します。マイルストーンは二値的です:完了か未完了か。「6月30日までに監査を完了する」はマイルストーンです。「監査指摘事項を12件から3件に削減する」はKey Resultです。OKRスコアリングロジックには継続的なKRが必要です。二値的なアイテムはKR列ではなく、プロジェクトトラッカーに属します。
OKRの目標値はOKRタブに置くべきですか、それともAssumptionsタブですか?
常にAssumptionsタブです。目標値がOKRタブにしかない場合、それに依存する財務予測から切り離されてしまいます。目標値が四半期途中で変わる場合(必ず変わります)、OKRスコア、P&L感度分析表、ボードパックを同時に更新するために、1つのセル変更で済むようにしたいはずです。それはAssumptionsがSingle Source of Truthである場合にのみ機能します。
バーンレートやチャーンのように、低いほど良いKRはどのようにスコアリングしますか?
補間式を反転させます:`=MIN(1,IFERROR((Baseline - Current)/(Baseline - Target),0))`。たとえばバーンのベースラインが3,800万円、目標が2,400万円、現在値が3,100万円の場合、スコアは(3,800万円 − 3,100万円)/(3,800万円 − 2,400万円)= 0.5となります。同様の`MIN(1,...)`上限が適用されます — 目標を下回っても1.0に達することはできますが、それを超えることはできません。
Current列はどのくらいの頻度で再計算すべきですか?
常時です — 数式はシートが再計算されるたびにライブデータを取得すべきです。ただし、レビューのサイクルは別です:オペレーショナルチェックインは週次、ボードパック向けは月末時点で固定します。期末に`Current`列と`Score`列を値として月次の`Actuals_Archive`タブに貼り付けてください。ライブモデルを妨げることなく、クリーンな監査証跡が残ります。