Análisis de datos

Fórmulas en Hojas de Cálculo para Modelos Financieros

ModelMonkey4 de mayo de 20269 min de lectura

Esto importa a escala. Un modelo de valuación DCF estándar con 8 pestañas vinculadas (Supuestos, Estado de Resultados, Balance General, Flujo de Caja, FCFF, Retornos, Análisis de Sensibilidad, Cobertura) puede contener más de 50,000 celdas. A esa magnitud, dos o tres fórmulas mal elegidas producen un modelo que recalcula en 4 segundos por pulsación — y eso tu CFO lo nota.

Los 4 Enfoques a Primera Vista

PatrónSintaxis¿Se rompe al renombrar?Tipo de cálculoIdeal para
Referencia directa='Estado de Resultados'!C12No volátilLecturas de celda única, enlaces fijos
INDIRECT=INDIRECT("'"&NombrePestaña&"'!C12")NoVolátilSelección dinámica de pestañas, cambio de escenarios
Rango nombrado=Ingresos_2026NoNo volátilClaridad en auditorías, supuestos reutilizables
QUERY=QUERY('Estado de Resultados'!A:G,"SELECT C WHERE B='"&Supuestos!$B$3&"'")No volátilLecturas de múltiples filas, agregación filtrada

Volátil significa que recalcula en cada cambio de cualquier celda en todo el libro de trabajo — incluidos cambios que no tienen nada que ver con ella. Esa distinción es donde comienzan la mayoría de los problemas de rendimiento.

Fórmulas de Hoja de Cálculo con Referencias Directas: Rápidas, Frágiles

Una referencia directa entre pestañas (='Estado de Resultados'!C12) es no volátil y se resuelve casi de inmediato. Para traer una celda única — digamos, la línea de EBITDA a una pestaña de Retornos — es la opción correcta.

La fragilidad es real. Renombra "Estado de Resultados" a "P&L" y toda fórmula que apunte a 'Estado de Resultados'! se rompe con #REF!. En un modelo donde las pestañas se renombran durante los ajustes de último minuto en reportes trimestrales, ese es un riesgo genuino.

Más prácticamente, las referencias directas no se combinan bien con lógica dinámica. Si necesitas traer la misma fila desde distintas pestañas dependiendo de un cambio de escenario, terminas duplicando fórmulas. Ahí es donde INDIRECT se vuelve tentador — y donde los compromisos se vuelven más marcados.

INDIRECT: Poderosa, Costosa

INDIRECT te permite construir una referencia a partir de una cadena de texto, lo que significa que puedes controlar la selección de pestañas desde una celda de Supuestos:

=INDIRECT("'"&Supuestos!$B$2&"'!C"&MATCH("Ingresos",'Estado de Resultados'!$A:$A,0))

Esto sobrevive a renombramientos de pestañas (siempre que actualices la cadena en Supuestos) y hace que el cambio de escenarios sea limpio. Un dropdown determina de qué pestaña se alimenta todo el modelo.

El costo: la documentación de Google Sheets clasifica explícitamente INDIRECT como función volátil. Recalcula cada vez que cambia cualquier celda en el libro. En un modelo de 50,000 celdas, un puñado de fórmulas INDIRECT puede empujar el tiempo de recalculación por encima de los 4 segundos por pulsación. No es un problema teórico — es lo que lleva a un analista a abrir un segundo archivo y comenzar a copiar y pegar, que es peor.

Si vas a usar INDIRECT, confinalo. Crea una tabla de resolución que convierta nombres de pestaña en valores, y que cada fórmula descendente tire de esa tabla mediante referencia directa. El impacto de volatilidad queda contenido.

Rangos Nombrados: Subutilizados, Infravalorados

Los rangos nombrados son no volátiles, sobreviven a renombramientos de pestañas y hacen que los rastros de auditoría sean legibles. =WACC_Base es más claro en una fórmula de reporte de junta directiva que =Supuestos!$G$14, y cuando el CFO pregunta de dónde viene ese número, abres el Administrador de nombres en lugar de rastrear manualmente 8 pestañas.

El límite práctico es el mantenimiento. Un modelo de FP&A maduro puede acumular 150-200 rangos nombrados entre supuestos, drivers de FCFF y parámetros de escenarios. Google Sheets no ofrece una forma nativa de documentar qué representa cada nombre, y los nombres obsoletos — los que apuntan a celdas reasignadas — producen resultados incorrectos sin generar ningún error. Establece una convención de prefijos (Assum_, Driver_, TV_) y documenta cada uno en una pestaña de Entradas dedicada.

Para un DCF con un múltiplo de salida de EBITDA de 14.2x como ancla de valor terminal, el patrón de rango nombrado quedaría así:

// Rango nombrado: TV_MultEBITDA → Supuestos!$B$22
// Rango nombrado: EBITDA_Año5   → 'Estado de Resultados'!$G$45

=TV_MultEBITDA * EBITDA_Año5

Eso sigue siendo legible seis meses después. =Supuestos!$B$22 * 'Estado de Resultados'!$G$45 no lo es.

QUERY: Para Lecturas de Múltiples Filas Con Condiciones

QUERY resulta útil cuando necesitas agregación filtrada dentro de una pestaña — margen de contribución por SKU, headcount por área, ingresos por región. Una referencia directa no puede hacer eso sin SUMIFS, que funciona pero se vuelve incómodo cuando hay múltiples condiciones.

=QUERY('Estado de Resultados'!A:G,
  "SELECT B, SUM(C) WHERE D='" & Supuestos!$B$3 & "' GROUP BY B",
  1)

Esto trae margen de contribución a nivel de departamento para el período indicado en Supuestos, con encabezado incluido. La versión equivalente en SUMIFS requeriría 3 o 4 fórmulas y una columna auxiliar.

QUERY es no volátil y entre 2 y 4 veces más rápido que un conjunto equivalente de SUMIFS para rangos de datos grandes (según pruebas de mayo de 2026 en conjuntos superiores a 5,000 filas). El compromiso: la sintaxis de QUERY es similar a SQL pero no es SQL, y los mensajes de error cuando falla son poco informativos. Constrúyelo de forma aislada, valida el resultado y luego intégralo al modelo.

Ten en cuenta que QUERY no funciona entre archivos distintos — para eso necesitas IMPORTRANGE, que según la documentación de Google se actualiza como máximo cada 30 minutos y agrega su propia latencia. Durante una presentación en vivo ante inversionistas o en un cierre de mes, ese retraso puede causarte problemas.

El Impuesto de Volatilidad en Fórmulas de Hoja de Cálculo: Por Qué Tu Modelo Es Lento

El problema de rendimiento en la mayoría de los modelos grandes no es una sola fórmula mal escrita — es una combinación. Un INDIRECT volátil que alimenta 20 SUMIFS descendentes, cada uno referenciando una columna completa, en un libro de 50,000 celdas que recalcula en cada pulsación. El impuesto se acumula.

La solución es tediosa pero efectiva: audita tus funciones volátiles. Google Sheets no tiene un rastreador integrado, así que la búsqueda es manual. Los sospechosos habituales son INDIRECT, OFFSET, NOW, TODAY y RAND. Reemplázalos donde puedas:

  • OFFSET(A1,n,0)INDEX(A:A,n+1) (INDEX es no volátil)
  • INDIRECT("'Estado de Resultados'!A"&fila) → resuelve la búsqueda una sola vez en una celda auxiliar y referencia directamente desde ahí
  • Límites de rango dinámico → calcula el límite en una celda de rango nombrado y referencia con A$1:A & CeldaLímite

Este tipo de refactorización típicamente reduce el tiempo de recalculación en un 60-80% en modelos que han acumulado volatilidad a lo largo de varios trimestres. El modelo de 4 segundos por pulsación se convierte en uno de medio segundo. Vale la pena dedicarle una tarde.

Dónde Encaja la IA en Esto

La parte tediosa del trabajo con fórmulas entre pestañas no es saber qué patrón usar — es la ejecución: conectar SUMIFS a través de 8 pestañas con referencias de columna consistentes, localizar funciones volátiles, reformatear la salida de QUERY para que encaje con la estructura de un dashboard de KPIs o un reporte para junta directiva.

ModelMonkey atiende esa capa. Describes la lectura en lenguaje natural ("suma ingresos desde Estado de Resultados donde el período coincide con Supuestos B3, desglosado por región"), y escribe la fórmula apuntando a la pestaña y columna correctas. Es un asistente de IA integrado en la barra lateral de Google Sheets — más rápido que construir a mano, y no va a colocar INDIRECT donde una referencia directa bastaría. A partir de mayo de 2026, funciona tanto en Google Sheets como en Excel, lo que importa cuando tu banco o contraparte te envía un .xlsx y espera un modelo de retornos formateado de vuelta el viernes.

Preguntas Frecuentes

¿Cuándo debo preferir QUERY sobre SUMIFS? Cuando tienes más de dos condiciones de filtrado o necesitas agrupar por una dimensión (región, departamento, SKU). Para una condición simple, SUMIFS es suficiente y más fácil de auditar. Para conjuntos de datos superiores a 5,000 filas con múltiples condiciones, QUERY es notablemente más rápido y el resultado es más compacto.

¿Los rangos nombrados se sincronizan entre pestañas automáticamente? Sí. Un rango nombrado que apunta a 'Estado de Resultados'!$G$45 se actualiza en tiempo real cuando cambia esa celda, igual que cualquier referencia directa. La diferencia es que sobrevive a renombramientos de pestaña y es legible en auditorías.

¿Qué hago si necesito cambiar de pestaña según un escenario pero no quiero usar INDIRECT? La alternativa más limpia es una tabla de resolución: una pestaña auxiliar con una columna de nombres de escenario y columnas adicionales que traen los valores de cada pestaña con referencias directas. Tu fórmula principal busca en esa tabla con INDEX/MATCH. Eliminas la volatilidad de INDIRECT y conservas la flexibilidad de escenarios.

¿Funciona QUERY con datos de otras hojas de cálculo (archivos distintos)? No directamente. Para cruzar archivos necesitas IMPORTRANGE primero y luego envuelves QUERY alrededor del rango importado. La limitación es que IMPORTRANGE tiene un retraso de actualización de hasta 30 minutos, lo que lo hace inadecuado para modelos en uso durante presentaciones o cierres de mes.

¿Cuántos rangos nombrados son demasiados? No hay un límite técnico en Google Sheets, pero la experiencia práctica indica que más de 200 rangos nombrados sin documentación estructurada se vuelven inmanejables. La señal de alerta real no es el número — es cuando empiezas a crear rangos duplicados porque ya no recuerdas si ya existe uno para esa celda.


En resumen: referencias directas para lecturas simples de celda única donde los nombres de pestaña son estables; rangos nombrados para todo lo que requiera trazabilidad en auditoría o reutilización; QUERY para agregación filtrada de múltiples filas; INDIRECT solo cuando la selección dinámica de pestañas sea genuinamente necesaria, y siempre confinada. Las funciones volátiles se acumulan. Audítalas antes de que el modelo llegue a las 50,000 celdas, no después.