Crea una Plantilla de P&L en Google Sheets: Guía FP&A
Plantilla de P&L de 8 pestañas en Google Sheets: SUMIFS cruzados, puente EBITDA, tres estados vinculados y formato para directivos.
Esta guía te lleva paso a paso por la construcción de una plantilla de P&L de 8 pestañas en Google Sheets que sobrevive la revisión del CFO: con SUMIFS cruzados que extraen datos reales, un puente EBITDA dinámico, vínculos entre los tres estados financieros que cuadran, y un resumen para directivos formateado para que cualquier persona —sin ser analista— lo asimile en 90 segundos.
Lo que necesitarás
- Acceso a Google Sheets con permisos de edición en un archivo de trabajo
- Una fuente de datos reales (exportación de ERP, CSV de sistema contable o datos de MRR de Stripe) con al menos las columnas: fecha, nombre de cuenta, categoría de costo e importe
- Familiaridad con SUMIFS, EDATE y referencias absolutas/relativas
- Un catálogo de cuentas o esquema de categorización de costos que controles
- Rangos con nombre o encabezados de columna consistentes en tus datos de origen
Guía paso a paso
Planifica la arquitectura de pestañas de tu plantilla de P&L
La estructura de pestañas que elijas en los primeros 10 minutos determina si este modelo será mantenible en 6 meses o una deuda técnica que entregas con disculpas. Cada pestaña debe tener exactamente una función: entradas, datos de origen, cálculo o resultado, y el flujo de datos debe ir en una sola dirección.
Una distribución funcional de 8 pestañas para una plantilla FP&A de P&L:
| Pestaña | Función |
|---|---|
| Assumptions | Todos los inputs fijos: tasas de crecimiento, plan de headcount, objetivos de margen |
| Revenue | Ingresos mensuales/trimestrales por línea de producto o segmento |
| COGS | Costos directos mapeados a líneas de ingreso |
| OpEx | Gastos operativos de headcount y no headcount |
| P&L | Estado de resultados resumen que extrae de las cuatro pestañas anteriores |
| Actuals | Pegado de solo lectura de tu exportación de ERP o sistema contable |
| Variance | Real vs. plan con deltas en % y $ |
| Board Summary | Vista QoQ e YTD formateada para no analistas |
- Trata la pestaña Actuals como estrictamente de solo lectura: pegas en ella, nunca la vinculas con fórmulas desde una fuente; todo lo que esté aguas abajo la lee a través de SUMIFS
- Asigna colores a las pestañas por categoría: azul para inputs, gris para datos de origen, verde para resultados; tu CFO te lo agradecerá al navegar el board pack
- Nombra las pestañas sin espacios (
P_and_LoPL): los nombres con espacios requieren comillas simples en cada fórmula entre hojas, y eso se vuelve tedioso - Construye de izquierda a derecha: Assumptions → Revenue → COGS → OpEx → P&L → Actuals → Variance → Board Summary refleja el flujo de datos
Pro Tip
Bloquea la pestaña Actuals de inmediato a través de Datos → Proteger hojas y rangos. Los modelos compartidos con pestañas de origen desbloqueadas siempre terminan con alguien "corrigiendo" un número directamente en los datos en lugar de hacerlo en la exportación de actuals. Encontrarás el error tres meses después durante una auditoría.Construye la pestaña Assumptions: la fuente única de verdad de tu plantilla de P&L
Todos los inputs fijos del modelo viven en esta pestaña. Sin excepciones. Incrustar una tasa de crecimiento dentro de una fórmula en la pestaña Revenue es deuda técnica que aparecerá en el peor momento posible, justo durante la preparación de un board meeting. La pestaña Assumptions es donde cambias una celda y observas cómo se actualiza todo el modelo.
Organízala con secciones etiquetadas separadas por filas en blanco y con rangos con nombre en cada celda clave.
- Supuestos de ingresos: objetivo de ARR para FY2026 ($18.4M), tasa de crecimiento por línea de producto (22% SaaS, 8% servicios profesionales), churn bruto mensual (4.2%)
- Plan de headcount: headcount actual por departamento, incorporaciones planeadas por trimestre, costo totalmente cargado por persona ($127K promedio ponderado entre todos los niveles)
- Objetivos de margen: margen bruto objetivo (61.5%), margen EBITDA objetivo (18.0%), D&A como % de ingresos (2.3%)
- Anclas de período del modelo: nombra
$B$3comomodel_starty$B$4comomodel_end; todos los encabezados de columna en cada pestaña se derivan de estas dos celdas - Impuestos y estructura de capital: tasa impositiva efectiva (27%), gasto por intereses ($180K anualizados sobre deuda existente)
Pro Tip
Agrega un selector de "Escenario" en Assumptions: un desplegable (Datos → Validación de datos → Lista) con los valores Base / Upside / Downside. Luego construye tus supuestos clave como=IF(Assumptions!$B$1="Upside", 0.28, IF(Assumptions!$B$1="Downside", 0.14, 0.22)). Un cambio de celda ejecuta tres escenarios sin duplicar el modelo.Estructura la pestaña Revenue
Los ingresos deben desglosarse por línea de producto o segmento, con columnas mensuales derivadas de las anclas de período en Assumptions. A mayo de 2026, la estructura más común para un negocio SaaS es MRR → ARR → ingresos reconocidos, con filas separadas para nuevo negocio, expansión y contracción/churn.
La fórmula que extrae datos reales a una fila de ingresos reconocidos:
=SUMIFS(
Actuals!$D:$D,
Actuals!$B:$B, ">="&Assumptions!$B$3,
Actuals!$B:$B, "<"&EDATE(Assumptions!$B$3,1),
Actuals!$C:$C, "Revenue - SaaS"
)
- Usa
EDATEpara los límites de fin de mes en lugar de fechas codificadas: cuando avances el modelo actualizandomodel_start, todos los encabezados de columna y los límites de fecha en SUMIFS se actualizarán automáticamente - Construye cada línea de ingreso con 3 filas: Plan, Actual, Varianza (
=B4-B3): establece la convención de signos desde ahora: varianza positiva significa que el real superó el plan en ingresos - Agrega una fila de verificación al final de la pestaña Revenue:
=SUMIFS(Actuals!$D:$D, Actuals!$C:$C, "Revenue*")para el período completo, comparada contra la línea de ingresos totales en P&L: si no coinciden, algo en el mapeo de nombres de cuenta está mal - Deriva los encabezados de columna desde Assumptions:
=TEXT(EDATE(Assumptions!$B$3, COLUMN()-3), "MMM-YY")en la fila 3 significa que avanzar al Q3 requiere solo un cambio de celda
Pro Tip
Si tu catálogo de cuentas tiene nombres inconsistentes ("Revenue-SaaS" vs "Revenue - SaaS" vs "Rev SaaS"), corrígelos con una columna auxiliar en la pestaña Actuals usando=TRIM(SUBSTITUTE(C2,"-"," - ")) antes de que tus SUMIFS los referencien. No intentes manejar la variación de nombres dentro de la fórmula: se te escaparán casos.Construye el COGS para aterrizar tu margen bruto
El COGS es donde los modelos de P&L con múltiples productos se vuelven imprecisos. Los costos se agrupan en una sola línea y de repente no puedes desagregar qué línea de producto está arrastrando el margen bruto combinado del 61.5% hacia el 58%. Construye el COGS con la misma granularidad que Revenue: una fila por categoría de costo, mapeada a la línea de producto que soporta.
Para un negocio SaaS con ingresos de servicios profesionales, una estructura de COGS limpia:
- Infraestructura en la nube (COGS - Hosting): costo variable directo, se mapea únicamente a los ingresos SaaS
- Headcount de Customer Success (COGS - CS): asigna el 70% a SaaS y el 30% a servicios, con base en datos de seguimiento de tiempo o una distribución fija en Assumptions
- Entrega de servicios profesionales (COGS - Services): se mapea íntegramente a los ingresos de servicios
- Software de terceros con precio por asiento (COGS - Tools): distribuye según el conteo de usuarios activos, tomado de Assumptions
Pro Tip
Agrega una tabla de margen bruto por segmento en una sección aparte de la pestaña COGS. Son tres fórmulas SUMIFS y una división, y te indica si una compresión de margen de 200 puntos básicos es un problema de costos de infraestructura SaaS o de entrega de servicios, antes de que tu CFO lo pregunte.Conecta el OpEx entre pestañas en tu plantilla de P&L
El OpEx es la parte más densa del modelo. Según los datos de benchmarking de FP&A de APQC, los costos de personal representan entre el 60% y el 70% del total de gastos operativos en empresas de software y tecnología, lo que significa que el cronograma de headcount impulsa la mayor parte de tu pestaña OpEx y los errores ahí se propagan directamente al EBITDA.
Construye primero un cronograma de headcount: una cuadrícula de departamento × trimestre que muestre el headcount actual y las incorporaciones planeadas. La fórmula que extrae el costo de headcount al resumen de OpEx:
=SUMIFS(
'OpEx'!$E:$E,
'OpEx'!$B:$B, "Engineering",
'OpEx'!$C:$C, "Headcount"
)
- Con un costo totalmente cargado de $127K y 45 empleados actuales, eso equivale a $5.7M de OpEx de headcount anualizado antes de cualquier contratación de crecimiento: modela las nuevas incorporaciones como filas separadas, sin combinarlas con las filas de headcount existente, para que puedas sensibilizar el ritmo de contratación de forma independiente
- Agrega una celda
hire_pace_multiplieren Assumptions (valor predeterminado 1.0): cada fila de incorporación planeada en OpEx se multiplica por ella, de modo que reducirla a 0.75 modela una desaceleración de contrataciones sin tocar filas individuales - El OpEx sin headcount (herramientas SaaS, gastos de viaje, oficina, marketing) extrae datos de Actuals mediante SUMIFS con el mismo patrón de rango de fechas usado en Revenue
- Construye una verificación de OpEx total:
=SUM('OpEx'!C2:C200)en la pestaña P&L debe coincidir con la suma de todos los SUMIFS de OpEx desde Actuals para el mismo período, una vez que hayas superado la fase solo de plan
Pro Tip
Para la sensibilidad de runway —una solicitud frecuente del directorio— conecta una celda de "meses de runway" en la pestaña Board Summary:=('Balance Sheet'!cash_balance) / ('P&L'!monthly_burn). Cuando cambie el multiplicador de ritmo de contratación, el cálculo de runway se actualiza automáticamente.Calcula el EBITDA y construye el puente
El EBITDA en la pestaña P&L es una resta directa de COGS y OpEx desde Revenue, seguida de un ajuste por D&A tomado de Assumptions. El puente de EBITDA —que muestra la evolución período a período— puede ubicarse en una sección dedicada de la pestaña P&L o en un bloque de rangos con nombre que alimenta el Board Summary.
El cálculo del EBITDA extrayendo datos entre pestañas:
='Revenue'!C3 - 'COGS'!C25 - 'OpEx'!C42 + (Assumptions!rev_pct_da * 'Revenue'!C3)
Donde C25 es el COGS total, C42 es el OpEx total y rev_pct_da es tu rango con nombre de D&A como % de ingresos (2.3% en este modelo).
- Construye el puente de EBITDA como una columna de filas basadas en fórmulas: EBITDA del período anterior, más delta de ingresos, menos delta de COGS, menos delta de OpEx, igual a EBITDA del período actual; cada línea es una fórmula, no una varianza codificada
- Con un múltiplo de 14.2x sobre un EBITDA de $2.4M, el valor empresarial implícito es de $34.1M: incluye esa matemática de valoración en una sección con nombre en la pestaña P&L para que se actualice cuando cambie el EBITDA
- Agrega una fila de margen % para cada nivel: margen bruto %, margen EBITDA % y margen neto %: son lo primero que lee el directorio
- Verificación cruzada: el EBITDA de la pestaña P&L debe conciliar con el flujo de caja operativo en el estado de flujos de efectivo antes de los cambios en capital de trabajo; si no concilia, algo está mal categorizado entre operativo y no operativo
Pro Tip
Agrega una columna de "período anterior" en la pestaña P&L que extraiga el período inmediatamente anterior usandoOFFSET. El puente de EBITDA puede derivarse de esa columna automáticamente al avanzar el modelo, sin necesidad de seleccionar el período manualmente.Vincula el modelo de tres estados financieros
El P&L alimenta las utilidades retenidas en el Balance General y provee la línea de ingreso neto inicial para el Estado de Flujos de Efectivo. Ambos vínculos deben estar basados en fórmulas: codificar cualquiera de ellos rompe la conciliación de los tres estados en cuanto lleguen los datos reales.
Bajo FASB ASC 225-10 (Estado de Resultados — General), el estado de resultados debe conciliar con los cambios en el patrimonio, lo que significa que el roll de utilidades retenidas en el Balance General debe cuadrar exactamente con la línea de ingreso neto del P&L.
El vínculo de utilidades retenidas:
='Balance Sheet'!$C$42 + 'P&L'!C58
Donde C58 es el ingreso neto del período y $C$42 es las utilidades retenidas del período anterior. El punto de partida del Estado de Flujos de Efectivo:
='P&L'!C58
- Ajusta las partidas no monetarias (D&A de Assumptions, compensación basada en acciones de OpEx) en la sección de actividades operativas; ambas deben ser referencias de fórmulas, nunca valores codificados
- Los cambios en capital de trabajo se toman de los deltas del Balance General:
=('Balance Sheet'!C22 - 'Balance Sheet'!B22) * -1para cuentas por cobrar (un incremento en CxC es un uso de caja) - Construye una fila de verificación de cuadre al final del Balance General:
='Balance Sheet'!Total_Assets - 'Balance Sheet'!Total_Liabilities - 'Balance Sheet'!Total_Equity: aplica formato condicional para que esta celda se ponga roja si se desvía de cero en más de $1 - El puente de EBITDA a flujo de caja libre debe cerrar: EBITDA → menos ajuste de D&A neto de impuestos → menos capex → igual a FCF sin apalancamiento, que debe coincidir con lo que produce tu Estado de Flujos de Efectivo
Pro Tip
Si el Balance General no cuadra después de vincular los tres estados, aísla el problema verificando primero las utilidades retenidas (el punto de ruptura más común), luego el capital de trabajo (el segundo más común) y después el cronograma de deuda. No empieces desde cero: siempre es una referencia rota.Da formato a tu plantilla de P&L para la presentación al directorio
Una plantilla de P&L que solo tú puedes leer no es un entregable. La pestaña Board Summary traduce los resultados del modelo en algo que un miembro del directorio puede leer en 90 segundos: sin barras de fórmulas, sin referencias brutas, sin montos de 8 dígitos en formato de número predeterminado.
Reglas clave de formato para el Board Summary:
- Muestra los valores en dólares en miles con un decimal usando el formato de número personalizado:
$#,##0.0"K": aplícalo a través de Formato → Número → Formato de número personalizado; $4,218,312 se convierte en $4,218.3K - Las columnas de varianza usan formato condicional: verde (RGB 87, 187, 138) para favorable, rojo (RGB 255, 87, 87) para desfavorable: pero establece la convención de signos primero: favorable para ingresos significa real > plan, favorable para OpEx significa real < plan; son opuestos
- Deriva los encabezados de columna de período desde Assumptions:
=TEXT(EDATE(Assumptions!$B$3, COLUMN()-3), "MMM-YY")para que avanzar el modelo no requiera reescribir 12 encabezados - Congela las filas 1 a 3 (nombre de la empresa, encabezados de período, separador) y congela la columna A (etiquetas de partidas) a través de Ver → Inmovilizar; el modelo debe poder navegarse sin desbloquear nada
- Las tasas de crecimiento QoQ se calculan en la misma celda:
=(C3-B3)/B3formateadas como porcentaje con un decimal: agrega gráficos de minigráficos en la columna B usando=SPARKLINE('P&L'!B3:M3)para mostrar la dirección de la tendencia de un vistazo
Pro Tip
Oculta las pestañas de fórmulas (Revenue, COGS, OpEx, Variance) del enlace compartido con el directorio usando Formato → Ocultar hoja, y luego comparte únicamente las pestañas Board Summary y P&L como solo lectura. El modelo permanece intacto; la audiencia ve lo que les es relevante.Conclusión
Una plantilla de P&L construida de esta manera —supuestos aislados en una pestaña, datos reales que ingresan a través de SUMIFS, tres estados vinculados y cuadrados— puede ser mantenida por alguien que no la construyó. Eso importa más de lo que parece: la próxima persona que toque este modelo podrías ser tú, a medianoche antes de un board meeting, tres meses después, sin recordar dónde codificaste esa tasa impositiva.
El punto más débil de la mayoría de las plantillas de P&L no son las fórmulas. Es la extracción de datos reales. Las exportaciones manuales de CSV se pegan incorrectamente, los órdenes de columnas cambian, los nombres de cuentas se desvían. Ahí es donde se va el tiempo y donde se cuelan los errores. ModelMonkey resuelve exactamente ese problema: vive en la barra lateral de Google Sheets y extrae los datos reales directamente desde HubSpot, Stripe o tu sistema contable hacia la pestaña Actuals de forma programada, sin necesidad de un CSV.
Elige un plan de ModelMonkey — funciona tanto en Google Sheets como en Excel.
Preguntas frecuentes
¿Cuántas pestañas debe tener una plantilla de P&L en Google Sheets?
Una plantilla de P&L funcional para FP&A necesita al menos 6 pestañas: Assumptions, Revenue, COGS, OpEx, resumen de P&L y una pestaña de datos reales (Actuals). Agregar una pestaña de Variance y un Board Summary te lleva a 8, lo que cubre el reporte mensual y la entrega del board pack sin que el modelo se vuelva inmanejable. A partir de 10 pestañas, la carga de navegación empieza a costar más que el beneficio organizacional.
¿Cómo vinculo una plantilla de P&L con un Balance General en Google Sheets?
El vínculo principal son las utilidades retenidas: `='Balance Sheet'!$C$42 + 'P&L'!C58`, donde C58 es el ingreso neto del período. Bajo FASB ASC 225-10, el estado de resultados debe conciliar con los cambios en el patrimonio, lo que significa que este vínculo debe ser una fórmula, no un número codificado. Construye una fila de verificación de cuadre (Activo Total − Pasivo Total − Patrimonio Total) con formato condicional que se active en rojo ante cualquier desviación de cero.
¿Qué patrón de SUMIFS debo usar para extraer datos reales a una plantilla de P&L?
Usa criterios de rango de fechas anclados a tu pestaña Assumptions: `=SUMIFS(Actuals!$D:$D, Actuals!$B:$B, ">="&Assumptions!$B$3, Actuals!$B:$B, "<"&EDATE(Assumptions!$B$3,1), Actuals!$C:$C, "Revenue - SaaS")`. El `EDATE` gestiona los límites de fin de mes sin fechas codificadas, y referenciar Assumptions para el inicio del período significa que avanzar el modelo —cambiando una sola celda— actualiza cada fórmula automáticamente.
¿Cómo deben fluir los costos de headcount a través de una plantilla de P&L?
Construye un cronograma de headcount en la pestaña OpEx: empleados actuales por departamento × costo totalmente cargado por persona, con las incorporaciones planeadas como filas separadas. Según los datos de benchmarking de APQC, los costos de personal representan entre el 60% y el 70% del OpEx total en empresas de software, lo que los convierte en tu partida más sensible. Agrega una celda `hire_pace_multiplier` en Assumptions (valor predeterminado 1.0) para que puedas sensibilizar el ritmo de contratación en todos los departamentos con un solo cambio de input, en lugar de editar filas individuales.
¿Qué formato de número debo usar en una plantilla de P&L lista para el directorio?
Usa `$#,##0.0"K"` para valores en dólares: muestra $4,218,312 como $4,218.3K, que es legible de un vistazo y no desbordará una columna. Para las líneas de margen, usa formato de porcentaje con un decimal. Deriva los encabezados de columna desde Assumptions con `=TEXT(EDATE(Assumptions!$B$3, COLUMN()-3), "MMM-YY")` para que avanzar el modelo no requiera actualizar manualmente 12 encabezados en 3 pestañas.