Que es una funcion matricial
Antes de nada, debemos de distinguir entre el concepto de fórmula y función.
Por ejemplo, la siguiente expresión es una formula, porque en ningún momento, se utiliza una función.
=2 + 3
Y, la siguiente expresión, es una función, porque se hace uso de una función.
=SUMA(A1:A10)
Ahora, vamos a conocer el concepto de función matricial.
Se considera función matricial aquella formula que devuelve mas de un valor.
Por ejemplo, la siguiente función nos devuelve un valor.

Como resultado obtenemos 6.582, que es el resultado de multiplicar 3.291 por 2.

Pero, que ocurre si escribo la siguiente sintaxis:
=B2:B12*2
Donde, podemos ver que ya no especifico una celda, sino un rango, este es el caso en el que la función nos va a devolver mas de un valor.
Nos va a devolver la multiplicación de cada celda dentro del rango multiplicada por 2.

Pues, esta es la definición de una función matricial.
Podemos crear una función matricial con cualquier función de Excel, aunque también hay funciones matriciales ya definidas.
Veamos otro ejemplo.
Tenemos el siguiente modelo, donde tenemos las ventas de productos en diferentes centros comerciales, y, en diferentes provincias.

Quiero hacer un cuadro donde en vertical aparezcan las provincias, y, en horizontal, los centros comerciales.
Pero, quiero hacerlo de una forma rápida, para ello, voy a hacer uso de algunas funciones matriciales.
Decir, que en el modelo tanto las provincias como los centros se repiten el cuadro tiene que estar construido con valores únicos.
Hay una función matricial llamada UNICOS, que nos devuelve los valores únicos, el único argumento de esta función es el rango donde vamos a extraer esos valores únicos.
Me voy a colocar en la celda I4, y, voy a escribir la siguiente expresión, donde como argumento rango, he seleccionado las provincias.
=UNICOS(País)
Acepto, y, vemos solo las provincias únicas.

Tenemos otra función llamada ORDENAR, que como su nombre indica, nos va a ordenar un rango, pues la vamos a poner delante de la función UNICOS, para que tengamos las provincias ordenadas.
ORDENAR(UNICOS(País))

Ahora, en la celda J3, voy a usar las mismas funciones anteriores pero para centros comerciales.
=ORDENAR(UNICOS(Distribuidor))=ORDENAR(UNICOS(Distribuidor))

Pero, podemos ver que los centros comerciales aparecen en vertical, cuando lo queremos en horizontal.
Para ello, tenemos otra función matricial llamada TRANSPONER, que los datos que están en vertical lo pone en horizontal, y, viceversa.
Pues, después del signo igual, ponemos TRANSPONER.
=TRANSPONER(ORDENAR(UNICOS(Distribuidor)))
Con esto ya tenemos el modelo construido.

Lo siguiente que quiero es calcular la cantidad vendida para cada provincia y centro comercial, pero de forma matricial, es decir, hacer una formula, y, que me rellene el cuadro completo.
Para ello, voy a usar la función SUMAR.SI.CONJUNTO.
Nos colocamos en la celda J4.
El primer argumento de esta función es rango de suma, que va a ser la columna de total.
=SUMAR.SI.CONJUNTO(G2:G1498
El siguiente argumento es rango de criterios 1, que va a ser la columna de provincia.
=SUMAR.SI.CONJUNTO(G3:G1498;Provvincias;
El siguiente argumento es criterio 1, lo normal es seleccionar una celda, y, después arrastrar la formula, pero como lo vamos a hacer de forma matricial, como criterio vamos a seleccionar todas las provincias.
=SUMAR.SI.CONJUNTO(G3:G1498;Provvincias;I4#

Ahora, es el turno de rango criterios 2, que es el rango de centros comerciales.
=SUMAR.SI.CONJUNTO(G2:G1498;Provincias;I4#;Centros
A continuación, debemos de poner criterios 2, que en este caso va a ser el rango de los centros comerciales.
=SUMAR.SI.CONJUNTO(G2:G1498;Provincias;I4#;Centros;J3#)
Aceptamos, y, vemos como el cuadro ha sido rellenado con una sola formula,

Pues este es uno de los beneficios de usar funciones matriciales, que como hemos visto la podemos usar con funciones normales.
Veamos otro ejemplo.
Teniendo el siguiente modelo:

Quiero saber que localidad pertenece a Sevilla, y, hay una distancia menor a 15 Km.
Bien, podemos usar el condicional SI, de forma normal, es decir, que nos devuelva un solo valor, después fijamos, y, arrastramos.
Esta formula es completamente normal.
Pero, podemos ahorrar tiempo, creándola de forma matricial.
Para crear una formula matricial, por ejemplo, usando el condicional SI, ya sabemos que tiene tres argumentos, siendo el primero de ellos prueba lógica, donde seleccionamos una celda, pues en vez de seleccionar una celda, seleccionamos un rango, por lo que obligamos a la función a que devuelva mas de un valor, pues, con esto ya tenemos una función matricial.
Bien, pues es lo que vamos a hacer con este ejemplo.
En este caso, nos piden dos condiciones que se deben de cumplir, la primera de ellas, es que sea la provincia de Sevilla, y, la segunda de ellas, que tenga una distancia menor a 15 Km.
Lo iremos haciendo poco a poco.
Si escribo la siguiente expresión:
=SI(B12:B17="Sevilla";"ok";"")
Vemos que como prueba lógica, en vez de poner una celda, escribo un rango, quiere decir que va a recorrer el rango desde B12 hasta B17, y, lo compara con el valor Sevilla.
En caso de que se cumpla la condición, pone la palabra OK, en caso contrario, pone un texto en blanco.
Cuando pulsamos enter, podemos ver como se ha rellenado el rango con OK o un texto en blanco.

Esta seria la primera pregunta, pero debemos de hacer una segunda pregunta, es decir, si se cumple la primera condición, debemos de preguntar que además sea menor a 15 Km.
Vamos a modificar la expresión anterior, y, en el argumento valor si verdadero, borramos la palabra OK, y, es en este argumento donde vamos a realizar la siguiente pregunta, quedando de la siguiente manera:
=SI(B12:B17="Sevilla";SI(D12:D17<15;C12:C17;"");"")
Vemos que en el argumento valor si verdadero, he preguntado si en el rango D12:D17, el valor es menor que 15. si lo es, me devuelve el valor que corresponde en la matriz C12:C17.
Decir que todos los condicionales SI que se van abriendo, se cierran al final.
Si esta condición no se cumple, pondrá un texto en blanco, pero si no se cumple la primera condición, también pondrá un texto en blanco.
Aceptamos, y, tenemos una matriz desbordada con las localidades que pertenecen a Sevilla con una distancia menor a 15 Km.
Pero, ¿podemos acortar esta sintaxis?
La respuesta es SI.
Se puede especificar dos o mas criterios entre paréntesis, ¿Qué quiere decir?, pues bien, abrimos un paréntesis, ponemos la primera condición, cerramos el paréntesis, ponemos el símbolo de multiplicación, volvemos a abrir un paréntesis, ponemos la segunda condición, y, cerramos el paréntesis.
Las dos condiciones anteriores, quedarían como sigue:
(B12:B17="Sevilla")*(D12:D17<15)
Ahora, en vez de dos condicionales, solo usamos uno, quedando la función completa de la siguiente manera:
=SI((B12:B17="Sevilla")*(D12:D17<15);C12:C17;"")
Vemos que tenemos los mismos resultados.
Debemos de saber que en Excel, podemos hacer lo mismo de diferentes maneras.
Veamos otro ejemplo.
Tenemos el siguiente modelo, que son ventas de productos en diferentes centros comerciales, en diferentes provincias.

¿Qué es lo que quiero?
Bien, quiero poner las iniciales de un producto y saber en que provincias se han vendido.
Por ejemplo, escribo DORA, pues quiero una matriz con las provincias donde se han vendido un producto, que contenga la palabra DORA.
Tenemos una función llamada ENCONTRAR, y, otra llamada HALLAR, las dos hacen lo mismo, nos devuelve la posición de una palabra dentro de un texto, la diferencia es que la función ENCONTRAR distingue entre mayúsculas, y, minúsculas, y, la función HALLAR no lo hace.
Pues es la función HALLAR la que vamos a usar.
Si escribo la siguiente expresión, me devuelve una matriz desbordada con la posición de la palabra D en cada celda, decir que aunque pongamos un texto, nos devuelve la posición de la primera letra puesta.
=HALLAR("DORA";Marca)
Tenemos una matriz desbordada, donde aparece la posición de la palabra D donde exista, y, VALOR donde no se encuentre.

Tenemos una función llamada ESNUMERO, cuyo único argumento es la celda o matriz a examinar.
Esta función nos devuelve verdadero, si el valor de la celda contiene un numero, y, falso si no lo es.
Escribo la siguiente expresión, y, obtengo esos verdaderos y falsos.
=ESNUMERO(HALLAR("DORA";Marca))

Pues, tenemos una función que si es matricial, que se llama filtrar.
Esta función tiene el argumento array, que es la matriz a filtrar, como queremos las provincias, pues ese es el argumento array.
=FILTRAR(País
El siguiente argumento es include, que es el criterio, donde debemos de especificar el criterio por el que filtrar, pero si en vez de poner dicho argumento, como argumento include, pongo la expresión anterior, donde hay verdaderos y falsos, me va a devolver una matriz filtrada solo por los valores que son verdaderos.
=FILTRAR(País;ESNUMERO(HALLAR("DORA";Marca)))
Aceptamos, y, vemos las provincias donde se ha vendido un producto que contiene la palabra DORA..
Pero, ¿Qué ocurre?
Que las provincias se repiten, porque ese producto se ha vendido en la misma provincia en diferentes fechas.
Pues, tenemos otra función matricial llamada UNICOS, que nos devuelve los valores únicos dentro de una matriz.
Pues, la añadimos después del signo igual.
=UNICOS(FILTRAR(País;ESNUMERO(HALLAR("DORA";Marca))))
Y ya tenemos las provincias únicas.
i queremos tener las provincias ordenadas, también tenemos otra función matricial llamada ORDENAR, pues la colocamos después del signo igual, y, tenemos las provincias ordenadas.
=ORDENAR(UNICOS(FILTRAR(País;ESNUMERO(HALLAR("DORA";Marca)))))
