如何在 Google Sheets 中构建 OKR 模板表格
在 Google Sheets 中构建多标签页 OKR 模板,支持加权关键结果评分、自动汇总及财务模型联动。面向财务团队的分步指南。
在 Google Sheets 中构建一个多标签页 OKR 模板,自动计算加权关键结果得分,将其汇总为目标层级评级,并与财务假设标签页直接联动——当 ARR 目标(如 1850 万美元)发生变动时,OKR 得分随之自动更新。 这不是一份红绿灯式的检查清单,而是一个结构化模型:Config 标签页用于设置周期与权重参数,KR_Detail 标签页用于录入进展数据,Rollup 标签页按负责人和目标进行汇总,Dashboard 标签页则用于生成董事会汇报材料。共七步完成搭建。
开始前的准备
- 拥有工作簿编辑权限的 Google Sheets 账户
- 熟悉跨标签页引用与命名区域的使用
- 一份可用的三大报表模型或假设标签页(第 6 步可选但推荐)
- 至少一个季度的 OKR 数据用于初始化模型
- 对 Apps Script 有基本了解(第 2 步使用一段简短函数,可直接复制粘贴)
分步指南
设计 OKR 模板的标签页结构
动手之前,先确定标签页架构。一个设计合理的 OKR 模板应将输入、计算和输出分离——这与财务模型可审计性的核心原则一致。
- Config** - 周期设置、权重、阈值及负责人列表
- KR_Detail** - 每行对应一项关键结果,所有进展数据均在此录入
- Rollup** - 基于 SUMPRODUCT 的目标得分及负责人汇总
- Dashboard** - 董事会就绪视图,数据完全来源于 Rollup 和 Config
- Fin_Link** - 可选,连接财务模型假设标签页的桥梁
Pro Tip
标签页命名时不要使用空格。在深夜赶董事会材料时编写跨标签页 SUMIFS,"KR_Detail" 比 "KR Detail" 导入更简洁。构建 Config 标签页
Config 是主控面板。所有可能发生变化的假设——周期、评分阈值、权重方案——均集中在此,别无他处。
在 Config 中设置以下命名区域(公式 > 命名区域):
cfg_period→ 当前 OKR 周期标签,如 "Q3 2026"(单元格 B2)cfg_ontrack_threshold→ 显示绿色所需的最低加权得分,如 0.70(单元格 B4)cfg_owners→ 用于 KR_Detail 下拉选项的负责人名单(B8:B20)cfg_weight_sum_check→ 校验公式:=SUMIF(KR_Detail!E:E,"*",KR_Detail!F:F),用于检测各目标权重之和是否为 1.0
Pro Tip
如果从已连接数据源(如 HubSpot、Salesforce)拉取实际数据,可将此函数设置为 onOpen 触发器。时间戳能告知审阅者数据的最近更新时间。构建 KR_Detail 标签页(OKR 模板的核心引擎)
这是模型的核心所在。KR_Detail 每行对应一项关键结果,包含其所属目标、负责人、目标值、实际值、在目标内的权重及计算得分等列。
设置 A 至 H 列:
| 列 | 列标题 | 说明 |
|---|---|---|
| A | Objective_ID | 简短代码,如 "OBJ-1" |
| B | KR_ID | 如 "KR-1.2" |
| C | Owner | 来源于 cfg_owners 的下拉选项 |
| D | KR_Description | 自由文本 |
| E | Target | 数值或百分比 |
| F | Actual | 数值或百分比——唯一手动输入列 |
| G | Weight | 每个 Objective_ID 的权重之和必须为 1.0 |
| H | KR_Score | 公式:=IFERROR(MIN(F2/E2,1)*G2, 0) |
MIN(...,1) 上限设置是有意为之的。NRR 达成 112%(目标为 100%)可获得满权重加分,但不会使上级目标得分超过 1.0。如果团队希望奖励超额完成,可将上限调整为 1.2,并在 Config 中记录说明。
- 锁定 H 列(格式 > 保护范围),防止有人用硬编码数字覆盖公式
- 为 F 列添加条件格式:若
F < E*cfg_ontrack_threshold则显示红色,若F >= E则显示绿色 - 为 C 列添加数据验证,限制只能选择 cfg_owners 中的值——避免因拼写错误导致 Rollup 标签页的 SUMIFS 失效
Pro Tip
添加一列「信心指数」(I 列),使用 1-3 的下拉选项。该列不影响评分,但能向董事会传递一个公式无法捕捉的前瞻性信号。配置加权评分公式
KR_Detail 结构搭建完成后,H 列的评分公式已较为直观。目标层级得分的计算才是重点——需要对过滤后的区间执行 SUMPRODUCT。
在 Rollup!C2(假设 A2 存储 Objective_ID),目标得分公式如下:
=SUMPRODUCT(
(KR_Detail!$A$2:$A$200=A2)* // 筛选此目标
KR_Detail!$H$2:$H$200 // 求加权关键结果得分之和
)
公式返回 0 至 1 之间的数值。得分 0.46 意味着该目标当前达成率为目标值的 46%——低于在 Config 中设置的 0.70 阈值,因此在 Dashboard 中显示为红色。
如需计算公司整体得分,需对目标本身进行加权。在 Rollup 中添加 Obj_Weight 列并计算:
=SUMPRODUCT(Rollup!$B$2:$B$10, Rollup!$C$2:$C$10)
其中 B 列为目标权重,C 列为上述得分。若有 4 个目标,权重分别为 30/30/20/20,两个 30% 权重目标的平均得分为 0.8,两个 20% 权重目标得分为 0.5,则公司整体得分为 (0.8*0.3 + 0.8*0.3 + 0.5*0.2 + 0.5*0.2) = 0.68——略低于进展正常阈值。
Pro Tip
在 Config 中运行权重加总校验。若SUMIF(Rollup!B:B,"*",Rollup!B:B) 返回值不为 1.0,公司整体得分将失去意义。添加一个不匹配时变红的单元格进行标记。构建负责人与周期汇总
Rollup 标签页承担两项职能:按目标汇总(第 4 步)和按负责人切片以支持绩效沟通。
Rollup 中的负责人汇总(E 至 G 列):
// 某负责人所有关键结果的平均加权得分
=IFERROR(
AVERAGEIF(KR_Detail!$C$2:$C$200, E2, KR_Detail!$H$2:$H$200),
0
)
如需进行跨周期对比,可添加一个名为 KR_Detail_Prior 的标签页,结构与 KR_Detail 相同,存储上期数据。Rollup 中的变化量公式:
=SUMPRODUCT(
(KR_Detail!$A$2:$A$200=A2)*KR_Detail!$H$2:$H$200
) -
SUMPRODUCT(
(KR_Detail_Prior!$A$2:$A$200=A2)*KR_Detail_Prior!$H$2:$H$200
)
正值表示该目标较上季度有所提升。这一数据可直接用于董事会汇报,无需任何手动计算。
- 锁定整个 Rollup 标签页禁止编辑(全部为公式,无手动输入)
- 在底部添加一行用于显示公司级综合得分
- 按得分升序排列目标,使问题区域一目了然
将 OKR 模板与财务假设联动
这是大多数 OKR 模板所忽略的步骤,也是为何 OKR 复盘与财务复盘总是分开召开的根本原因。将二者联动起来。
如果财务模型的假设标签页中包含 ARR 目标、毛利率阈值和人员编制,应直接在 KR_Detail 中引用,而非硬编码:
// KR_Detail E2:「将 ARR 增长至 1850 万美元」关键结果的 ARR 目标
='Assumptions'!$B$12
// KR_Detail F2:来自实际数据标签页的 ARR 实际值
=SUMIFS('P&L'!$C:$C,'P&L'!$B:$B,">="&Assumptions!$B$3,'P&L'!$A:$A,"ARR")
当 CFO 在假设标签页中将 ARR 目标从 1850 万美元调整至 2100 万美元时,对应关键结果的 OKR 得分将自动重新计算。上季度毛利率目标 72%、实际 70.1% 尚显示绿色,若本季度目标上调,则会变为黄色。
建议直接与财务模型假设联动的目标指标:
- ARR / NRR 目标(来自收入模型)
- 毛利率目标(来自损益表)
- 人员编制目标(来自人力资源规划)
- 资金消耗率或 EBITDA 阈值(来自现金流模型)
Pro Tip
为所有跨标签页引用添加 IFERROR 包裹。若有人重命名了假设标签页,应立即显示 "#REF 错误——请检查假设标签页名称",而不是静默返回零并破坏 OKR 得分。构建 OKR Dashboard 标签页
Dashboard 标签页为只读输出。每个单元格均从 Rollup 或 Config 中提取数据,禁止手动输入。
将其划分为三个区域:
区域一——标题行(第 1-3 行):期间标签来源于 =Config!B2,公司综合得分来源于 Rollup 汇总,RAG 状态指示使用 =IF(Rollup!composite>=cfg_ontrack_threshold,"进展正常","存在风险")。
区域二——目标汇总表(第 5-15 行):每行对应一个目标,数据来源于 Rollup:
=IFERROR(
VLOOKUP(A6, Rollup!$A:$C, 3, FALSE),
"-"
)
区域三——负责人热力图(第 17-30 行):负责人名称横排,目标纵排,单元格数值来源于 Rollup 的负责人切片。通过条件格式设置颜色:>=0.70 绿色,0.50-0.69 黄色,<0.50 红色。
在季度董事会材料准备阶段,此标签页是唯一需要共享的部分。锁定该标签页,通过保护范围隐藏公式栏,并在导出 PDF 前将文件命名为 [公司名称]_OKR_[季度]_BOARD.xlsx。
Pro Tip
添加一个「最后更新时间」单元格,引用 Config!B3(第 2 步 Apps Script 写入的时间戳)。董事会成员一定会问数据是什么时候的——现在你不必口头回答了。总结
至此,你已拥有一个五标签页的 OKR 模型:关键结果得分从实际数据自动计算,汇总为目标加权评级,并直接与假设标签页中的财务目标联动。季度结束、实际数据进来后,只需更新 KR_Detail 的 F 列,所有下游数据——Rollup、Dashboard、董事会材料——将全部自动更新。
大多数 OKR 模板的软肋不在于评分公式,而在于手动刷新数据的环节。当实际数据存储在 HubSpot、Salesforce 或数据仓库中,需要每月人工复制粘贴到 KR_Detail 时,模型就会产生偏差。ModelMonkey 可直接从已连接数据源将实际数据拉取至 KR_Detail,让数据刷新从繁琐仪式变成一句指令。查看 ModelMonkey 方案——同时支持 Google Sheets 和 Excel。
常见问题
如何为目标内的关键结果设置权重?
按战略重要性分配权重,而非平均分配。若一个目标有 3 项关键结果,其中一项是二元(完成/未完成)里程碑,其余两项是连续指标,则二元关键结果的权重通常应较低——例如 0.20——因为它无法反映部分完成的进展。常见起点:3 项关键结果的目标采用 0.40 / 0.40 / 0.20 的权重分配,再根据当期业务最需要的结果进行调整。
「进展正常」的评分阈值应如何设定?
Google 及 OKR 相关文献均以 0.7 作为标准进展阈值——其背后逻辑是:若持续达到 1.0,说明目标设定过低。实际操作中,大多数 FP&A 团队根据目标设定文化的激进程度将阈值设定在 0.65 至 0.75 之间。在 Config 中统一设置(`cfg_ontrack_threshold`)并始终如一地执行。季度中途为了让数据好看而调整阈值,相当于在财务结果出来后修改 EBITDA 定义。
如何处理无法用数字衡量的定性关键结果?
采用 1-5 评分制,并在公式中将其归一化至 0-1:`=(F2-1)/4`。5 分中打 3 分得 0.50,打 5 分得 1.0。在 KR_Description 单元格的注释中记录评分标准,避免季度间评分出现主观性差异。定性关键结果在目标总权重中的占比通常不应超过 20%–30%。
此 OKR 模板能否处理嵌套目标(OKR 中的 OKR)?
支持,需在 Rollup 标签页中增加一个层级。添加 "Parent_Objective_ID" 列,然后运行第二层 SUMPRODUCT,将子目标得分作为输入——处理方式与关键结果得分汇总至目标得分的逻辑相同。实际操作中,嵌套超过两层(公司 > 团队)会带来大量维护工作,其成本往往超过精细化带来的收益。对大多数团队而言,保持模型扁平化,并通过 Rollup 的负责人切片查看团队绩效,是更优的选择。
如何防止季度中途新增关键结果时公式失效?
在所有 SUMPRODUCT 和 SUMIFS 公式中使用开放式区间——用 `$A$2:$A$200` 而非 `$A$2:$A$15`。这样在 KR_Detail 中新增一行时,无需更新所有下游公式。同时在 KR_Detail 的 A 至 G 列设置数据验证规则,禁止出现空行,以防止填写不完整的行在 Rollup 计算中静默贡献零值。