Cómo construir una plantilla OKR en Google Sheets
Crea una plantilla OKR multi-pestaña en Google Sheets con puntaje ponderado de KRs, consolidación automática y vinculación al modelo financiero.
Construye una plantilla OKR de múltiples pestañas en Google Sheets que calcula puntajes ponderados de resultados clave, los consolida en calificaciones por objetivo y los vincula directamente a tu pestaña de supuestos financieros, de manera que cuando la meta de ARR de $18.5M cambia, el puntaje OKR se actualiza automáticamente. Esto no es un checklist de semáforos. Es un modelo estructurado: una pestaña Config para configurar el período y los pesos, una pestaña KR_Detail donde se ingresan los avances, una pestaña Rollup que agrega por responsable y objetivo, y una pestaña Dashboard para el paquete del directorio. Siete pasos para llegar ahí.
Lo que necesitarás
- Una cuenta de Google Sheets con acceso de edición al libro
- Familiaridad con referencias entre pestañas y rangos con nombre
- Un modelo de tres estados o una pestaña de supuestos en funcionamiento (opcional pero recomendado para el Paso 6)
- Al menos un trimestre de datos OKR para alimentar el modelo
- Conocimiento básico de Apps Script (el Paso 2 usa una función corta que puedes copiar y pegar)
Guía paso a paso
Diseña la estructura de pestañas de la plantilla OKR
Antes de tocar una celda, define la arquitectura de pestañas. Una plantilla OKR bien diseñada separa los datos de entrada de los cálculos y de las salidas, el mismo principio que hace auditable un modelo financiero.
- Config** - configuración del período, pesos, umbrales, lista de responsables
- KR_Detail** - una fila por resultado clave, todos los datos de avance se ingresan aquí
- Rollup** - puntajes de objetivos basados en SUMPRODUCT y resúmenes por responsable
- Dashboard** - vista lista para el directorio, alimentada completamente desde Rollup y Config
- Fin_Link** - puente opcional hacia la pestaña de Supuestos de tu modelo financiero
Pro Tip
Nombra tus pestañas sin espacios. "KR_Detail" se importa más limpio que "KR Detail" cuando estás escribiendo SUMIFS entre pestañas a las 11pm antes de una reunión de directorio.Construye la pestaña Config
Config es el panel de control maestro. Cada supuesto que puede cambiar, el período, el umbral de puntaje, el esquema de pesos, vive aquí y en ningún otro lugar.
Configura los siguientes rangos con nombre en Config (Fórmulas > Rangos con nombre):
cfg_period→ etiqueta del período OKR actual, por ejemplo, "Q3 2026" (celda B2)cfg_ontrack_threshold→ puntaje ponderado mínimo para mostrar verde, por ejemplo, 0.70 (celda B4)cfg_owners→ lista validada de nombres de responsables para los menús desplegables de KR_Detail (B8:B20)cfg_weight_sum_check→ fórmula de validación:=SUMIF(KR_Detail!E:E,"*",KR_Detail!F:F)para detectar pesos que no sumen 1.0 por objetivo
Pro Tip
Configura esta función como un disparador onOpen si extraes datos reales desde una fuente conectada (HubSpot, Salesforce). La marca de tiempo indica a los revisores cuándo se actualizaron los datos por última vez.Construye la pestaña KR_Detail (el motor de tu plantilla OKR)
Aquí vive el modelo. KR_Detail tiene una fila por resultado clave, con columnas para el objetivo al que pertenece, el responsable, la meta, el valor real, el peso dentro de su objetivo y el puntaje calculado.
Configura las columnas A a H:
| Columna | Encabezado | Notas |
|---|---|---|
| A | Objective_ID | Código corto, por ejemplo, "OBJ-1" |
| B | KR_ID | por ejemplo, "KR-1.2" |
| C | Owner | Menú desplegable alimentado desde cfg_owners |
| D | KR_Description | Texto libre |
| E | Target | Número o % |
| F | Actual | Número o % - única columna de entrada |
| G | Weight | Debe sumar 1.0 por Objective_ID |
| H | KR_Score | Fórmula: =IFERROR(MIN(F2/E2,1)*G2, 0) |
El tope MIN(...,1) es intencional. Un NRR de 112% frente a una meta del 100% obtiene el crédito completo por peso, pero no infla el puntaje del objetivo superior por encima de 1.0. Si tu equipo quiere premiar el rendimiento por encima de la meta, cambia el tope a 1.2 y documéntalo en Config.
- Bloquea la columna H (Formato > Proteger rango) para que nadie sobrescriba la fórmula con un número codificado directamente
- Agrega formato condicional a la columna F: rojo si
F < E*cfg_ontrack_threshold, verde siF >= E - Usa validación de datos en la columna C para restringir a cfg_owners: esto detecta errores tipográficos que rompen los SUMIFS de la pestaña Rollup
Pro Tip
Agrega una columna 'Confianza' (I) con un menú desplegable del 1 al 3. No afecta el puntaje, pero le da al directorio una señal prospectiva que ninguna fórmula puede capturar.Conecta la fórmula de puntaje ponderado
Con KR_Detail estructurado, la fórmula de puntaje en la columna H es directa. El puntaje a nivel de objetivo es donde se vuelve interesante: requiere un SUMPRODUCT sobre un rango filtrado.
En Rollup!C2 (suponiendo que A2 contiene el Objective_ID), la fórmula del puntaje de objetivo es:
=SUMPRODUCT(
(KR_Detail!$A$2:$A$200=A2)* // filtrar a este objetivo
KR_Detail!$H$2:$H$200 // sumar los puntajes KR ponderados
)
Esto devuelve un número entre 0 y 1. Un puntaje de 0.46 significa que el objetivo está al 46% de la meta, por debajo del umbral de 0.70 que configuraste en Config, así que aparece en rojo en el Dashboard.
Para un puntaje a nivel empresa, pondera los objetivos mismos. Agrega una columna Obj_Weight a Rollup y calcula:
=SUMPRODUCT(Rollup!$B$2:$B$10, Rollup!$C$2:$C$10)
Donde la columna B es el peso del objetivo y la columna C es el puntaje anterior. Si tienes 4 objetivos ponderados 30/30/20/20, un puntaje promedio de 0.8 en los dos objetivos del 30% y 0.5 en los del 20% te da un puntaje empresa de (0.8*0.3 + 0.8*0.3 + 0.5*0.2 + 0.5*0.2) = 0.68, un punto por debajo de estar en camino.
Pro Tip
Haz una verificación de suma de pesos en Config. SiSUMIF(Rollup!B:B,"*",Rollup!B:B) no devuelve 1.0, el puntaje empresa no tiene validez. Márcalo con una celda que se vuelva roja en caso de discrepancia.Construye los consolidados por responsable y período
La pestaña Rollup hace dos cosas: agrega por objetivo (Paso 4) y segmenta por responsable para las conversaciones de desempeño.
Resumen por responsable en Rollup (columnas E a G):
// Puntaje ponderado promedio de todos los KRs bajo un responsable dado
=IFERROR(
AVERAGEIF(KR_Detail!$C$2:$C$200, E2, KR_Detail!$H$2:$H$200),
0
)
Para comparación período a período, agrega una segunda pestaña KR_Detail llamada KR_Detail_Prior con la misma estructura. La fórmula de variación en 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
)
Una variación positiva significa que el objetivo mejoró trimestre a trimestre. Esto alimenta directamente la narrativa del directorio sin ningún cálculo manual.
- Protege toda la pestaña Rollup contra ediciones (todas son fórmulas, no hay entradas directas)
- Agrega una fila al final para el puntaje compuesto a nivel empresa
- Ordena los objetivos por puntaje ascendente para que los problemas sean visibles de inmediato
Vincula tu plantilla OKR a los supuestos financieros
Este es el paso que la mayoría de las plantillas OKR omiten, y por eso las revisiones de OKR y las revisiones financieras ocurren en reuniones separadas. Conéctalos.
Si tu modelo financiero tiene una pestaña de Supuestos con metas de ARR, umbrales de margen bruto y dotación de personal, referencialos directamente en KR_Detail en lugar de codificarlos:
// KR_Detail E2: meta de ARR para el resultado clave "Crecer ARR a $18.5M"
='Assumptions'!$B$12
// KR_Detail F2: ARR real desde la pestaña de reales
=SUMIFS('P&L'!$C:$C,'P&L'!$B:$B,">="&Assumptions!$B$3,'P&L'!$A:$A,"ARR")
Ahora cuando el CFO sube la meta de ARR de $18.5M a $21M en Supuestos, el puntaje OKR de ese KR se recalcula automáticamente. La meta de margen bruto del 72% y el real del 70.1% que mostraban verde el trimestre pasado ahora muestran amarillo si la meta subió.
Metas que vale la pena vincular directamente desde los supuestos del modelo financiero:
- Metas de ARR / NRR (del modelo de ingresos)
- Metas de margen bruto (del P&L)
- Metas de dotación de personal (del plan de fuerza laboral)
- Umbrales de quema de caja o EBITDA (del modelo de flujo de caja)
Pro Tip
Usa IFERROR en todas las referencias entre pestañas. Si alguien renombra la pestaña Assumptions, quieres que aparezca "#REF error - verificar nombre de pestaña Assumptions" de inmediato, no que devuelva cero silenciosamente y corrompa tus puntajes OKR.Construye la pestaña Dashboard de OKR
La pestaña Dashboard es salida de solo lectura. Cada celda se extrae de Rollup o Config. Nadie escribe aquí.
Estructúrala en tres zonas:
Zona 1 - Fila de encabezado (filas 1-3): Etiqueta del período desde =Config!B2, puntaje empresa desde el compuesto de Rollup, un indicador RAG usando =IF(Rollup!composite>=cfg_ontrack_threshold,"EN CAMINO","EN RIESGO").
Zona 2 - Tabla resumen de objetivos (filas 5-15): Una fila por objetivo, extraído desde Rollup:
=IFERROR(
VLOOKUP(A6, Rollup!$A:$C, 3, FALSE),
"-"
)
Zona 3 - Mapa de calor por responsable (filas 17-30): Nombres de responsables en columnas, objetivos en filas, valores de celda desde el segmento de responsable en Rollup. Color con formato condicional: >=0.70 verde, 0.50-0.69 amarillo, <0.50 rojo.
Para el paquete trimestral del directorio, esta es la única pestaña que se comparte. Blóquéala, oculta la barra de fórmulas para los miembros del directorio usando rangos protegidos y nombra el archivo [NombreEmpresa]_OKR_[Trimestre]_DIRECTORIO.xlsx antes de exportar a PDF.
Pro Tip
Agrega una celda de "Última actualización" que referencie Config!B3 (la marca de tiempo de Apps Script del Paso 2). Los miembros del directorio preguntarán de cuándo son los datos. Así no tienes que responderlo en voz alta.Conclusión
Ahora tienes un modelo OKR de 5 pestañas donde los puntajes de KR se calculan a partir de los reales, se consolidan en calificaciones ponderadas por objetivo y se vinculan directamente a las metas financieras que viven en tu pestaña de supuestos. Cuando cierre el Q3 y lleguen los reales, actualizas la columna F en KR_Detail y todos los números posteriores se actualizan: Rollup, Dashboard, el paquete del directorio.
El punto débil en la mayoría de las plantillas OKR no es la fórmula de puntaje, sino el ciclo manual de actualización de datos. Cuando los reales viven en HubSpot, Salesforce o un data warehouse y alguien tiene que copiar y pegarlos en KR_Detail cada mes, el modelo pierde vigencia. ModelMonkey puede extraer esos reales directamente en KR_Detail desde fuentes conectadas, de modo que la actualización es un prompt en lugar de un ritual. Elige un plan de ModelMonkey, funciona tanto en Google Sheets como en Excel.
Preguntas frecuentes
¿Cómo debo ponderar los resultados clave dentro de un objetivo?
Pondera por importancia estratégica, no por distribución igualitaria. Si un objetivo tiene 3 KRs y uno es un hito binario (lanzado/no lanzado) mientras los otros son métricas continuas, el KR binario probablemente merece un peso menor, digamos 0.20, ya que no puede capturar avance parcial. Un punto de partida común: 0.40 / 0.40 / 0.20 para un objetivo con 3 KRs, ajustado según qué resultados realmente necesita el negocio en el período.
¿Cuál es el umbral correcto para considerar que un objetivo está en camino?
Google y la literatura de OKR referencian 0.7 como el umbral estándar, con la idea de que alcanzar 1.0 consistentemente significa que las metas se fijaron demasiado bajas. En la práctica, la mayoría de los equipos de FP&A usan entre 0.65 y 0.75 dependiendo de qué tan agresiva sea la cultura de fijación de metas. Configúralo una vez en Config (`cfg_ontrack_threshold`) y aplícalo de manera consistente. Cambiar el umbral a mitad del trimestre para que los números se vean mejor es el equivalente en hojas de cálculo de ajustar la definición de EBITDA después del hecho.
¿Cómo manejo los KRs cualitativos que no se pueden medir con un número?
Asigna una escala del 1 al 5 y normalízala a 0-1 en la fórmula: `=(F2-1)/4`. Una calificación de 3 sobre 5 obtiene un puntaje de 0.50, una de 5 obtiene 1.0. Documenta la rúbrica de calificación en un comentario en la celda KR_Description para que el puntaje no sea subjetivo trimestre a trimestre. Los KRs cualitativos raramente deben superar el 20-30% del peso total de un objetivo.
¿Puede esta plantilla OKR manejar objetivos anidados (OKRs dentro de OKRs)?
Sí, con una capa adicional en la pestaña Rollup. Agrega una columna 'Parent_Objective_ID' y luego ejecuta un SUMPRODUCT de segundo nivel que trate los puntajes de objetivos hijo como entradas, de la misma manera en que los puntajes de KR alimentan los puntajes de objetivo. En la práctica, el anidamiento más allá de 2 niveles (empresa > equipo) genera una sobrecarga de mantenimiento que supera la precisión ganada. La mayoría de los equipos se benefician más de mantener el modelo plano y usar el segmento por responsable en Rollup para ver el desempeño por equipo.
¿Cómo evito la desviación de fórmulas cuando se agregan nuevos KRs a mitad del trimestre?
Usa rangos abiertos en cada fórmula SUMPRODUCT y SUMIFS: `$A$2:$A$200` en lugar de `$A$2:$A$15`. Agregar una fila en KR_Detail no requiere actualizar cada fórmula posterior. Configura una regla de validación de datos en KR_Detail que bloquee filas en blanco en las columnas A a G, para que una fila parcialmente completada no contribuya silenciosamente con un cero a los cálculos de Rollup.