La sintaxis envuelve de forma directa: =ARRAYFORMULA(IF(arreglo_lógico, valor_si_verdadero, valor_si_falso)). Cada argumento se expande automáticamente por tantas filas como datos tenga tu rango. Esa diferencia de comportamiento, la expansión automática, es lo que hace que valga la pena entenderla bien antes de construir cualquier modelo con más de dos pestañas.
El patrón básico de ARRAYFORMULA(IF)
Empieza con la protección de filas vacías. Sin ella, ARRAYFORMULA evalúa cada celda de la columna hasta la fila 50,000 en algunas configuraciones de Sheets, y terminas con 50,000 etiquetas llenando tu columna. Eso rompe cualquier SUMIFS, COUNTIFS o tabla dinámica que haga referencia a esa columna.
=ARRAYFORMULA(
IF('P&L'!B2:B="", "",
IF('P&L'!B2:B="Revenue", 'P&L'!C2:C * Assumptions!$B$3, 0)
)
)
El IF exterior protege las filas vacías. El IF interior hace la lógica real. Ese patrón de dos capas es la base de casi todo ARRAYFORMULA(IF) que escribirás en un modelo financiero.
Aquí un ejemplo más realista: un modelo de margen de contribución a nivel de SKU que marca los productos cuyo margen bruto cayó por debajo del umbral aprobado por la junta directiva, en este caso 38.5%:
=ARRAYFORMULA(
IF('P&L'!A2:A="", "",
IF(('P&L'!C2:C - 'P&L'!D2:D) / 'P&L'!C2:C < Assumptions!$B$7,
"Bajo umbral", "OK"
)
)
)
Donde Assumptions!$B$7 contiene el umbral del 38.5%. Los SKUs marcados como "Bajo umbral" alimentan un COUNTIFS para el análisis de márgenes del reporte trimestral al directorio. La referencia se mantiene activa: ajusta el umbral en Assumptions y las banderas se actualizan de inmediato.
Anidar lógica sin perder la razón
Google Sheets permite hasta 64 niveles de IF anidados, según la documentación oficial de Google Sheets Function Reference (Google, julio de 2026), aunque la legibilidad colapsa mucho antes. Para estructuras escalonadas como rangos de comisión, clasificaciones de territorio o tramos de desembolso, apilas IF dentro de IF:
=ARRAYFORMULA(
IF('Ventas'!C2:C="","",
IF('Ventas'!C2:C >= Assumptions!$B$3, "Nivel 1",
IF('Ventas'!C2:C >= Assumptions!$B$4, "Nivel 2",
IF('Ventas'!C2:C >= Assumptions!$B$5, "Nivel 3",
"Bajo mínimo"
)
)
)
)
)
Donde $B$3 = $2.1M, $B$4 = $850K y $B$5 = $250K son los umbrales de cuota que viven en Assumptions para que el CFO los ajuste sin tocar la lógica de las fórmulas.
IFS sería una sintaxis más limpia: una sola función con pares de condición y resultado. Pero IFS no se expande dentro de ARRAYFORMULA, al menos hasta julio de 2026. SWITCH tampoco. Esto está documentado en las notas de compatibilidad de Google Workspace (Google Workspace Release Notes, mayo de 2026): IFS y SWITCH no admiten evaluación en modo arreglo y devuelven únicamente el resultado de la primera fila.
Si necesitas lógica de múltiples niveles con más de cuatro capas, tus opciones prácticas son IF anidado o un lookup contra una tabla de referencia usando ARRAYFORMULA(VLOOKUP()) o ARRAYFORMULA(INDEX(MATCH())). La tabla siguiente resume cuándo conviene cada enfoque:
| Criterio | IF anidado | IFS / SWITCH | VLOOKUP / INDEX(MATCH) |
|---|---|---|---|
| Compatible con ARRAYFORMULA | Sí | No (solo evalúa la primera fila) | Sí (con coincidencia exacta) |
| Legibilidad con 3-4 niveles | Aceptable | Alta | Media |
| Legibilidad con 8 o más niveles | Baja | N/A | Alta |
| Fuente de verdad en Assumptions | Posible, pero dispersa | N/A | Concentrada en tabla de referencia |
| Caso de uso recomendado | Hasta 4 niveles simples | Fuera de ARRAYFORMULA | 5 o más niveles, tablas de tasas |
El enfoque de lookup escala mejor para ocho o más niveles y mantiene la pestaña de Assumptions como fuente única de verdad.
Manejo de errores dentro de ARRAYFORMULA(IF)
Las divisiones, los lookups y el parseo de texto generan errores cuando el denominador es cero, el valor buscado no existe o la celda de origen está vacía. Dentro de un ARRAYFORMULA, una sola fila con error propaga el problema visualmente en toda la columna. Envuelve con IFERROR únicamente la operación específica que puede fallar:
=ARRAYFORMULA(
IF('P&L'!B2:B="", "",
IFERROR(
('P&L'!C2:C - 'P&L'!D2:D) / 'P&L'!C2:C,
0
)
)
)
La posición importa. IFERROR va dentro del ARRAYFORMULA, no alrededor de él. Si envuelves todo el ARRAYFORMULA con IFERROR, conviertes todos los errores en 0, incluyendo los errores de lógica que sí quieres ver durante la construcción del modelo. Envuelve solo la operación que puede fallar.
Para los cálculos de margen: un ingreso de $0 en los meses previos al lanzamiento de un producto es una fuente común de división por cero. IFERROR(expr, 0) lo resuelve sin complicaciones, pero piensa si un margen del 0% es significativamente distinto de "sin datos" para tu output. En un modelo de 36 meses con 200 SKUs, esa distinción aparece en los promedios históricos y en el análisis de cohortes.
Lo que ARRAYFORMULA(IF) no puede hacer
Algunas cosas no funcionan dentro de ARRAYFORMULA como podrías esperar:
IFS y SWITCH no se expanden en modo arreglo. La fórmula evalúa solo la primera fila y devuelve un valor único, no una columna.
VLOOKUP con coincidencia aproximada (range_lookup = TRUE) se comporta de forma impredecible en contexto de arreglo. Usa INDEX(MATCH()) o VLOOKUP con coincidencia exacta.
Salidas de múltiples columnas desde una sola rama del IF: ARRAYFORMULA devuelve una columna por fórmula. Si tu lógica condicional necesita poblar columnas separadas de Ingresos, COGS y Margen Bruto, eso son tres fórmulas distintas.
Funciones volátiles dentro de las ramas del IF: RAND(), NOW() y TODAY() dentro de ARRAYFORMULA se recalculan con cada cambio en la hoja. En un modelo con 7,200 celdas vinculadas a fórmulas de arreglo, el retraso se nota.
Rendimiento a escala
Un modelo de P&L de 36 meses con 200 SKUs implica aproximadamente 7,200 celdas por columna de fórmula. En aislamiento eso está bien. El recálculo se vuelve lento cuando encadenas múltiples salidas de ARRAYFORMULA: la fórmula A alimenta a la B, y la B alimenta a la C. Los arreglos encadenados multiplican el costo de recálculo.
Dos soluciones prácticas: evalúa una vez en una columna auxiliar y referencia esa columna en las fórmulas siguientes, y cristaliza los períodos cerrados con Pegado especial > Solo valores cuando el mes cierre y la lógica ya no cambie.
El ciclo de iteración en ARRAYFORMULA(IF) (escribir, verificar desbordamiento en filas vacías, depurar errores, ajustar lógica, repetir) es donde se va el tiempo a mitad de trimestre. Elige un plan de ModelMonkey, funciona tanto en Google Sheets como en Excel.
Preguntas frecuentes
¿Puedo combinar ARRAYFORMULA(IF) con COUNTIFS o SUMIFS? No directamente dentro de un ARRAYFORMULA, ya que COUNTIFS y SUMIFS no se expanden en modo arreglo. La alternativa es usar SUMIF o COUNTIF en singular, que sí son compatibles, o calcular la lógica condicional en una columna auxiliar con ARRAYFORMULA(IF) y luego referenciar esa columna desde tu COUNTIFS/SUMIFS externo.
¿Por qué mi ARRAYFORMULA(IF) devuelve un solo valor en lugar de una columna? La causa más común es que una de las funciones anidadas, típicamente IFS, SWITCH o una función de texto como TEXTJOIN, no admite modo arreglo. Revisa la tabla de compatibilidad de la sección anterior y reemplaza esa función por una alternativa compatible o por lógica IF anidada.
¿Cuánto afecta al rendimiento tener varias columnas con ARRAYFORMULA(IF)? Depende del tamaño del rango y del nivel de encadenamiento. En modelos con menos de 1,000 filas el impacto es mínimo. A partir de 5,000 filas con cinco o más columnas encadenadas, el retraso de recálculo se vuelve perceptible. Cristalizar los períodos cerrados (Pegado especial > Solo valores) es la medida de optimización con mejor relación esfuerzo-resultado.
¿Funciona ARRAYFORMULA(IF) igual en Excel que en Google Sheets? No. En Excel el equivalente es una fórmula matricial confirmada con Ctrl+Shift+Enter en versiones anteriores, o la sintaxis de arreglo dinámico de Excel 365 (IF con rangos). La lógica condicional es equivalente, pero la compatibilidad con funciones específicas como IFS varía. Verifica la documentación de la versión de Excel que uses antes de migrar un modelo.
¿Cómo depuro un ARRAYFORMULA(IF) que devuelve errores en algunas filas? Aísla la fila con error copiando la expresión problemática en una celda individual sin ARRAYFORMULA. Eso permite inspeccionar el valor que causa el error sin el ruido visual de la columna completa. Una vez identificado el patrón, agrega IFERROR solo alrededor de la operación que falla, no de todo el arreglo.
En resumen
ARRAYFORMULA(IF) es el patrón central para lógica condicional a escala de columna en Google Sheets: siempre protege las filas vacías con un IF exterior, envuelve con IFERROR solo la operación que puede fallar dentro del arreglo, y usa IF anidado para lógica de múltiples niveles dado que IFS y SWITCH no se expanden en modo arreglo. En modelos grandes, limita las dependencias encadenadas de ARRAYFORMULA y cristaliza los períodos cerrados para mantener el recálculo ágil.
Para una visión más amplia de lo que ARRAYFORMULA puede hacer más allá de la lógica condicional, revisa ARRAYFORMULA en Google Sheets: Guía para modelos financieros.