Para un modelo de tres estados o un DCF con pestañas vinculadas para presentar ante un sindicato bancario, esa confiabilidad no es un lujo. Es la diferencia entre un modelo que se audita limpiamente y uno que falla en la diapositiva 3 del board pack.
Qué hace ARRAYFORMULA en realidad
Una fórmula estándar en B2 solo evalúa B2. Copiarla hasta B2:B5001 te deja con 5,000 celdas individuales, cada una como fuente potencial de desvío si alguien edita la fila 847 sin darse cuenta.
ARRAYFORMULA envuelve esa fórmula y la propaga por todo un rango. El resultado: una sola fórmula, una sola fuente de verdad, una sola celda que actualizar.
// Enfoque estándar: 5,000 celdas, 5,000 puntos de falla
B2: =IF(A2="Ingresos", C2*Supuestos!$B$4, 0)
... copiada hasta B5001
// ARRAYFORMULA: una celda, columna completa
B2: =ARRAYFORMULA(IF(A2:A="Ingresos", C2:C*Supuestos!$B$4, 0))
El rango abierto A2:A hace que la fórmula cubra automáticamente cualquier fila nueva que se agregue debajo. Esto es crítico cuando tu fuente de datos es un feed en vivo del ERP o una exportación mensual que crece con cada cierre contable.
Según la documentación oficial de Google Sheets para ARRAYFORMULA, la función "permite mostrar los valores devueltos por una fórmula de array en varias filas o columnas, y también permite usar funciones que no son de array con arrays." Esa última parte es la clave: transforma funciones de celda única en motores de columna completa.
ARRAYFORMULA entre pestañas en modelos de Google Sheets con múltiples tabs
Donde ARRAYFORMULA realmente gana su lugar en modelos serios es en los lookups entre pestañas. Necesitas el margen de contribución por SKU en la pestaña de Análisis de Devoluciones, extrayendo datos del P&L y de la pestaña de Supuestos al mismo tiempo.
// Análisis!D2 - utilidad bruta por línea de producto, columna completa en una sola fórmula
=ARRAYFORMULA(
SUMIFS('P&L'!E:E, 'P&L'!B:B, 'Análisis'!A2:A, 'P&L'!C:C, ">=" & Supuestos!$B$3)
- SUMIFS('P&L'!F:F, 'P&L'!B:B, 'Análisis'!A2:A, 'P&L'!C:C, ">=" & Supuestos!$B$3)
)
Esta fórmula toma ingresos y costo de ventas desde la pestaña de P&L, filtra por línea de producto y fecha base desde Supuestos, y devuelve la columna completa de utilidades brutas en una sola expresión. Si tu pestaña de P&L incorpora 12 SKUs nuevos el próximo trimestre, la fórmula los recoge automáticamente.
Para el análisis de sensibilidad de runway según el ritmo de contratación, el mismo patrón aplica:
// Headcount!G2 - quema acumulada en cada escenario de dotación
=ARRAYFORMULA(
MMULT(
Escenarios!$C$2:$E$13, // 12 meses x 3 escenarios
TRANSPOSE(Supuestos!$D$5:$D$7) // costo cargado por rol
) + SUMIF('Costos Fijos'!A:A, "Overhead", 'Costos Fijos'!C:C)
)
Qué funciona y qué no
No todas las funciones responden a ARRAYFORMULA. Esta es la tabla que me habría ahorrado dos horas la primera vez que intenté envolver un VLOOKUP en ella.
| Función | Compatible con ARRAYFORMULA | Notas |
|---|---|---|
IF | ✅ Sí | Caso de uso principal |
SUMIFS | ✅ Sí | Devuelve un array de sumas |
IFERROR | ✅ Sí | Envuelve todo el rango |
TEXT, VALUE, LEN | ✅ Sí | Funciones estándar de texto y matemáticas |
VLOOKUP | ⚠️ Parcial | Funciona pero suele perder las últimas filas; usa INDEX/MATCH en su lugar |
INDEX/MATCH | ✅ Sí | Preferido para lookups en arrays |
UNIQUE | ❌ No | Ya opera en contexto de array; anidarla genera errores |
FILTER | ❌ No | Igual, es una función de array nativa |
SORT | ❌ No | Igual |
QUERY | ❌ No | No compatible |
Este comportamiento está documentado en las Google Workspace Release Notes, que desde el rediseño del motor de cálculo de Sheets en 2022 distinguen explícitamente entre funciones escalares (compatibles con ARRAYFORMULA) y funciones que ya devuelven arrays (incompatibles). A julio de 2026, esa distinción sigue vigente sin cambios.
Rendimiento de ARRAYFORMULA a escala en Google Sheets
Google Sheets tiene un límite de 10 millones de celdas. Una pestaña de detalle del GL con 50,000 filas y 20 columnas clasificadas con ARRAYFORMULA está bien dentro de ese límite, pero el tiempo de recálculo es la restricción real.
En la práctica, un ARRAYFORMULA bien estructurado sobre 50,000 filas con 2 o 3 referencias entre pestañas tarda entre 3 y 8 segundos en un recálculo completo de la hoja. Las 50,000 fórmulas individuales equivalentes suelen tardar entre 45 y 90 segundos, y en ocasiones colapsan la pestaña por completo.
Las ganancias de rendimiento vienen de algunas decisiones estructurales concretas:
Usa rangos de columna abiertos con moderación. A2:A es cómodo pero obliga a Sheets a evaluar la columna entera en cada recálculo. Si tu conjunto de datos tiene un límite definido (por ejemplo, 5,000 filas en una pestaña de actuals trimestrales) usa A2:A5001 de forma explícita.
Evita anidar ARRAYFORMULA dentro de ARRAYFORMULA. Un solo wrapper externo es suficiente. Anidarlos es redundante y frena la evaluación.
Mantén la fórmula en una sola celda, no envuelta alrededor de una columna auxiliar. Las columnas auxiliares que alimentan otro ARRAYFORMULA están bien. Pero usar ARRAYFORMULA para producir una columna y luego envolver ese resultado en un segundo ARRAYFORMULA en otra columna duplica el costo de recálculo sin ningún beneficio.
El patrón que arruina los modelos
El error de $2.3M en el Q3 de un board pack que he visto en persona venía de esto: un SUMIFS sin ARRAYFORMULA en una pestaña de resumen, buscando valores en una pestaña de detalle donde alguien había sobreescrito manualmente 3 filas en medio de la columna. El rango de la fórmula se detuvo justo encima de la entrada manual. Nadie lo detectó hasta que un cálculo de covenant bancario arrojó el número incorrecto.
ARRAYFORMULA no previene por completo las ediciones manuales, pero hace que la ruptura sea evidente. Cuando una fórmula de una sola celda gobierna toda la columna, una entrada manual en esa columna produce un error de conflicto (#REF! o la sobreescritura rompe silenciosamente el patrón de la fórmula). Eso es visible. El desvío silencioso de 5,000 fórmulas copiadas y pegadas no lo es.
Cuándo usar ARRAYFORMULA vs. QUERY vs. funciones de array nativas
Depende de qué estés haciendo con los datos.
ARRAYFORMULA es la herramienta correcta cuando necesitas aplicar una fórmula de cálculo o clasificación a cada fila de una columna: categorización de ingresos, costo cargado por fila de headcount, banderas de variación período a período.
QUERY (exclusivo de Google Sheets) es mejor para agregaciones y filtros donde de otra forma escribirías una pila de SUMIFS/COUNTIFS anidados. Se lee como SQL y maneja el agrupamiento de forma limpia, pero es más lento en rangos grandes y no es compatible con ARRAYFORMULA.
Las funciones de array nativas (FILTER, UNIQUE, SORT, SEQUENCE) son de propósito específico y más rápidas para sus tareas concretas. Si necesitas extraer una lista única de centros de costo de un GL con 20,000 filas, UNIQUE('Detalle GL'!B2:B) supera cualquier construcción que armes con ARRAYFORMULA.
La división práctica para un modelo de tres estados: ARRAYFORMULA gobierna las columnas de clasificación y cálculo a nivel de fila, las funciones nativas manejan los lookups de resumen y las listas únicas, y QUERY se encarga de la agregación ad hoc que de otro modo harías en una tabla dinámica.
Para construir patrones complejos de ARRAYFORMULA entre pestañas de forma rápida, ModelMonkey los redacta desde el panel lateral a partir de una descripción en lenguaje natural de lo que necesitas. Útil cuando estás tres pestañas adentro de un LBO de 12 tabs y no quieres dedicar tiempo mental a descifrar los desplazamientos de columna para armar la fórmula desde cero.
Preguntas frecuentes sobre ARRAYFORMULA en Google Sheets
¿Cuántas filas soporta ARRAYFORMULA en Google Sheets?
No existe un límite de filas propio de ARRAYFORMULA. El límite real es el de Google Sheets en su conjunto: 10 millones de celdas por hoja de cálculo. En términos prácticos, una ARRAYFORMULA aplicada a una columna completa de 50,000 filas funciona sin problemas; el factor limitante es el tiempo de recálculo, que en rangos bien estructurados se mantiene entre 3 y 8 segundos. Si superas las 100,000 filas activas, vale la pena acotar los rangos abiertos con límites explícitos (por ejemplo, A2:A100001) para evitar que Sheets evalúe celdas vacías en cada recálculo.
¿ARRAYFORMULA funciona con VLOOKUP?
Sí, pero con limitaciones importantes. ARRAYFORMULA con VLOOKUP funciona en muchos casos, pero tiende a omitir las últimas filas del resultado cuando el rango de búsqueda y el rango de retorno no están perfectamente alineados. Para lookups dentro de ARRAYFORMULA, el patrón recomendado es INDEX/MATCH: más predecible, más rápido en rangos grandes y sin los problemas de alineación que presenta VLOOKUP en contexto de array.
¿Cuándo usar ARRAYFORMULA en lugar de FILTER?
Usa ARRAYFORMULA cuando necesitas aplicar un cálculo fila por fila a una columna completa: multiplicar, concatenar, clasificar o transformar cada registro. Usa FILTER cuando necesitas extraer un subconjunto de filas que cumplan una condición. Son herramientas complementarias, no intercambiables: FILTER selecciona filas, ARRAYFORMULA transforma columnas. Además, no puedes anidar FILTER dentro de ARRAYFORMULA; si necesitas filtrar y luego calcular, aplica ARRAYFORMULA sobre el resultado de FILTER en una columna auxiliar separada.
¿ARRAYFORMULA actualiza automáticamente cuando se agregan filas nuevas?
Sí, siempre que uses rangos abiertos como A2:A en lugar de rangos fijos como A2:A500. Con un rango abierto, cualquier fila que se agregue debajo queda cubierta por la fórmula sin ninguna intervención manual. Este comportamiento es especialmente valioso en modelos donde la fuente de datos es una exportación periódica del ERP o un feed en vivo que crece con cada cierre contable.