22 ago 2016

Fórmulas y Funciones Matriciales en Excel.

Funciones más útiles para crear fórmulas matriciales en Excel. Parte 1.

 

Fórmulas matriciales: Curso de Matrices en Excel para aprender a trabajar con rangos en vez de con celdas con la finalidad de trabajar con datos organizados en rangos más rápidamente.

Temario: trabajar con rangos matriciales: operaciones básicas y función SI(). Fórmulas de resumen de rangos matriciales: SUMA(), CONTAR(), PROMEDIO(). Uso de SUMA(SI()) para contar. CONTAR.SI() matricial. Funciones matriciales específicas: FRECUENCIA(), TENDENCIA() y SUMAPRODUCTO(). Funciones SI CONJUNTO. Lógica Matricial.

Descarga los ejemplos en: https://www.dropbox.com/s/s6o0zylb6thit0y/Excel-Matrices.zip?dl=1

 

Puedes ir al índice de contenidos para ver todos los Minicursos o a la primera entrega de este minicurso de Matrices en Excel.

 

Funciones más útiles en el mundillo de las fórmulas matriciales de Excel

Con lo visto hasta ahora, ya deberíais tener una idea clara de lo que son las fórmulas matriciales y de cómo construirlas. Básicamente, las fórmulas matriciales más usadas son las de Tipo 2 y Tipo 3 pero, para crear una fórmula de Tipo 2, hay que conocer el uso de las fórmulas matriciales de Tipo 1 como ya vimos.

 

En este tema vamos a ver cuáles son las funciones estándares de Excel que son más útiles para ser usadas como funciones matriciales, tanto de Tipo 1, como Tipo 2, como Tipo 3 y como Tipo 4. Por tanto, en este tema, vamos a mezclar los 4 tipos de fórmulas matriciales y vamos a usar muchas funciones estándar como matriciales.

 

En concreto vamos a ver aquellas funciones que tienen más "fama" en el mundillo de las fórmulas matriciales por ser las que tienen más utilidad: funciones que nos ahorran el uso de fórmulas estándar muy complejas y funciones que permiten hacer cosas con fórmulas matriciales que con fórmulas estándar no se pueden hacer (o que al menos no se pueden hacer en el momento de crear este Minicurso).

Recuerda que la mayoría de las funciones estándar de Excel pueden usarse como matriciales. Simplemente hay que teclear rangos en vez de celdas en sus parámetros y acabar introduciéndolas con CONTROL+MAYUSCULAS+ENTER (salvo las de Tipo 3). En el mundillo de las matrices de Excel el uso de CONTROL+MAYUSCULAS+ENTER, o también llamado CONTROL+SHIFT+ENTER, se abrevia como "fórmulas CSE".

Nota: Hay que hacer notar que, otros softwares de hoja de cálculo de empresas que no son Microsoft, no usan "CSE" para crear fórmulas matriciales a partir de fórmulas estándar, sino que usan otros métodos. Por ejemplo, uno de los métodos usados es anidar la fórmula estándar dentro de una función especial, por ejemplo, MATRICIAL(fórmula estándar), y entonces la fórmula ya es matricial. De hecho, Microsoft está sopesando la posibilidad de incluir, en futuras versiones de Excel, la fórmula ARRAY(fórmula estándar) que convierte una fórmula estándar en matricial sin necesidad de usar CSE.

 

Empecemos a verlas.

 

Funciones SI() anidadas y función SI.CONJUNTO() a partir de la versión de Office 365 enero 2016

Si estás siguiendo un Minicurso de fórmulas matriciales como este, significa que ya estás muy avanzado en el uso de Excel. Por tanto ya deberás conocer el uso de las funciones SI() anidadas y, por tanto, ya deberás conocer también que los SI() anidados son bastante liosos de usar y, siempre que se pueda, hay que evitar utilizarlos. La mejor manera de evitar el uso de SI() anidados es usando la lógica matricial. Pero la lógica matricial la veremos más adelante.

Por ahora vamos a ver la función SI.CONJUNTO() que nos evitará tener que usar SI() anidados. Ahora bien, esta función SI.CONJUNTO() fue incorporada a Excel a partir de la versión Office 365 enero 2016, por lo que, si tenéis versiones anteriores, como Excel 2003, 2007, 2010, 2013 ó Excel 2016 escritorio, no podréis usarla, pero recordar que podéis usarla gratuitamente en OneDrive.com con la condición de que la uséis en inglés: en inglés es la función IFS().

Funciones SI() anidadas a partir de la versión Excel 97

Por todo ello, empezaremos viendo los SI() anidados estándar, los "liosos" por decirlo de manera clara. Pero no los veremos en profundidad. Preferimos entrar en profundidad en la lógica matricial, que es mucho más eficiente.

Si ya has descargado los ejemplos, abre el archivo "MasUsadasEnMatrices.xls" en la hoja "Resúmenes", que tiene que tener este aspecto:

 

image

 

Supón que te piden que obtengas, en la celda L2, la suma de las facturas del cliente C001 y de 30 días a la vez. Para ello, pon "C001" en J2 y 30 en K2. Pero te piden hacerlo usando funciones SI() anidadas porque quieren el archivo en formato Excel 2003 (.xls) que no tiene incorporadas las funciones SI CONJUNTO. Sigue estos pasos:

  • Haz clic en L2
  • Teclea la fórmula =SUMA(SI(D2:D21=J2;SI(C2:C21=K2;E2:E21)))
  • Y acaba con CONTROL+MAYUSCULAS+ENTER.

El resultado es:

5.426

Nuevamente cambiando los valores en J2 y K2 obtenemos valores distintos. Observa que no se pone nada en la parte falsa del SI() lo que implica que, si no se cumple el criterio, la función SI() retorna un valor nulo que no influye en la suma. Esta fórmula sólo retorna la suma de las celdas del rango E2:E21 que cumplan los criterios requeridos.

Al crear una fórmula con varias funciones SI() anidadas, el anidamiento ha de ser organizado con un cierto orden: de mayor a menor, de menor a mayor, de contenedor a contenido... en base al hecho de que Excel evalúa los SI() anidados de izquierda a derecha. Este orden se puede "dibujar" en forma de esquema:

 

esquema-si-anidados

 

 

Nota importante: quizás sepas que se puede simplificar la creación de una fórmula estándar usando columnas enteras como rangos, por ejemplo D:D, C:C, E:E... Pero es importante saber que el uso de columnas enteras como rangos fue añadido a partir de la versión Excel 2007. Por tanto, para cualquier archivo que tengáis que hacer compatible con Excel 2003, en formato .xls, hay que usar rangos limitados, nunca columnas enteras. En este caso concreto hemos usado D2:D21, C2:C21 y E2:E21. Nunca deberíamos usar D:D, C:C o E:E para un archivo .xls incluso aunque estemos trabajando en "modo compatibilidad" con un archivo .xls en una versión igual o mayor que Excel 2007.

 

En una fórmula matricial acabada con CONTROL+MAYUSCULAS+ENTER nunca deben usarse columnas enteras como rangos. Los resultados serán totalmente erróneos.

 

 

Ahora hazlo tú:

Te proponemos algo muy sencillo. La fórmula matricial anterior =SUMA(SI(D2:D21=J2;SI(C2:C21=K2;E2:E21))) ¿Es de Tipo 1, 2, 3 ó 4 según la clasificación hecha en este Minicurso? ¿Y según la clasificación que hace Microsoft?

 

Te damos una pista:

Se ha de introducir con CONTROL+MAYUSCULAS+ENTER y es una sola función de resumen SUMA() en una sola celda y que contiene como parámetro una función de Tipo 1.

 

Te damos la solución:

Es de Tipo 2 según nuestra clasificación. Si has pensado Tipo 3, recuerda que las de Tipo 3 se introducen simplemente con un ENTER normal. Según la clasificación de Microsoft, multicelda o unicelda, es de tipo unicelda, y, como hemos dicho, una función "CSE".

 

 

Ahora hazlo tú:

Continuamos en el archivo "MasUsadasEnMatrices.xls" en la hoja "Resúmenes". Supón que te piden que pongas en la celda M2 una sola fórmula, sin usar rangos con valores intermedios, que calcule cuántas facturas tiene el cliente C001 a 30 días. La fórmula que pongas ha de ser compatible con Excel 2003. El resultado debería ser:

6

 

Te damos una pista:

Si ha de ser compatible con Excel 2003 no puedes usar funciones SI CONJUNTO, has de usar funciones SI() anidadas (aún no hemos visto lógica matricial). La fórmula será igual que la anterior, solamente que ha de hacer un conteo.

 

Te damos la solución:

Sigue estos pasos:

  • Haz clic en J2 e introduce el texto "C001"
  • Haz clic en K2 e introduce el número 30
  • Haz clic en M2
  • Teclea la fórmula =CONTAR(SI(D2:D21=J2;SI(C2:C21=K2;E2:E21)))
  • Y acaba con CONTROL+MAYUSCULAS+ENTER.


El resultado es que el cliente C001 tiene 6 facturas a 30 días y estas facturas totalizan 5.426. Nuevamente cambiando los valores en J2 y K2 obtenemos valores distintos para los distintos clientes y plazos.

 

 

Ahora hazlo tú:

Te piden que rellenes las celdas L3 y L4 con la fórmula que hay en L2, y que rellenes las celdas M3 y M4 con la fórmula que hay en M2. Has de hacerlo de manera tal que las 6 fórmulas resultantes referencien siempre al cliente que hay en J2. En cambio, la referencia a los plazos de pago de 30, 60 y 90 días en las celdas K2, K3 y K4, ha de cambiar en las fórmulas de las filas 2, 3 y 4 respectivamente. Fíjate que lo que te piden es que conviertas las fórmulas de Tipo 2 que hay en L2 y M2, en fórmulas de Tipo 4, y que las arrastres con el cuadro de relleno para rellenar las filas 3 y 4. El resultado debería ser:

 

resultado001

 

Nota: recuerda que las fórmulas matriciales de Tipo 1 y Tipo 2 aparecen entre llaves { y } en la barra de fórmulas. Cuando rellenas un rango a partir de una fórmula de resumen matricial de Tipo 2, las fórmulas que aparecerán en ese rango también serán matriciales de Tipo 2 y quedarán entre llaves { y }.

 

 

Te damos una pista:

Las fórmulas son las mismas. Únicamente has de poner referencias absolutas en todos los rangos. Puedes hacerlo tecleando los $ necesarios a mano o bien puedes usar la tecla F4. En lo que respecta a las celdas: J2 ha de ser una referencia absoluta (con $) en todas las fórmulas. En cambio, K2 no ha de ser una referencia absoluta, ha de ser relativa (sin $) porque la referencia a los días de plazo (30, 60 y 90) ha de cambiar a K2, K3 y K4.

 

Te damos la solución:

  • Haz clic en J2 e introduce el texto "C001"
  • Haz clic en K2 e introduce el número 30
  • Haz clic en L2
  • Cambia la fórmula a:

=SUMA(SI($D$2:$D$21=$J$2;SI($C$2:$C$21=K2;$E$2:$E$21)))

Puedes teclear los $ a mano o seleccionar los rangos / celdas y pulsar F4.

  • Acaba con CONTROL+MAYUSCULAS+ENTER
  • Haz clic de nuevo en L2
  • Usa el cuadro de relleno (parte inferior derecha de la celda) y rellena las celdas L3 y L4
  • Haz clic en M2
  • Cambia la fórmula a:

=CONTAR(SI($D$2:$D$21=$J$2;SI($C$2:$C$21=K2;$E$2:$E$21)))

Puedes teclear los $ a mano o seleccionar los rangos / celdas y pulsar F4.

  • Acaba con CONTROL+MAYUSCULAS+ENTER
  • Haz clic de nuevo en M2
  • Usa el cuadro de relleno (parte inferior derecha de la celda) y rellena las celdas M3 y M4

Observa que las 6 celdas contienen ahora una función de resumen de Tipo 2 rodeadas las 6 con llaves { y }. Estas funciones deberían ser:

 

En la columna L:

{=SUMA(SI($D$2:$D$21=$J$2;SI($C$2:$C$21=K2;$E$2:$E$21)))}
{=SUMA(SI($D$2:$D$21=$J$2;SI($C$2:$C$21=K3;$E$2:$E$21)))}
{=SUMA(SI($D$2:$D$21=$J$2;SI($C$2:$C$21=K4;$E$2:$E$21)))}

 

En la columna M:

{=CONTAR(SI($D$2:$D$21=$J$2;SI($C$2:$C$21=K2;$E$2:$E$21)))}
{=CONTAR(SI($D$2:$D$21=$J$2;SI($C$2:$C$21=K3;$E$2:$E$21)))}
{=CONTAR(SI($D$2:$D$21=$J$2;SI($C$2:$C$21=K4;$E$2:$E$21)))}

 

Por último, puedes ir cambiando la celda J2 con los clientes desde C001 hasta C006 y verás cómo estas 6 celdas cambian de valor.

 

 

 

Función SI.CONJUNTO() para evitar SI() anidados

La función SI.CONJUNTO() fue incorporada a Excel a partir de la versión Office 365 enero 2016, por lo que, si tienes versiones anteriores, como Excel 2007, 2010, 2013 ó Excel 2016 escritorio, no podrás usarla, pero recuerda que puedes usarla gratuitamente en OneDrive.com con la condición de que la uses en inglés: en inglés es la función IFS().

Efectivamente, dado que los SI() anidados son, como hemos dicho, "liosos", los usuarios solicitaron a Microsoft que incorporase una función nueva que evitase usar SI() anidados. Como resultado, Microsoft incorporó a Office 365 Professional en la nube la función SI.CONJUNTO(). En el momento de crear este Minicurso, la función aún no estaba disponible en la versión de Office para escritorio, pero será incorporada, si tiene éxito, junto con MAX.SI.CONJUNTO(), MIN.SI.CONJUNTO() y otras funciones que facilitan el manejo de cadenas de texto.

Su sintaxis es la siguiente:


=SI.CONJUNTO(criterio;valor a retornar si VERDADERO;otro criterio;otro valor a retornar si VERDADERO;otro criterio;otro valor retornar si VERDADERO;...)


Nota: En inglés es =IFS(criterio,valor si TRUE,criterio,valor si TRUE,criterio,valor si TRUE,...)

 

En la función SI.CONJUNTO() los criterios son operaciones lógicas estándares, igual que en la función SI() estándar. Es decir, no son textos, como ocurre en otras funciones SI CONJUNTO.

 

Los criterios (pruebas lógicas) son operaciones lógicas que evalúan a VERDADERO o FALSO. Son los criterios estándar  = , > , >= , <  , <= , <>, pero, dado que no son criterios en forma de texto como ocurre en otras funciones SI CONJUNTO, se pueden usar funciones de información como ESTEXTO(), ESNUMERO(), ESBLANCO(), ESERROR() y otras. A partir de Excel 2013 se añadió la función de información ESFORMULA().

Excel evalúa los criterios por el mismo orden en que están tecleados en la fórmula (de izquierda a derecha igual que los SI() anidados). Cuando un criterio evalúa a VERDADERO, la función SI.CONJUNTO() retorna el valor que hay a la derecha del criterio evaluado como VERDADERO y detiene la evaluación, es decir, ya no evalúa los demás criterios. Se puede poner hasta 127 criterios con sus correspondientes 127 valores a retornar, lo que se denomina 127 pares criterio-valor.

 

No obstante, esta función ha sido diseñada con la finalidad de reemplazar a los SI() anidados, por lo que tiene algo de "truco" para usarla. Vamos a verlo.

 

Dado que es una función nueva, primero vamos a ver cómo se usa de manera estándar y, una vez entendido eso, pasaremos a ver cómo se usa a nivel matricial.

 

SI.CONJUNTO() no es una función matricial de por sí y ni siquiera trabaja con rangos ordenados. Es una función estándar que trabaja con celdas individuales como parámetros. Es muy similar a la función estándar SI(). Pero, al igual que la mayoría de las funciones estándar de Excel, se puede usar como función matricial de Tipo 1 multicelda o dentro de una función de resumen de tipo 2 unicelda, siempre que se introduzca con CONTROL+MAYUSCULAS+ENTER.

 

Continuamos en el archivo "MasUsadasEnMatrices.xls" en la hoja "Resúmenes". Observa que la columna I está vacía. Supón que te piden que pongas en la celda I2 una fórmula estándar no matricial, que retorne la cantidad de cada factura si el cliente en D2 es el mismo que hay en J2, si además la factura es del primer semestre del año y si además la cantidad de la factura es mayor o igual que 500. Sigue estos pasos:

  • Haz clic en J2 e introduce el texto "C001"
  • Haz clic en I2
  • Teclea la fórmula

=SI.CONJUNTO(D2<>$J$2;"";MES(B2)>6;"";E2>=500;E2)

  • Acaba con un ENTER, esto no es porque sea una función de Tipo 3, sino porque es una función estándar de toda la vida: ni es matricial ni trabaja con rangos ordenados
  • Haz clic otra vez de I2
  • Arrastra por el cuadro de relleno (parte inferior derecha de la celda) hasta I21 para rellenar la columna I con la misma fórmula.

El resultado es:

 

resultado002

 

Con este resultado, a primera vista parece que la función tiene algún fallo puesto que en la columna I aparecen errores #N/A. Ni siquiera podemos ver la suma en I22 que también es #N/A. Pero esto no es un fallo de la función.

El problema de los errores #N/A viene dado por dos motivos:

- Hemos dicho que, cuando uno de los criterios evalúa a VERDADERO, la función retorna el valor que hay a la derecha de dicho criterio VERDADERO y la función ya no evalúa más criterios. Se detiene. En los casos en que ninguno de los criterios de SI.CONJUNTO() evalúe a VERDADERO, la función llega al último criterio y ya no tiene más criterios que evaluar. Microsoft decidió que, en estos casos, la función retornará un #N/A, con lo que, en realidad, la función nos está diciendo que no hemos previsto qué valor ha de ser retornado cuando ningún criterio sea VERDADERO. La solución es bien sencilla, forzamos a que el último criterio sea siempre VERDADERO y que retorne el valor que queramos. En este caso concreto queremos que retorne un nulo "", por tanto lo mejor es cambiar la fórmula como sigue:

  • Haz clic en I2
  • Cambia la fórmula añadiendo al final este par criterio-valor:

=SI.CONJUNTO(D2<>$J$2;"";MES(B2)>6;"";E2>=500;E2;VERDADERO;"")

  • Acaba con un ENTER normal (recuerda que la función no es matricial)
  • Haz clic otra vez de I2
  • Arrastra por el cuadro de relleno (parte inferior derecha de la celda) hasta I21 para rellenar la columna I con la misma fórmula.

El resultado es:

 

resultado003

 

Ahora han desaparecido los errores #N/A, dado que hay un criterio que siempre evaluará a VERDADERO, el último criterio, y siempre devolverá un nulo "". Ahora podemos ver en I22 que la suma de las facturas solicitadas es:

4019

 

Al usar la función SI.CONJUNTO() hay que prever qué valor queremos que devuelva cuando ningún criterio (prueba lógica) evalúa a VERDADERO. Por defecto, si no hacemos nada, devolverá #N/A.


- El otro motivo por el que la fórmula puede retornar un #N/A es el siguiente. Si miras bien la fórmula, verás que no se corresponde exactamente con lo que te hemos pedido. No se corresponde a nivel de lenguaje hablado. Es decir:

  • te hemos pedido que mires si el cliente es el que hay en J2 pero el criterio que hemos puesto es D2<>$J$2, justo lo contrario de lo que te hemos dicho
  • te hemos pedido que mires si la fecha es del primer semestre (mes <= 6) pero el criterio que hemos puesto es MES(B2)>6, justo lo contrario de lo que te hemos dicho
  • y, como último criterio, te hemos pedido que mires si la cantidad es >=500 y, en este caso, el criterio que hemos puesto es E2>=500. Esta vez sí que es lo mismo que te hemos dicho, así que, en caso de que evalúe a VERDADERO, la función retorna E2 que es la cantidad solicitada.

 

La contradicción que hay entre lo que te hemos pedido a nivel hablado y los criterios que hemos tecleado a nivel lógico, es debida a que la función SI.CONJUNTO() no tiene la misma libertad de uso que la función SI(). Con la función SI(criterio;parte verdadera; parte falsa) tenemos la libertad de anidar, según nos convenga, otro SI() en la parte verdadera o de anidar otro SI() en la parte falsa o de anidar dos SI() en las partes verdadera y falsa. Pero en la función SI.CONJUNTO() no tenemos esta libertad, estamos obligados a devolver una valor cuando se cumple el criterio y, si no se cumple, pasar al siguiente criterio. Solamente podemos jugar con dejar un criterio tal como nos lo han solicitado o negar ese criterio si queremos que Excel continúe la evaluación hacia los siguientes criterios. Observa que:

  • la negación lógica de cliente=J2 es cliente<>J2
  • la negación lógica de mes<=6 es mes>6.


A continuación te ponemos una tabla con las negaciones lógicas de los operadores lógicos:

 

Operador Negación
= <>
> <=
>= <
< >=
<= >
<> =
ESTEXTO() ESNOTEXTO()
ES.PAR() ES.IMPAR()

 

Además, observa en la fórmula anterior que, en cada par criterio negado-valor, el valor es un nulo "". Así, si se cumple el criterio negado, la función retorna un valor nulo "" y este valor nulo no influirá en el resultado final de la suma que hemos puesto en la celda I22. Los nulos tampoco influyen en un promedio, un conteo, etc.

En nuestro caso:

  • El primer criterio es que el cliente sea distinto del que hay en J2, si no es el cliente que hay en J2 retorna un nulo. Si el cliente es el que hay en J2 continúa la evaluación en el segundo criterio
  • El segundo criterio es que la fecha de la factura no sea del primer semestre, si no es del primer semestre retorna un nulo. Si el del primer semestre continúa la evaluación en el tercer criterio
  • El tercer criterio es que la cantidad sea mayor o igual que 500, si es mayor o igual que 500 devuelve la cantidad
  • El resultado final es que la función SI.CONJUNTO() solamente devolverá la cantidad de la factura cuando el cliente es el que hay en J2 y cuando el mes es <=6.

 

Para que lo veas más claro, en la siguiente imagen hemos puesto en color oscuro las celdas que cumplen los dos primeros criterios negados, en color amarillo las que cumplen tercer criterio sin negar y, las que están en color verde, son las que coinciden que las filas no están color oscuro y sí que están en color amarillo:

 

resultado004

 

 

En esta fórmula, además, hemos añadido un cuarto criterio para que, en caso de que ningún criterio se cumpla, la función retorne un valor nulo "". Este cuarto criterio no es estrictamente necesario.

 

Para que lo veas aún más claro, hemos "dibujado" el orden de evaluación de los criterios en forma de esquema. Los recuadros de color oscuro son los criterios negados, en color amarillo es el último criterio no negado, y en color verde hemos puesto el cuarto criterio que evalúa siempre a VERDADERO:

 

esquema-si-conjunto-03

 

 

Por tanto, el "truco" para usar la función SI.CONJUNTO() es negar todos los criterios excepto el último. Opcionalmente, después del último par criterio-valor, puedes añadir este otro par: ...;VERDADERO;"") para que SI.CONJUNTO() retorne un valor nulo "" si no se cumple ninguno de los criterios.

 

Quizás estés pensando que, visto todo esto, a lo mejor al final va a resultar que es más fácil usar los SI() anidados. Pero SI.CONJUNTO() admite 127 pares criterio-valor, mientras que si usas la función SI() podrás anidar 7 funciones SI() en Excel 2003 y 64 funciones SI() en Excel 2007+, cada una dentro de la otra, lo que hace que los SI() anidados tengan muchos paréntesis. Además, acostumbrarse a usar la tabla de negaciones es, a la larga, más fácil que tener que pelearse con una fórmula con montones de paréntesis. Lo dice la experiencia.

 

Una vez visto el uso de la función SI.CONJUNTO() estándar, no matricial, vamos a ver su uso matricial que es lo que nos interesa.

 

Continuamos en el archivo "MasUsadasEnMatrices.xls" en la hoja "Resúmenes". Empezaremos usando la misma función que hemos usado, pero en formato matricial de Tipo 1. No es esto lo que nos interesa, sino que lo que nos interesa es usar una función de resumen SUMA matricial de Tipo 2. Pero, como todas las fórmulas matriciales de Tipo 2, primero hay que entender la fórmula matricial de Tipo 1 que tiene anidada. Sigue estos pasos:

  • Haz clic en J2 e introduce el texto "C001"
  • Selecciona desde I2 hasta I21
  • Pulsa la tecla SUPR para borrar su contenido
  • Asegúrate de que sigue seleccionado el rango desde I2 hasta I21 y, sin hacer clic en ningún sitio para que no se deshaga la selección, teclea la siguiente fórmula:

=SI.CONJUNTO(D2:D21<>J2;"";MES(B2:B21)>6;"";E2:E21>=500;E2:E21;VERDADERO;"")

  • Y acaba con CONTROL+MAYUSCULAS+ENTER

El resultado ha de ser igual que antes:

 

resultado005

 

La diferencia es que si haces clic en cualquier celda del rango I2:I21 la fórmula que aparecerá será una fórmula matricial de Tipo 1:

 

{=SI.CONJUNTO(D2:D21<>J2;"";MES(B2:B21)>6;"";E2:E21>=500;E2:E21;VERDADERO;"")}

 

 

0017-SI-CONJUNTO-01

 

 

Observa que J2 no tiene $. En las funciones matriciales de Tipo 1 cualquier referencia a una celda externa equivale a una referencia absoluta. Observa además que, como toda función matricial de Tipo 1, no hemos usado celdas sino rangos.

Ahora viene cuando, al fin, te pedimos lo que deseamos: te pedimos que calcules en la celda I22 la suma de las facturas del cliente que hay en J2, del primer semestre y con la cantidad mayor o igual que 500, sin usar celdas con valores intermedios. Esta vez te piden que el archivo sea compatible con Office 365 enero 2016 por lo que puedes usar la función SI.CONJUNTO(). Haz lo siguiente:

  • Haz clic en J2 e introduce el texto "C001"
  • Selecciona desde I2 hasta I21
  • Pulsa la tecla SUPR para borrar su contenido
  • Selecciona la celda I22
  • Pulsa la tecla SUPR para borrar su contenido
  • En la celda I22 teclea esta fórmula:

=SUMA(SI.CONJUNTO(D2:D21<>J2;"";MES(B2:B21)>6;"";E2:E21>=500;E2:E21;VERDADERO;""))

  • Y acaba con CONTROL+MAYUSCULAS+ENTER

El resultado ha de ser igual que antes pero sin celdas con cálculos intermedios a la vista:

 

resultado006

 

La fórmula en la celda I22 es una fórmula matricial de Tipo 2, es decir, una función de resumen, en este caso SUMA(), dentro de la cual hay una función matricial de Tipo 1, en este caso es exactamente la misma fórmula matricial de Tipo 1 que hemos usado antes.

Si vas cambiando el cliente en J2 el resultado también irá cambiando:

 

resultado007 

 

Nota: Observa que la fórmula anterior es equivalente a:

 

=SUMAR.SI.CONJUNTO(E2:E21;D2:D21;J2;B2:B21;"<"&FECHA(2018;7;1);E2:E21;">=500") y ENTER

 

Puedes usar cualquiera de ambas según te sea más cómodo.

 

No obstante, si te acostumbras a usar la función SI.CONJUNTO(), tendrás más posibilidades a la hora de crear fórmulas.

 

Por ejemplo, Excel no tiene una función SI CONJUNTO para obtener la desviación estándar con varios criterios, pero puedes crearla usando:

 

=DESVEST(SI.CONJUNTO( ............... ;VERDADERO;"")) y CONTROL+MAYUSCULAS+ENTER

 

Puedes hacer lo mismo con otras funciones como =MEDIANA(SI.CONJUNTO( ... ;VERDADERO;"")), =VAR(SI.CONJUNTO( ... ;VERDADERO;"")) y otras, siempre acabando con CONTROL+MAYUSCULAS+ENTER.

 

Lo importante, es tener en cuenta que la función SI.CONJUNTO() es una función destinada a reemplazar el uso de SI() anidados. SI.CONJUNTO() no evalúa todos los criterios a la vez como hacen el resto de las funciones SI CONJUNTO. De hecho podríamos decir que la función SI.CONJUNTO() no pertenece a la familia de las funciones SI CONJUNTO. Sin embargo, con este "truco" de negar todas las condiciones excepto la última, se puede usar como una función de la familia SI CONJUNTO.

 

 

Ahora hazlo tú:

Continuamos en el archivo "MasUsadasEnMatrices.xls" en la hoja "Resúmenes". Supón que te piden lo siguiente: usa la función SI.CONJUNTO() para obtener los siguientes cálculos: En la celda L6 calcula la suma de las facturas del cliente que hay en J2 que estén impagadas, entendiendo por "impagadas" que haya una "X" en la columna H. En la celda L7 calcula la suma de las facturas del cliente que hay en J2 que estén pagadas, entendiendo por "pagadas" que no haya una "X" en la columna H. En las celdas M6 y M7, exactamente lo mismo pero te pedimos el conteo de las facturas.

El resultado debería ser para el cliente C001:

 

resultado008

 

Por ejemplo, para C006:

 

resultado009

 

... etc...

 

Te damos una pista:

Las cuatro fórmulas no siguen un patrón, por tanto hay que hacer las cuatro una por una (no es una fórmula matricial Tipo 4), pero dado que serán muy similares, te podrás ahorrar de teclear si las copias y modificas. Las funciones de resumen serán SUMA() y CONTAR() introducidas con CONTROL+MAYUSCULAS+ENTER dentro de las cuales se pone una función SI.CONJUNTO() de Tipo 1 con rangos y no celdas. Cada función SI.CONJUNTO() tiene dos criterios: el primer criterio es negado, el segundo criterio no es negado. El primer criterio es si en la columna D2:D21 el cliente es el que hay en J2 pero este criterio ha de ser negado. El segundo criterio no es negado, pero es distinto según las celdas: en las celdas L6 y M6 el criterio es que H2:H21 sea igual a "X" y en las celdas L7 y M7 el criterio es que H2:H21 no sea igual a "X". Añade al final el tercer criterio opcional para que retorne "" si ningún criterio es VERDADERO.

 

Te damos la solución:

Nota: indicamos en color lo que cambia en cada fórmula con respecto a la anterior fórmula, así, copiando las fórmulas, puedes ahorrarte de teclear.

  • Haz clic en J2 e introduce el texto "C001"
  • Haz clic en L2
  • Teclea la fórmula:

=SUMA(SI.CONJUNTO(D2:D21<>J2;"";H2:H21="X";E2:E21;VERDADERO;""))

  • acaba con CONTROL+MAYUSCULAS+ENTER
  • Haz clic en L3
  • Teclea la fórmula:

=SUMA(SI.CONJUNTO(D2:D21<>J2;"";H2:H21<>"X";E2:E21;VERDADERO;""))

  • acaba con CONTROL+MAYUSCULAS+ENTER
  • Haz clic en M2
  • Teclea la fórmula:

=CONTAR(SI.CONJUNTO(D2:D21<>J2;"";H2:H21="X";E2:E21;VERDADERO;""))

  • acaba con CONTROL+MAYUSCULAS+ENTER
  • Haz clic en M3
  • Teclea la fórmula:

=CONTAR(SI.CONJUNTO(D2:D21<>J2;"";H2:H21<>"X";E2:E21;VERDADERO;""))

Y acaba con CONTROL+MAYUSCULAS+ENTER.

 

 

 

Continua en la siguiente entrega. Puedes también ir al Indice de los Minicursos o Volver arriba.

 

0 comentarios:

Publicar un comentario