Cómo trabajo con fórmulas de matriz

La mayoría de programas de hojas de cálculo cuentan con dos tipos de fórmulas de matriz: "varias celdas" y "una celda".
Google Docs divide estos comportamientos en las dos funciones CONTINUE y ARRAYFORMULA.

Las fórmulas de matriz de varias celdas permiten que una fórmula devuelva varios valores. Puedes utilizar estas fórmulas sin estar familiarizado con ellas; basta con introducir una que devuelva múltiples valores. Por ejemplo, la función TRANSPOSE toma una matriz de celdas como argumento y devuelve las celdas transpuestas. Supongamos que A1:B3 contiene

ejemplo de matriz de varias celdas

Si desciendes hasta A10 e introduces =TRANSPOSE(A1:B3), obtendrás lo siguiente:

transposición de celdas

Si consultas la fórmula de la celda superior izquierda (la que muestra A), verás exactamente lo que has introducido: =TRANSPOSE(A1:B3). Si consultas las fórmulas de las celdas restantes, éstas contendrán una fórmula CONTINUE. Por ejemplo, la celda en la que aparece F contiene la fórmula =CONTINUE($A$10, 2, 3). Esto indica que la celda continúa con la salida de la celda A10 y muestra la entrada de la fila 2 y la columna 3 del resultado de dicha celda. No obstante, si la fórmula de A10 varía (o el contenido del rango original A1:B3 cambia), entonces los cambios se reflejarán en la matriz transpuesta. Y, por supuesto, puedes utilizar los resultados de la matriz transpuesta del mismo modo que los resultados de cualquier otra fórmula: para cortar y pegar, hacer que otras fórmulas dependan de celdas específicas, etc.

Si introduces una fórmula en A10 que devuelve un rango mayor (por ejemplo =TRANSPOSE[A1:B6]), entonces la matriz de salida aumentará hasta completar las celdas suficientes para mostrar la nueva salida completa. Si por el contrario introduces una fórmula que devuelve un rango más pequeño (por ejemplo =TRANSPOSE[A1:B2]), entonces cualquier otra función CONTINUE más allá del resultado de la fórmula mostrará "--":

continuación de funciones

Ahora supongamos que, antes de empezar, existen datos en una de las celdas que se han sobrescrito por la salida de transposición. Por ejemplo, si A12 contenía un valor cuando se editó A10:


datos sobrescritos por la salida de transposición
La salida de matriz completará las seis celdas al pulsar Intro en A10...


salida de la matriz 1

... pero aparecerá un mensaje advirtiéndote de que los datos se han sobrescrito y proporcionándote la posibilidad de no sobrescribir. Si haces clic en el vínculo "No sobrescribir", se modificará únicamente la celda que se editó al principio y el resto volverá a como era anteriormente:

salida de la matriz 2


Las fórmulas de matriz de "una celda" te permiten escribir fórmulas con entradas de matriz (en lugar de con salidas de matriz). Al ajustar una fórmula dentro de una función =ARRAYFORMULA, puedes convertir matrices y rangos en funciones y operadores que normalmente sólo utilizan argumentos que no sean de matriz. Estas funciones y operadores se aplicarán a cada entrada de las matrices, de una en una, y devolverán una nueva matriz con todas las salidas.

Por ejemplo, =ARRAYFORMULA({1,2,3} + {4,5,6}) calcula 1+4, 2+5 y 3+6, y devuelve {5,7,9}. Si introduces esta fórmula en una celda, devolverá datos de salida 5, 7 y 9 en tres celdas, utilizando las reglas de fórmula de varias celdas anterior:

fórmula de matriz de una sola celda

Por supuesto, también puedes utilizar un rango A1:C1 en lugar de {1,2,3}. Sin embargo, todas las matrices o rangos deben tener el mismo tamaño y las mismas dimensiones. Así pues, =ARRAYFORMULA(A1:C1 + A2:C2)) funcionará, pero =ARRAYFORMULA(A1:C1 + A2:Z2)) devolverá un error (la primera tiene tres columnas, mientras que la segunda tiene 26), lo mismo que =ARRAYFORMULA(A1:C1 + A2:A4)), ya que A1:C1 tiene una fila y tres columnas, y A2:A4 tiene tres columnas y una fila.

El verdadero punto fuerte de ARRAYFORMULA se demuestra cuando tomas el resultado de uno de estos cálculos y lo ajustas en una fórmula que utiliza argumentos de matriz o rango: SUM, MAX, MIN, CONCATENATE, etc. Por ejemplo, dado que =ARRAYFORMULA({1,2,3} + {4,5,6}) devuelve {5,7,9}, escribir =ARRAYFORMULA(SUM({1,2,3} + {4,5,6})) es similar a escribir =SUM({5,7,9}), ya que devuelve 21. Esto permite introducir un cálculo complejo completo en una única celda, y de ahí el nombre de "fórmulas de matriz de una celda".

Algunos ejemplos complejos adicionales:

  • =ARRAYFORMULA(SUM(IF(A1:A10>5, A1:A10, 0))) Para cada celda de A1:A10, se calcula IF(Cell>5, Cell, 0), y luego se suman los resultados. El resultado es equivalente a =SUMIF(A1:A10, ">5").
  • =ARRAYFORMULA(MAX(IF(A1:B100<256, A1:B100, 0))). Para cada celda de A1:B100, se calcula IF(Cell<256, Cell, 0), y después se utiliza el número máximo de los resultados. El resultado final pone de manifiesto que has encontrado la entrada más grande en A1:B100, que es inferior a 256.
  • =ARRAYFORMULA(SUM(IF(A1:A10>B1:B10, A1:A10, B1:B10))). Primero se calcula IF(A1>B1, A1, B1), a continuación IF(A2>B2, A2, B2), y así sucesivamente hasta IF(A10>B10, A10, B10). Luego se suman los resultados. El resultado final demuestra que se han contabilizado todas las entradas de fila que sean mayores.
Nota: Ten en cuenta que las fórmulas de matriz no se pueden exportar.