Importante Excel Matricial
Importante Excel Matricial
Importante Excel Matricial
Introducción.
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.
Nota: Si ya tienes una idea de lo que son las matrices en Excel puedes
saltarte esta introducción e ir directamente a la Entrega 2.
Las matrices es uno de los temas más avanzados en lo que se refiere al programa
Excel. Las matrices son un tipo de fórmulas y funciones especiales, que se aplican
usualmente sobre listas, y que permiten realizar operaciones de resumen de datos
bastante complejas.
Usando fórmulas y funciones matriciales podemos hacer las mismas cosas que
una tabla dinámica y las funciones BD juntas, pero con más potencia.
Desconocer el funcionamiento de las matrices en Excel no es algo malo. La gran
mayoría de la gente usa Excel sin saber nada de matrices y lo usan muy bien.
Pero si alguna vez el jefe te pide que hagas una cuenta de cuántas personas han
hecho menos de tres cursos en un año, sin repetir la persona, o cuales son los
clientes con compras más cercanas a 10.000, tal vez resuelvas el problema en
una hora haciendo filtros, extracciones y conteos, o tal vez lo resuelvas en cinco
minutos usando alguna fórmula matricial sacada de internet.
Las fórmulas matriciales se diferencian de las fórmulas normales en que operan
con rangos, llamados aquí matrices. Es decir, estamos acostumbrados a, por
ejemplo, a multiplicar A3*B5, o a usar la función SI() con celdas, como por
ejemplo SI(A2>3;…..). Pero con las funciones matriciales podremos multiplicar
rangos como A5:B10*C5:D10, o podemos aplicar una función SI() a un rango
entero como =SI(A1:B100>3;…..). Otra diferencia es que se suelen introducir con
CONTROL + MAYUSCULAS + ENTER (CTRL + SHIFT + ENTER) en vez de con
un ENTER normal.
Las funciones matriciales nacieron de la necesidad de trabajar con listas y hacer
resúmenes sobre ellas que de otra manera serían más complicados, sino
imposibles.
Solamente cuando acabes de entender las fórmulas matriciales del Tipo 2
(Fórmulas de resumen), será cuando empieces a hacerte una idea clara de la
utilidad de las fórmulas matriciales. Antes no, por tanto, habrás de tener un poco
de paciencia.
Características básicas de las fórmulas matriciales
En las fórmulas matriciales, si se cambian los valores de los rangos afectados,
cambia el resultado automáticamente. Esto es igual que las funciones normales.
Las funciones matriciales suelen ser poco usadas, por lo que debe evitarse su uso
cuando una hoja de cálculo vaya dirigida a otras personas. En cambio, son una
herramienta excelente cuando se trata de analizar características complejas que
afectan a rangos de datos, por ejemplo, contar cuantos elementos sin repetir hay
en una lista de datos.
En vez de usar rangos normales (por ejemplo A1:F7), puedes usar nombres de
rangos, creados con la funcionalidad CTRL-F3.
Como hemos dicho, las fórmulas matriciales se suelen introducir con CONTROL +
MAYUSCULAS + ENTER (CTRL + SHIFT + ENTER) en vez de con un ENTER
normal.
En inglés queda más claro, ya que este tipo de fórmulas se denominan "array
formulas", entendiendo "array" (en inglés, "en hileras" o "en filas") como "un
conjunto de datos dispuestos en filas" o "un conjunto de datos en arreglo tabular",
es decir, lo que en Excel se denomina "una lista". Este es el tipo de matrices del
que hablaremos en este Minicurso.
En cambio, en inglés se denomina "matrix" (en plural "matrixes/matrices") a las matrices
aritméticas que estudiábamos en la escuela y de las que no hablaremos nada en este Minicurso.
Y hay más, pero que nosotros no usaremos, ya que son para operaciones
matriciales aritméticas de las que estudiábamos en la escuela,
como SUMAX2MASY2(), SUMAX2MENOSY2(), SUMAXMENOSY2(), COVAR() y otras.
Nota: en un teclado Mac también es válido usar + MAYÚS + ENTRAR.
Como resultado las fórmulas se ven entre llaves { } pero esas llaves no las
ponemos nosotros, las pone Excel al pulsar CONTROL+MAYUSCULAS+ENTER.
Por ejemplo:
Constantes matriciales
Se usan rara vez, pero lo explicamos aquí por si acaso. En las fórmulas normales,
podemos normalmente multiplicar A3*7 siendo 7 una constante. Pues bien, al igual
que en las fórmulas normales podemos incluir estos valores constantes, en las
fórmulas matriciales también podemos incluir valores constantes que se los
denomina constantes matriciales. Estas constantes matriciales son matrices, y
deberemos ponerlas entre llaves { y } (esta vez sí que tecleamos nosotros estas
llaves) e incluir un separador de columnas (símbolo ;) y un separador de filas
(símbolo \).
Por ejemplo, supongamos que tenemos estos datos en una hoja de cálculo:
Y yo quiero multiplicar lo siguiente: Primera fila: el 3 (B2) lo quiero multiplicar por
10; el 5 (C2) lo quiero multiplicar por 20; Segunda fila: el 7 (B3) lo quiero
multiplicar por 30; el 9 (C3) lo quiero multiplicar por 40. Pues entonces lo que hay
que hacer es:
=B2:C3*{10;20\30;40}
O sea, la constante matricial es: abrir llave, 10, separador de columna (;), 20,
separador de fila (\), 30, separador de columna (;) 40 y cierra llave.
Y esto da como resultado:
A las constantes matriciales se les puede dar un nombre con la funcionalidad
CTRL-F3. Por ejemplo:
Entonces podríamos usar la fórmula matricial:
=B2:C3*MiMatriz01
Todo esto explicado parece difícil, pero se aclarará cuando veamos unos
ejemplos.
Basta de teoría y comencemos con los temas prácticos.
Seleccionar el rango donde queremos que vaya el resultado (de ahí que se llame
multicelda, porque se necesita un rango).
Ejemplo:
Recuerda que estamos viendo las matrices de Tipo 1: rellenamos rangos con
valores sin usar ninguna función de resumen. Empezaremos con los operadores
básicos +, -, *, /.
Si ya has descargado los ejemplos, abre el archivo "MatricesTipo1.xls" y haz clic
en la hoja "MATRICES". Tiene que aparecer la hoja como sigue:
Como ves, hemos rellenado el rango desde A1 hasta J10 con unos números. Haz
lo siguiente:
Primero: vamos a rellenar el rango desde B12 hasta J20 con los valores que hay
en el rango desde B2 hasta J10 pero con cada valor dividido por 10. Haz lo
siguiente:
No hagas clic en ningún sitio, ya que desharía la selección, lo que teclees quedará
en la celda en blanco (B12). Teclea lo siguiente:
=B2:J10/10
Mira cómo se hace:
Observa que cada celda del rango de B12:J20 contiene el mismo valor que cada
celda del rango B2:J10 (la celda que está en la misma posición dentro del rango)
pero dividida por 10. A esto se lo denomina una operación matricial.
Por ejemplo, la celda C13 se corresponde con C3, por tanto C13 muestra el
resultado de C3/10. La celda G18 se corresponde con G8, por tanto G18 muestra
el resultado de G8/10, y así todas para todas las celdas del rango B12:J20.
Si haces clic en B12 verás la siguiente fórmula en la barra de fórmulas:
Que es la fórmula que has tecleado pero entre llaves { }. Y, de hecho, la fórmula
es la misma para cualquier celda del rango desde B12 hasta J20. Por ejemplo,
colócate en G16 y verás que es la misma fórmula, no cambia nada:
El resultado:
Igual que antes, toda la matriz del rango B2:J10 queda rellenada con la misma
fórmula. Esta fórmula es:
Pon un 3 en A12
El resultado es el mismo que antes, pero observa que, si hubiéses usado fórmulas
estándar (no matriciales), habrías tenido que poner $A$12 para obtener el
resultado correcto. Además, puedes ir cambiando este 3 por otros números y
verás cómo cambia la matriz.
Ve cambiando valores en B2:J10 y mira cómo va cambiando la matriz de
B12:J20.
Es evidente que para que la fórmula matricial funcione correctamente, los rangos
han de ser todos iguales. Si fuesen más pequeños, presentarían resultados
parciales y si fuesen más grandes darían resultados inválidos, el error #N/A. Pero
Excel no mostraría ningún mensaje de advertencia o algo similar.
Con esto multiplicamos cada número del rango B2:J10 con el correspondiente
número en la misma posición del rango B12:J20. El resultado debería ser:
y si haces clic en X12 o en cualquier lugar de la matriz resultante, verás la fórmula:
Si no te ha salido bien el resultado, haz clic aquí.
Podemos pues usar las fórmulas que queramos con diversos rangos, por ejemplo,
una fórmula matricial perfectamente válida podría ser:
=(A5:A10*C5:C10)/(M10:M15-7)
Pon un 3 en A12
y si haces clic en X12 o en cualquier lugar de la matriz resultante, verás la fórmula:
Mira cómo se hace:
Ejercicio más práctico
Hasta ahora todo ha sido muy teórico. Veamos un ejemplo más práctico.
Usaremos el modelo europeo en euros (€) y con el impuesto denominado IVA
(VAT en inglés). En la hoja "Cálculos" del mismo archivo "MatricesTipo1.xls",
veréis una factura con el código "FACTURA 001", en la cual hemos ido anotando
en cada fila estos datos: el código del producto vendido, la cantidad de unidades
vendidas, el precio por unidad, el descuento y el impuesto IVA:
Necesito lo siguiente: en la columna F quiero calcular la cantidad × precio, sin
tener en cuenta el IVA ni el descuento. Lo podríamos hacer con una multiplicación
normal, pero vamos a hacerlo matricialmente ya que estamos en el tema:
Acaba con CONTROL+MAYUSCULAS+ENTER.
El resultado ha de ser:
Excel ha calculado en la columna F el valor obtenido al multiplicar cada valor de la
columna B por el correspondiente valor en la misma posición de la columna C.
Guarda esta hoja ya que más adelante la necesitaremos.
Ahora hazlo tú:
Calcula matricialmente en la columna H el total de cada fila, pero ya con
descuento e IVA, la fórmula normal habría de ser:
=cantidad*precio unitario*(1–descuento%)*(1+IVA%)
Te damos una pista:
Clic aquí para ver
Te damos la solución:
Clic aquí para ver
hacerlo tecleando los rangos a mano o seleccionando los rangos con el mouse.
Efectivamente, solamente aparece una X en la parte derecha, si las
correspondientes celdas de la parte izquierda que están en la misma posición, son
iguales o mayores que 50. En cada celda del rango M2:U10 aparece la fórmula:
Observa que la fórmula SI() usa el rango B2:J10 para hacer la comparación:
B2:J10>=50 y el resultado en el rango M2:U10 se presenta calculado celda por
celda.
En las fórmulas matriciales, Excel se encarga de ejecutar la misma fórmula
individualmente en cada celda de los rangos utilizados.
Recuerda que las fórmulas matriciales cambian al cambiar los valores de la hoja,
igual que las fórmulas normales.
Ve cambiando valores de B2:J10 para ver cómo cambian las X de M2:U10.
Mira cómo se hace:
Observa que, nuevamente, hemos cumplido las normas de una fórmula matricial:
cuando yo le he dicho a Excel que quiero que me devuelva la celda original si es
mayor o igual que 50, no he puesto ninguna celda, he puesto nuevamente el rango
de las celdas a devolver, es decir:
=SI(B2:J10>=50;B2:J10;0)
Haz lo siguiente:
Fíjate que en este caso la fórmula usa un rango para comparar, pero devuelve los
valores de otro rango distinto. En total hemos necesitado 3 rangos: los rangos
M12:U20 y B12:J20 que aparecen en la fórmula pero también el rango M22:U30
que hemos usado para poner la fórmula.
Te damos una pista:
Clic aquí para ver
Te damos la solución:
Clic aquí para ver
Continua en la siguiente entrega. Puedes también ir al Indice de los Minicursos o Volver arriba.
Hasta ahora, todo es lo mismo que hemos visto en el apartado de fórmulas
matriciales de Tipo 1. Ahora haz lo que sigue:
normal.
Es decir, la fórmula que hemos tecleado junto con las llaves { y } que pone Excel
para indicar que es una fórmula matricial.
Como puedes ver, el resultado es exactamente el mismo en la celda V10 y en la
celda V11.
Puedes ir cambiando valores del rango B2:J10 y verás cómo ambas fórmulas dan
el mismo resultado.
Mira cómo se hace:
Por tanto, hemos de extraer esta conclusión. En las matrices de Excel, es lo
mismo:
En ambos casos obtengo la suma de todos los elementos de una matriz que sería
el resultado de restar 3 a cada valor del rango desde B2 hasta J10. La diferencia
es que:
en la opción 1, la matriz que tiene la copia del rango B2:J10 menos 3, está a la
vista en la hoja, y ocupa el rangoX.
en la opción 2, la matriz que tiene la copia del rango B2:J10 menos 3 no se ve, la
calcula Excel y la pone en algún lugar de la memoria de la computadora sin que
nosotros la veamos.
CONTROL+MAYUSCULAS+ENTER.
Y también:
En esta hoja "Cálculos" deseo obtener, en una sola celda y usando una sola
función matricial, la suma de cantidad × precio unitario de todas las filas.
Usaremos la celda F27. Sigue estos pasos:
Clic en F27
Teclea la fórmula =SUMA(B3:B24*C3:C24) puedes hacerlo tecleando los rangos a
Es decir, la fórmula que hemos tecleado junto con las llaves { y } que pone Excel
para indicar que es una fórmula matricial.
¿Es correcta esa suma? ¿Cómo lo comprobamos?
Podemos comprobar que el resultado es correcto volviendo a la fórmula matricial
de Tipo 1 que ya hicimos en el tema anterior y calcular la suma de la columna F.
Por tanto , abre nuevamente el archivo del anterior "MatricesTipo1.xls" y ve a la
hoja "Cálculos". Recuerda que dijimos que la guardases así que tienes que tener
esto:
(Si no tienes esto selecciona el rango F3:F24 teclea la fórmula =B3:B24*C3:C24 y acaba con CONTROL+MAYUSCULAS+ENTER)
Ahora haz clic en F25 y teclea la fórmula estándar =SUMA(F3:F24) acabada con
ENTER. El resultado ha de ser igualmente 233850.
Puedes ir cambiando algunos valores de las columnas B o C en las hojas
"Calculo" de ambos archivos "MatricesTipo1.xls" y "MatricesTipo2.xls" y verás
cómo cambia el total y cómo el resultado es el mismo en ambas hojas.
Observa que este total de la fórmula matricial =SUMA(B3:B24*C3:C24) que
hemos obtenido en el archivo "MatricesTipo2.xls", se ha obtenido en una sola
celda y sin usar celdas con cálculos intermedios. La fórmula matricial que
hemos usado en "MatricesTipo2.xls" es la misma fórmula del Tipo 1 usada en el
archivo "MatricesTipo1.xls": B3:B24*C3:C24, pero con la diferencia de que se le
ha añadido la función de resumen SUMA() y ,en este caso, Excel primero calcula
la matriz B3:B24*C3:C24 y luego suma todos los elementos de esta matriz.
Por tanto, para usar una función matricial de resumen de Tipo 2, es conveniente
pensar primero en la operación matricial del Tipo 1 que tendríamos que hacer,
luego esta misma operación se pone como parámetro dentro de la función de
resumen y se acaba con CONTROL+MAYUSCULAS+ENTER.
Es decir, en matrices, es lo mismo:
En ambos casos obtengo la suma de todos los elementos de una matriz que sería
el resultado de multiplicar cada valor del rango1 por su correspondiente valor en la
misma posición del rango2. La diferencia es que:
con CONTROL+MAYUSCULAS+ENTER.
Y también:
Por tanto, para entender bien las fórmulas matriciales de resumen del Tipo 2 hay
que entender bien primero las del Tipo 1. Quizás las fórmulas matriciales de Tipo 1
no se usen mucho, o se puedan sustituir fácilmente por funciones normales, pero
las fórmulas matriciales de Tipo 2 no pueden sustituirse por funciones normales y
requieren haber entendido bien las de Tipo 1.
Ahora hazlo tú:
Obtén en la celda H27 de la hoja "Cálculos" del archivo "MatricesTipo2.xls", la
suma del cálculo:
=cantidad*precio unitario*(1–descuento%)*(1+IVA%)
para todas las filas del rango B3:E24 usando una sola fórmula matricial en H27 sin
usar celdas con cálculos intermedios. Usa SUMA() como función de resumen. El
resultado debería ser:
239209,615
Te damos una pista:
Clic aquí para ver
Te damos la solución:
Clic aquí para ver
Para calcular una fórmula de resumen matricial, Excel hace primero internamente
los mismos cálculos que haríamos nosotros con una fórmula de Tipo 1, Excel
memoriza el resultado en una matriz en la memoria de la computadora (nosotros
no vemos esa matriz) y luego aplica la función de resumen a esa matriz (es decir,
a los elementos de esa matriz) y muestra el resultado.
Esto hace que las fórmulas matriciales vayan más lentas que las demás, esto se
nota mucho si los rangos con los que trabajamos son muy grandes, notaremos
que Excel va más lento de lo normal.
Queda claro pues que, si no se ha entendido bien las matrices de Tipo 1,
difícilmente se va a entender las de Tipo 2. Si es necesario, repasa el tema
anterior hasta que lo entiendas bien.
Ahora hazlo tú:
En la hoja "MATRICES" del archivo "MatricesTipo2.xls" obtén en la celda J22 el
promedio del rango B2:J10 pero multiplicando cada elemento de dicho rango por 3
y sin usar celdas con valores intermedios. El resultado en J22 debería ser (con los
datos que había en el rango B2:J10 al abrir el archivo):
108
Te damos una pista:
Clic aquí para ver
Te damos la solución:
Clic aquí para ver
Es por eso que trataremos la función SI() como un subtema especial en las
matrices de Tipo 2 en la siguiente Entrega.
Fíjate que la función de resumen es SUMA() y que la operación que hay dentro es
una operación matricial SI(), que es la misma que hemos puesto en el tema
anterior, en el archivo "MatricesTipo1.xls", en el rango M12:U20. Por tanto, podéis
comprobar si está bien sumando este rango calculado en el tema anterior con una
suma estándar.
En este caso concreto tenemos que es lo mismo:
Y también:
Clic en L2
El resultado en L2 es:
6.222
Mira cómo se hace:
La función SI() matricial devuelve los valores del rango E2:E21 que cumplan que
la correspondiente fila del rango D2:D21 sea C001, igual que si se tratase de una
fórmula matricial de Tipo 1, luego esos valores devueltos son sumados por la
función de resumen SUMA(). Dicho de otra manera, me suma las cantidades
facturadas por el cliente C001. En este caso concreto tenemos que hubiera sido lo
mismo:
lo que hemos hecho, es decir, usar directamente en una sola celda, en L2, la
función =SUMA(SI(D2:D21="C001";E2:E21;0)) y acabarla con
CONTROL+MAYUSCULAS+ENTER.
Y también:
Se trata del primer ejemplo que hemos hecho directamente usando la función de
resumen sin habernos entrenado antes en hacer la matriz intermedia de Tipo 1. A
partir de ahora los haremos ya todos así, directamente usando la función de
resumen matricial de Tipo 2 con la función matricial de Tipo 1 dentro. Ya no
haremos previamente la de Tipo 1.
Sin embargo, solamente en este ejemplo y con la finalidad de que entiendas
mejor el uso matricial de la función SI(), haremos el paso inverso, es decir,
desde la función matricial de Tipo 2 hacia la función matricial de Tipo 1. Así verás
cuál es la matriz que Excel mantiene en la memoria de la computadora (la que no
se ve) y verás por qué al sumar los elementos de esa matriz que no se ve,
obtenemos la suma de las cantidades solamente del cliente "C001". Usaremos
como rango provisional las celdas desde I2 hasta I21. Recuerda que seguimos en
el archivo "MatricesTipo2.xls" con las pestañas de color naranja en la hoja
"Resúmenes". Sigue estos pasos:
Selecciona el rango I2:I21
Sin hacer clic en ningún sitio para que no se deshaga la selección, teclea la
fórmula =SI(D2:D21="C001";E2:E21;0)
Observa que en la columna I se repiten los valores de la columna E, pero
solamente aquellos valores que en la columna D tienen el valor "C001" en la
misma posición. Aquí los hemos marcado en colores:
Si sumas los valores de este rango con una suma convencional (no matricial)
verás que el resultado es el mismo: 6222. Esta matriz que ves ahora en el rango
I2:I21 es, pues, la matriz de Tipo 1 que Excel mantiene invisible en la memoria de
la computadora y que sirve como parámetro para las fórmulas matriciales de Tipo
2.
Borra esta matriz dado que no nos es útil: selecciona desde I2 hasta I21 y pulsa
la tecla SUPR.
Veamos un ejemplo más:
Vamos a sumar todas las facturas impagadas de todos los clientes. Hemos dicho
que las impagadas son las facturas que tienen una X roja en la columna H. En
este ejemplo usaremos una simplificación que se usa mucho en el mundillo de las
matrices en Excel que consiste en no poner el cero del tercer parámetro a la
función SI(). El resultado será el mismo que si se pusiese ese cero. Veamos:
Haz clic en L7
tecleando los rangos a mano o seleccionando los rangos con el mouse. Observa
que la función SI() tiene solamente dos parámetros, no hemos puesto
el "SI(....;0)" que hemos usado hasta ahora.
El resultado en L7 es:
4.281
Observa que no cambia nada de lo que hemos dicho acerca de las funciones
matriciales de Tipo 2: es una función de resumen SUMA() dentro de la cual
colocamos la operación matricial de Tipo 1. En este ejemplo la fórmula matricial de
Tipo 1 es la siguiente, resaltada en color:
=SUMA( SI(H2:H21="X";E2:E21) )
Clic en M3
Teclea =CONTAR(SI(C2:C21=30;E2:E21))
Puedes ver una vez más que el SI() devuelve las celdas del rango E2:E21 que
están en la misma posición que las que tienen un 30 en el rango C2:C21, y la
función CONTAR() va contando todos los elementos devueltos si son un número.
Aquí te lo marcamos en color para que lo veas mejor. Puedes contar a ojo cuántos
valores 30 hay:
En este caso concreto tenemos que hubiera sido lo mismo:
lo que hemos hecho, es decir, usar directamente en una sola celda, en M3, la
función =CONTAR(SI(C2:C21=30;E2:E21)) y acabarla con
CONTROL+MAYUSCULAS+ENTER.
Y también:
en el primer caso se hubiera visto la matriz con los valores intermedios en rangoX
y se hubieran visto los elementos de esa matriz que luego sumaríamos.
Como siempre que se usa la función CONTAR() hay que tener la precaución de que
el rango a contar, en este caso E2:E21, ha de tener solamente números, no puede
tener filas vacías ni tener texto, o no contará bien. Por ejemplo la
fórmula =CONTAR(SI(C2:C21=30;D2:D21)) no daría un resultado correcto porque en
D2:D21 hay textos.
Es por eso que en el mundillo de las matrices de Excel se prefiere usar la
función SUMA() para... ¡contar! Veamos.
Teclea =SUMA(SI(C2:C21=30;1;0))
Nota: se puede simplificar la fórmula como =SUMA(SI(C2:C21=30;1)) y el resultado
seguirá siendo 13:
Este truco de contar usando la función SUMA(SI(...;1)) se usa mucho en el
mundillo de las matrices de Excel, por tanto, conviene saberlo cuando busques
funciones matriciales por internet ya que, en muchos casos, cuando veas la
función SUMA() matricial de Tipo 2, a lo mejor no están sumando ¡están
contando!
=MIN(SI(D2:D21="C001";E2:E21))
=MIN(SI(D2:D21="C001";E2:E21;""))
y nunca habrá que usar esta porque dará un resultado erróneo:
Teclea =SUMA(SI(D2:D21=J2;E2:E21))
Y acaba con CONTROL+MAYUSCULAS+ENTER.
Clic en M2
Teclea =CONTAR(SI(D2:D21=J2;E2:E21))
Y acaba con CONTROL+MAYUSCULAS+ENTER.
Da el mismo resultado que antes 6.222. La diferencia es que ahora si cambio el
valor de J2 por otro cliente, la suma también cambiará: C001 da 6.222, pero si
ponemos en J2 C002 en L2 sale 2.460:
Si ponemos en J2 C003, en L2 sale 1.237:
... y así sucesivamente con todos los clientes.
Fíjate que también el conteo de facturas en M2 van cambiando.
También podríamos sustituir el 30 por una celda externa que contuviese el valor
de 30 para contar las facturas a 30 días. En este caso podríamos usar la celda K3
y poner en M3 la fórmula matricial =SUMA(SI(C2:C21=K3;1)), observa que el cliente
en J2 no influye en el resultado:
Si cambiáis el valor de la celda K3 por 60 o por 90 el valor en M3 también irá cambiando.
Mira cómo se hace:
Continua en la siguiente entrega. Puedes también ir al Indice de los Minicursos o Volver arriba.
Nota: si estás usando una versión en inglés aparece la palabra "array".
Para ver su uso, vamos a recordar que, en el tema anterior, en el archivo
"MatricesTipo2.xls", nos poníamos en la hoja "Cálculos" y calculábamos la suma
de las facturas en una sola celda con la fórmula matricial =SUMA(cantidad*precio
unitario) acabada con CONTROL+MAYUSCULAS+ENTER. Ahora,
usando =SUMAPRODUCTO(cantidad*precio unitario), podremos acabar con un
ENTER normal para hacer los cálculos.
Lo vamos a comprobar rápidamente. En el archivo "MatricesTipo3.xls" en la hoja
"Cálculos":
Hemos puesto las pestañas de las hojas de color amarillo para evitar confusiones
con los otros archivos. Teclea las siguientes fórmulas en esta hoja "Cálculos":
Teclea la fórmula =SUMAPRODUCTO(B3:B24*C3:C24)
Teclea la fórmula =SUMAPRODUCTO(B3:B24*C3:C24*(1-D3:D24)*(1+E3:E24))
¡Y todo sin pulsar CONTROL+MAYUSCULAS+ENTER!
Mira cómo se hace:
La función SUMAPRODUCTO() es en realidad una función que usa varias matrices:
=SUMAPRODUCTO(rango1;rango2;rango3;....)
Lo que hace es multiplicar los elementos que están en la misma posición en todas
las matrices, y luego suma los elementos de la matriz resultante. Sin embargo, si
se usa con un solo rango:
=SUMAPRODUCTO(rango)
entonces lo que hace la función es limitarse a sumar los elementos de esa
matriz. Con este truco, podemos usar SUMAPRODUCTO(rango) y ENTER, como
sustitución de SUMA(rango) y CONTROL+MAYUSCULAS+ENTER, lo cual es
más cómodo de usar en el mundillo de las matrices en Excel.
Además, las dos fórmulas siguientes son totalmente equivalentes:
=SUMAPRODUCTO(rango1;rango2;rango3;...;...;...) y ENTER
=SUMAPRODUCTO(rango1*rango2*rango3*...*...*...) y ENTER
Esto es debido a que en la primera de ellas es la propia función SUMAPRODUCTO() la
que multiplica las matrices y luego suma los elementos de la matriz resultante. En
la segunda, somos nosotros quienes formulamos la multiplicación
y SUMAPRODUCTO() se limita a sumar el resultado.
Al igual que en el tema anterior, en este caso concreto tenemos que hubiera sido
lo mismo:
lo que hemos hecho, es decir, usar directamente en una sola celda, en este caso
F27, la función =SUMAPRODUCTO(B3:B24*C3:C24) y acabarla con ENTER.
Y también:
en el primer caso se hubiera visto la matriz con los cálculos intermedios en rangoX
y se hubieran visto los elementos de esa matriz que luego sumaríamos.
Por tanto, no hay diferencia en realidad entre las operaciones matriciales de Tipo 2
y las de Tipo 3, lo que pasa es que son más cómodas, no necesitan
CONTROL+MAYUSCULAS+ENTER y son más asequibles para todo el mundo, ya
que el tema de las matrices siempre es difícil.
Ahora hazlo tú:
Teniendo en cuenta que SUMAPRODUCTO(rango1;rango2;rango3;rango4) multiplica
ordenadamente los elementos de los rangos (los primeros con los primeros, los
segundos con los segundos, los terceros con los terceros...) y luego suma estas
multiplicaciones, te proponemos que compruebes por ti mismo que las siguientes
dos fórmulas matriciales son equivalentes:
=SUMAPRODUCTO(B3:B24*C3:C24*(1-D3:D24)*(1+E3:E24)) y ENTER
=SUMAPRODUCTO(B3:B24;C3:C24;(1-D3:D24);(1+E3:E24)) y ENTER
Ahora hazlo tú:
Seguimos en el archivo "MatricesTipo3.xls" con las pestañas de color amarillo. Ve
a la hoja "Pagar" donde verás una lista de personas cada una de las cuales ha
trabajado una ciertas horas a un cierto precio/hora:
Te pedimos que, en la celda B21, pongas una fórmula matricial que calcule el total
a pagar (para todas las personas) sin usar celdas con cálculos intermedios y sin
usar CONTROL+MAYUSCULAS+ENTER. El resultado debería ser:
21.925,00 €
Te damos una pista:
Clic aquí para ver
Te damos la solución:
Clic aquí para ver
Observa que la prueba lógica va entre comillas porque la prueba lógica se ha de
poner en forma de texto, pero por lo demás se usan los operadores lógicos
normales = , > , >= , < , <= , <>. En el caso del operador igual (=) puede
sustituirse por no poner ningún operador.
Como podemos ver sólo hay 1 criterio o prueba lógica, por lo que tampoco se
pueden hacer cosas sofisticadas. La prueba lógica se aplica a los mismos
elementos del rango a contar.
No es una función matricial estrictamente hablando, porque en la ayuda contextual
de Excel al teclear la fórmula no aparece la palabra "matriz":
Pero a pesar de ello, en este Minicurso la consideraremos como matricial por su
capacidad de trabajar ordenadamente con rangos.
Veamos unos ejemplos. Seguimos en el archivo "MatricesTipo3.xls" y vamos a la
hoja "Resúmenes". Vamos a contar las facturas que tengan un plazo de 30 días,
para hacerlo bastaría con contar cuántos 30 hay en la columna C. Vamos a poner
la fórmula provisionalmente en L6 que sería:
Haz clic en L6
Teclea la fórmula =CONTAR.SI(C2:C21;"=30")
Si te piden cuántas facturas hay a 60 días "y" a 90 días, hay que tener en cuenta
que muchas veces en el lenguaje hablado, cuando se dice la palabra "y", en
realidad se está diciendo "más" o "sumadas". Por tanto, en este caso concreto, te
estarían pidiendo "cuántas facturas hay a 60 días más cuántas a 90 días". Para
conseguirlo, provisionalmente, teclea cualquiera de estas fórmula en L6:
Haz clic en L6
Por tanto, la ventaja de CONTAR.SI() es que puede contar tanto números y textos.
Lo que diferencia contar números o textos cómo pongas la prueba lógica.
Por ejemplo, vamos a hacer un conteo de las facturas del cliente C001, para
hacerlo bastaría con contar cuántos textos "C001" hay en la columna D. Vamos a
poner la fórmula en L6 que sería:
Haz clic en L6
Pero como hemos dicho que podemos obviar el operador igual (=), la siguiente
función es equivalente:
=CONTAR.SI(D2:D21;"C001") y ENTER
En cambio, no podemos quitar las comillas porque es un texto.
Pero sí que podemos poner el "C001" en una celda externa, por tanto la siguiente
función es equivalente:
=CONTAR.SI(D2:D21;J6) y ENTER
En los tres casos ha de dar como resultado:
8
Te damos la solución:
Clic aquí para ver
Ahora hazlo tú:
Seguimos en el archivo "MatricesTipo3.xls" y vamos a la hoja "Pagar".
Necesitamos contar cuántas personas han trabajado 40 ó más horas. Pon el
conteo en la celda F3. El resultado debería ser:
6
Te damos una pista:
Clic aquí para ver
Te damos la solución:
Clic aquí para ver
SUMAR.SI() usa dos rangos: el rango que está a la izquierda de la prueba lógica
que es el rango sobre el que aplicamos dicha prueba lógica, y el rango que está a
la derecha de la prueba lógica que es el rango cuyas celdas sumamos.
Ha de quedar claro que SUMAR.SI() no sumará todas las celdas del rango de la
derecha: solamente sumará las celdas que estén en la misma posición que las
celdas del rango de la izquierda que cumplan la prueba lógica.
En el caso de que el rango a comparar y el rango a sumar sean el mismo rango,
no hace falta poner el rango a sumar.
Observar que la prueba lógica va entre comillas porque la prueba lógica se ha de
poner en forma de texto, pero por lo demás se usan los operadores lógicos
normales = , > , >= , < , <= , <>. En el caso del operador igual (=) puede
sustituirse por no poner ningún operador.
Como podemos ver sólo hay 1 criterio o prueba lógica, por lo que tampoco se
pueden hacer cosas sofisticadas. La función SUMAR.SI() no puede usarse para
contar, como hacíamos con SUMA(SI(...;1;0)), es decir, no podemos usar
ningún "truco" para hacer conteos usando la función SUMAR.SI().
SUMAR.SI() tampoco es una función estrictamente matricial:
Pero a pesar de ello, en este Minicurso la consideraremos como matricial por su
capacidad de trabajar ordenadamente con rangos.
Vamos a aclararlo con un ejemplo. Seguimos en el archivo "MatricesTipo3.xls" en
la hoja "Resúmenes" y vamos a sumar la cantidad (columna E) de las facturas de
30 días, o sea, las facturas que en la columna C tengan un 30. Poner
provisionalmente en L6 la siguiente fórmula:
Haz clic en L6
Teclea la fórmula =SUMAR.SI(C2:C21;"=30";E2:E21)
Para ver más claramente qué celdas del rango E2:E21 ha sumado la función
SUMAR.SI(), te las mostramos coloreadas en verde:
Como hemos dicho, la fórmula =SUMAR.SI(C2:C21;"=30";E2:E21) suma las celdas
de la columna E que están en la misma posición que los 30's de la columna C.
Mira cómo se hace:
Recuerda que cuando el operador lógico es un igual (=) no hace falta poner el
signo igual (=) si no quieres y, si además de ser un igual (=), la prueba lógica es
para comparar números, podemos obviar las comillas. Por tanto, la siguiente
fórmula es equivalente a la que acabáis de teclear en L6:
=SUMAR.SI(C2:C21;30;E2:E21)
Ahora, vamos a sumar la cantidad (columna E) de las facturas del cliente C001, o
sea, las facturas que en la columna D tengan el texto C001. Pon en L6 la siguiente
fórmula:
Haz clic en L6
Teclea la fórmula =SUMAR.SI(D2:D21;"C001";E2:E21)
Al igual que con CONTAR.SI() podemos usar el criterio en una celda externa, por
ejemplo, podemos poner C001 en J6 y poner esta fórmula en M6:
Haz clic en M6
Teclea la fórmula =SUMAR.SI(D2:D21;J6;E2:E21)
Teclea la fórmula:
=SUMAR.SI(D2:D21;"C001";E2:E21)+SUMAR.SI(D2:D21;"C002";E2:E21)+SUMAR.SI(D
2:D21;"C003";E2:E21)
Te damos una pista:
Clic aquí para ver
Te damos la solución:
Clic aquí para ver
Continua en la siguiente entrega. Puedes también ir al Indice de los Minicursos o Volver arriba.
Con el tiempo, los usuarios de Excel solicitaron a Microsoft que incluyese nuevas
funciones que permitiesen poner varias pruebas lógicas para así poder hacer
cálculos potentes pero de manera sencilla. De este modo, a partir de la versión
Excel 2007, Microsoft añadió a Excel las denominadas funciones SI CONJUNTO,
que son una serie de funciones condicionales que admiten hasta 127 criterios o
pruebas lógicas. Estas funciones SI CONJUNTO son:
(*) En el momento de crear este Minicurso aún no existía una versión de Office de
escritorio independiente de Office 365 que implementase estas funciones.
Nuevamente, estas funciones SI CONJUNTO no son estrictamente matriciales,
pero aquí las trataremos como matriciales. De hecho, hasta la versión Excel 2003
inclusive (antes de que existiesen estas funciones SI CONJUNTO) era obligatorio
usar fórmulas matriciales para trabajar con criterios múltiples, como veremos
dentro de un momento.
Estas funciones SI CONJUNTO están pensadas para ser usadas en listas de
Excel. Una lista de Excel equivale a organizar en columnas muchos elementos
de una misma entidad, como si fuese una tabla de Access. Por ejemplo, una lista
de Estudiantes, una lista de Profesores, una lista de Trabajadores, una lista de
Proveedores, una lista de Productos, una lista de Facturas... Por ello, veremos los
ejemplos de todas estas funciones sobre una serie de listas que hemos preparado
en el archivo de Excel 2007, con extensión xlsx, con el nombre de
"FuncionesSiConjunto.xlsx". Este archivo no se puede abrir en Excel 2003. La hoja
"funciones SI CONJUNTO" debe tener este aspecto:
Esta hoja contiene una lista de facturas en sistema europeo en euros (€), con su
fecha de emisión, plazo de pago en días, código de Cliente, cantidad, y si está
pagada, vencida. Si una factura no está pagada y está vencida se considera
impagada.
También tiene la hoja "Cine":
Esta hoja contiene una lista de películas con su director, protagonista, año,
valoración en IMDB.com, número de votantes en IMDB.com, país, productora y un
supuesto número de disco externo donde está la película.
Usaremos estas dos hojas para hacer cálculos con las funciones multicriterio SI
CONJUNTO que salieron a partir de la versión Excel 2007.
Nota: En Excel, como en Access o cualquier base de datos, existe el concepto
de "tabla", pero, estrictamente hablando, una "tabla" en Excel tiene más
funcionalidades que una "lista". Las listas en Excel son más simples.
Vamos a verlas todas ellas. Haremos una subdivisión en dos partes de este
tema:
- En la primera parte veremos las funciones SI CONJUNTO que se añadieron a
partir de Excel 2007, con lo que necesitaréis la versión Excel 2007 o mayor para
poder verlas.
La versión Office 2007+ (2007, 2010, 2013, 2016, 365) es la que deberíais usar ya
que la versión de Office 2003 se encuentra descatalogada y puede dar problemas
de seguridad. Office 2003 es, además, muy ineficiente para trabajar en una
empresa si lo comparamos con Office 2007+.
- En la segunda parte veremos las funciones SI CONJUNTO que se añadieron a
partir de Office 365 versión Enero 2016 (Versión 16.0.7070.2036), con lo que
necesitaréis esta versión o superior para poder verlas.
La versión Office 365 es un servicio de suscripción de "MS Office en la nube" por
medio del cual se tiene acceso a MS Office desde cualquier dispositivo con acceso
a Internet, si bien también se puede instalar una copia en local en un dispositivo y
trabajar sin necesidad de Internet. Office 365 requiere una suscripción de pago y,
dado que la copia local ha de hacerse a través de la suscripción, nosotros no
tenemos acceso a una versión de prueba gratuita de Office 365.
No obstante, si tienes acceso a Internet con tarifa plana, puedes usar Office
Online Gratuito, también conocido como Microsoft OneDrive, que te permite
crear documentos de Excel en la nube con una versión más simple que la versión
de pago. Para acceder a Microsoft OneDrive ve al sitio web:
https://onedrive.live.com/
... haz clic en la opción "Suscríbete gratuitamente" y crea una cuenta
"[email protected]" o bien xxx@outlook.[tu país]. Entonces usa la opción "Nuevo
→ Libro de Excel". El inconveniente de Microsoft OneDrive es que las fórmulas
hay que teclearlas en inglés. Por ello, en este Minicurso, indicaremos la manera de
introducir la fórmula en inglés. En inglés los parámetros de una función van
separados por comas (,).Tienes un listado de equivalencias de nombres de
funciones en inglés y español en el sitio web:
http://www.piuha.fi/excel-function-name-translation/index.php?page=espanol-
english.html
Mira cómo se hace:
Nota: Si queréis estar informados de qué funciones nuevas se incorporarán a
Excel y en qué fecha, podéis visitar el sitio web "Hoja de Ruta de Excel" (en
inglés):
http://fasttrack.microsoft.com/roadmap
Incluso, si os atrevéis, podéis sugerir la incorporación de nuevas fórmulas que
vosotros creáis que son necesarias. Microsoft recibirá vuestra sugerencia y la
sopesará. Esto se hace en el sitio web "La Voz del Usuario" (en inglés):
https://excel.uservoice.com/
Función CONTAR.SI.CONJUNTO() para versiones
Excel 2007 y posteriores
Su sintaxis es:
=CONTAR.SI.CONJUNTO(rango de datos a contar;"criterio a comprobar en ese
rango";otro rango de datos;"otro criterio para ese rango";otro rango de
datos;"otro criterio para ese rango";...)
Nota: En inglés es =COUNTIFS(rango,"criterio",rango,"criterio",...)
CONTAR.SI.CONJUNTO() hace un conteo de cuántos elementos de una lista cumplen
uno o más criterios (pruebas lógicas) que se comprueban en una o varias
columnas de la lista. Observa que a la derecha de cada rango está el criterio a
comprobar en ese rango. Se puede poner hasta 127 rangos con sus
correspondientes 127 criterios. Entre estos 127 rangos se pueden repetir rangos
pero poniendo criterios distintos.
Los criterios siguen la misma sintaxis que hemos visto hasta ahora: los criterios o
pruebas lógicas van entre comillas porque las pruebas lógicas se han de poner
en forma de texto, pero por lo demás se usan los operadores lógicos normales
= , > , >= , < , <= , <>. En el caso del operador igual (=) puede sustituirse por no
poner ningún operador y además puede ponerse el valor de comparación en una
celda externa.
Si has descargado los ejemplos, abrir el archivo "FuncionesSiConjunto.xlsx" en la
hoja "funciones SI CONJUNTO".
Vamos a hacer un conteo con más de un criterio, empezaremos por poner dos
criterios: contaremos en la celda K6 cuántas facturas no pagadas tiene el cliente
C001. Es decir, las dos pruebas lógicas son: que en la columna D haya un "C001"
y que en la columna F haya un "NO". Sigue estos pasos:
hacerlo tecleando los rangos a mano o seleccionando los rangos con el mouse
El resultado ha de ser:
7
Es decir, hay 7 facturas del cliente C001 no pagadas. Fíjate en que esta función
no tiene un parámetro que sea "rango a contar", simplemente el conteo se hace en
los mismos rangos en los que se ponen los criterios. Los rangos son comprobados
por columnas y cuando una fila de la lista cumple todos los criterios, se añade a la
cuenta.
Para ver más claramente qué celdas ha contado la función CONTAR.SI.CONJUNTO(),
te las mostramos coloreadas en verde:
Hemos coloreado primero en amarillo todas las filas con un C001 en la columna D,
luego en amarillo todas las filas con un NO en la columna F, y por último, y, por
último, las filas que coinciden que son amarillas a la vez en las columnas D y
F, las hemos señalado en verde, que son las que entran en el conteo.
Dado que los criterios son comparación de igualdad (=), podemos obviar el signo
igual y además podemos poner el parámetro del criterio en una celda externa, en
este caso podemos usar las celdas K2 y K3. Sigue estos pasos:
hacerlo tecleando los rangos a mano o seleccionando los rangos con el mouse
Y acaba con un ENTER normal.
Es decir, hay 7 facturas del cliente C001 no pagadas. Pero si vas cambiando el
contenido de las celdas K2 y K3, el resultado en K6 también va cambiando.
Puedes ir probando con valores de C001 hasta C006 en K2 y con valores SI o NO
en K3. Por ejemplo, C001 y SI da un valor de 1 en K6, C002 y SI da un valor de 3
en K6, C002 y NO da un valor de 1 en K6, etc.
Mira cómo se hace:
Nota: Tal como hemos dicho, para conseguir el mismo resultado en Excel 2003,
antes de que existiesen las funciones SI CONJUNTO, habría que haber usado la
siguiente fórmula de lógica matricial:
=SUMA((D2:D21=K2)*(F2:F21=K3)) y CONTROL+MAYUSCULAS+ENTER
o bien
=SUMAPRODUCTO((D2:D21=K2)*(F2:F21=K3)) y ENTER
... pero el tema de la lógica matricial lo veremos más adelante.
Recuerda que puedes poner hasta 127 pares de rango-criterio. Vamos a probar
con 4 criterios. Supón que te piden que pongas en la celda K6 cuántas facturas
hay del cliente C001 pagadas pero solamente las facturas del año que hay en la
celda L1. Aunque a primera vista no lo parezca, esto implica poner 4 criterios, esto
es debido a que para filtrar las facturas que sean de un cierto año, hay que poner
2 criterios: que la fecha en la columna B sea mayor o igual que el 1 de enero de tal
año y, al mismo tiempo, que la fecha en la columna B sea menor o igual que el 31
de diciembre de tal año. Si a esto añadimos los otros dos criterios de que la
columna D tenga un C001 y la columna F tenga un SI, da un total de 4 criterios.
Resumiendo, necesitamos contar cuántas filas de la lista de facturas cumplen lo
siguiente:
y...
Recordemos que en Excel, dentro de una fórmula, se puede poner una fecha entre
comillas para hacer criterios (por ejemplo "31/12/2010"), pero ello no es en
absoluto aconsejable porque cada país tiene un formato de fecha diferente y el
orden de "día/mes/año" no es válido en todas partes. Por eso, es aconsejable usar
la función FECHA(año;mes;día) que dará siempre un valor correcto independiente
del país o región en que se use Excel.
Hasta ahora hemos dicho que cuando un criterio es de igualdad, el signo igual (=)
se puede obviar, y poner el criterio en una celda externa.
Pero lo que no hemos dicho hasta ahora es que, para los demás criterios >, >=,
<, <=, <>, dado que no es posible obviarlos, si queremos usar dichos criterios con
una celda externa o con una fórmula, debe enlazarse dicha celda externa o dicha
fórmula con un carácter de concatenación (&).
Por ejemplo, supongamos que queremos usar una celda externa como A1 para
hacer una comparación en un criterio, todos los criterios posibles serían estos:
Por tanto, sigue estos pasos para crear la fórmula que nos piden:
Teclea la fórmula
=CONTAR.SI.CONJUNTO(D2:D21;K2;F2:F21;K3;B2:B21;">="&FECHA(L1;1;1);
B2:B21;"<="&FECHA(L1;12;31))
puedes hacerlo tecleando los rangos a mano o seleccionando los rangos con el
mouse
Mira cómo se hace:
Para que veas más claramente qué celdas ha contado la
función CONTAR.SI.CONJUNTO(), te las mostramos coloreadas en verde:
Hemos coloreado primero en amarillo todas las filas con un C001 en la columna D,
luego en amarillo todas las filas con un SI en la columna F, luego en amarillo todas
las filas con la fechas del año que hay en L2 y, por último, las filas que coinciden
que son amarillas a la vez en las columnas B, D y F, las hemos señalado en
verde, que son las que entran en el conteo.
Es decir, hay 1 facturas del cliente C001 del año en L1 que SI están pagadas.
Pero si vas cambiando el contenido de las celdas K2 y K3, o incluso el año en L1,
el resultado en K6 también va cambiando. Puedes ir probando con valores de
C001 hasta C006 en K2 y con valores SI o NO en K3. Por ejemplo, C001 y NO da
un valor de 5 en K6, C002 y NO da un valor de 0 en K6, C002 y SI da un valor de
3 en K6, etc.
Ahora hazlo tú:
Siguiendo en el archivo "FuncionesSiConjunto.xlsx", ve a la hoja "Cine" y, en la
celda N2, pon una fórmula para contar cuántas películas de "Aventura" de la
década desde 2010 hasta 2020 ambos inclusive tienen 500.000 o más votantes. El
resultado debería ser:
3
Nota: los rangos abarcan desde la fila 2 hasta la fila 178, pero puedes poner los
rangos desde la fila 2 hasta la fila 3000 en previsión de que se añadan más
películas con el tiempo.
Te damos una pista:
Clic aquí para ver
Te damos la solución:
Clic aquí para ver
Teclea la fórmula:
=CONTAR.SI.CONJUNTO(C2:C21;60;D2:D21;"C001")
+CONTAR.SI.CONJUNTO(C2:C21;60;D2:D21;"C005")
El resultado es:
1
... que corresponde a las celdas contadas, que son las que aquí mostramos en
color verde:
Nunca habrá que usar una función como la que sigue porque dará un
resultado erróneo:
=CONTAR.SI.CONJUNTO(C2:C21;60;D2:D21;"C001";D2:D21;"C005") →
¡siempre dará resultado cero porque ningún cliente es el cliente C001 y "a la
vez" (AND) es el cliente C005!
Uso del carácter de concatenación & para cambiar el
operador lógico (tema opcional)
Aprovechando que hemos visto cómo usar el carácter de concatenación & para
crear una prueba lógica usando una celda externa o una fórmula, vamos a ver que
& también puede usarse para cambiar el propio operador lógico de la propia
prueba lógica usando una celda externa. Ya hemos visto que los operadores
lógicos son 6, es decir, = , > , >=, < , <= , <>. Ahora vamos a ver una fórmula en la
que ponemos uno de estos 6 operadores lógicos en una celda externa para
permitir al usuario más versatilidad para elegir qué datos quiere ver.
Este es un tema opcional. Haz clic aquí para mostrar/ocultar el tema.
Nota: En inglés es =SUMIFS(rango,rango,"criterio",rango,"criterio",...)
SUMAR.SI.CONJUNTO() hace una suma de los valores que hay en el primer rango de
datos, es decir, en el primer parámetro de la función. El resto de los criterios
indican qué filas de dicho rango usará Excel para calcular la suma. Observa que a
la derecha de cada rango está el criterio a comprobar en ese rango. Se puede
poner hasta 127 rangos con sus correspondientes 127 criterios. Entre estos 127
rangos se pueden repetir rangos pero poniendo criterios distintos.
Nota: observa que en la función SUMAR.SI() el primer parámetro es el rango al que
se aplica el criterio, mientras que en la función SUMAR.SI.CONJUNTO() el primer
parámetro es el rango al que se aplica la suma.
Los criterios siguen la misma sintaxis que hemos visto hasta ahora: los criterios
(pruebas lógicas) van entre comillas porque las pruebas lógicas se han de poner
en forma de texto, pero por lo demás se usan los operadores lógicos normales
= , > , >= , < , <= , <>. En el caso del operador igual (=) puede sustituirse por no
poner ningún operador y además puede ponerse el valor de comparación en una
celda externa.
Si ya has descargado los ejemplos, abre el archivo "FuncionesSiConjunto.xlsx" en
la hoja "funciones SI CONJUNTO".
Vamos a hacer una suma con más de un criterio, empezaremos por poner dos
criterios: sumaremos en la celda K5 las facturas no pagadas del cliente C001. Es
decir, las dos pruebas lógicas son: que en la columna D haya un "C001" y que en
la columna F haya un "NO", pero lo que se suma serán los valores de la columna
E. En este caso usaremos directamente celdas externas para los criterios. Sigue
estos pasos:
hacerlo tecleando los rangos a mano o seleccionando los rangos con el mouse
El resultado ha de ser:
5.898,00
... que es la suma de las cantidades de las facturas no pagadas de C001. Observa
que el primer parámetro de la función es la columna E y por tanto, como hemos
dicho, es el rango sobre el que Excel hace la suma.
Si vas cambiando los valores de las celdas K2 y K3, el resultado ira cambiando
según el cliente (pon en K2 los valores desde C001 hasta C006) y según desees
ver las facturas pagadas (pon un SI en K3) o las no pagadas (pon un NO en K3).
Observa que al primer parámetro, el "rango a sumar", no se le aplica ningún
criterio. Los rangos en los que Excel comprueba los criterios son los que se ponen
a partir del segundo parámetro. Estos rangos son comprobados por columnas y
cuando una fila de la lista cumple todos los criterios, se añade a la suma. Por
ejemplo, en este caso, con "C001" en K2 y "NO" en K3, las cantidades sumadas
han sido las que aquí indicamos en color verde:
Para conseguir el mismo resultado en Excel 2003, habría que haber usado la
función de lógica matricial:
=SUMA((E2:E21)*(D2:D21=K2)*(F2:F21=K3)) y
CONTROL+MAYUSCULAS+ENTER
o bien
=SUMAPRODUCTO((E2:E21)*(D2:D21=K2)*(F2:F21=K3)) y ENTER
... pero el tema de la lógica matricial lo veremos más adelante.
A pesar de que al primer parámetro de la función SUMAR.SI.CONJUNTO(), es decir,
el rango a sumar, no se le aplica ningún criterio, nada impide usar ese rango a
partir del segundo parámetro para ponerle algún criterio. Por ejemplo, supón que
te piden calcular cuánto totalizan las facturas no pagadas de C001 mayores o
iguales de 1000 euros a 30 días. Haz lo siguiente:
El resultado ha de ser:
3.443,00
Observa que el primer parámetro de la función es la columna E y por tanto, como
hemos dicho, es el rango sobre el que Excel hace la suma, pero el último rango
también es la columna E sobre la que aplicamos el criterio que sea mayor o igual
que la cantidad que hay en L3. Hemos coloreado en amarillo el cliente C001, 30
días, NO pagadas y cantidad mayor o igual que 1000. Las filas que coincide que
son todas amarillas indican las celdas a las que afecta la suma, que te mostramos
en color verde:
Ahora hazlo tú:
Siguiendo en el archivo "FuncionesSiConjunto.xlsx", ve a la hoja "Cine" e intenta
poner en la celda N2 una función SUMAR.SI.CONJUNTO() que sume los votantes
de las películas con 500.000 o más votantes del género "Ciencia Ficción" (con
tilde la ó) a partir del año 2000 inclusive. Usa como rangos las columnas
completas. El resultado debería ser:
2388996
Nota: los rangos abarcan desde la fila 2 hasta la fila 178, pero puedes poner los
rangos desde la fila 2 hasta la fila 3000 en previsión de que se añadan más
películas con el tiempo.
Te damos una pista:
Clic aquí para ver
Te damos la solución:
Clic aquí para ver
Función PROMEDIO.SI.CONJUNTO() para
versiones Excel 2007 y posteriores
Su sintaxis es totalmente igual que SUMAR.SI.CONJUNTO(), la diferencia es
que PROMEDIO.SI.CONJUNTO() calcula el promedio de las celdas del primer rango:
=PROMEDIO.SI.CONJUNTO(rango de datos a promediar;rango de datos;"criterio
a comprobar en ese rango";otro rango de datos;"otro criterio para ese
rango";otro rango de datos;"otro criterio para ese rango";...)
Nota: En inglés es =AVERAGEIFS(rango,rango,"criterio",rango,"criterio",...)
PROMEDIO.SI.CONJUNTO() hace un promedio de los valores que hay en el primer
rango de datos, es decir, en el primer parámetro de la función. El resto de los
criterios indican qué filas de dicho rango usará Excel para calcular el promedio.
Observa que a la derecha de cada rango está el criterio a comprobar en ese
rango. Se puede poner hasta 127 rangos con sus correspondientes 127 criterios.
Entre estos 127 rangos se pueden repetir rangos pero poniendo criterios distintos.
Nota: observa que en la función PROMEDIO.SI() el primer parámetro es el rango al
que se aplica el criterio, mientras que en la función PROMEDIO.SI.CONJUNTO() el
primer parámetro es el rango al que se aplica el promedio.
Tener siempre en cuenta que, en una suma, las celdas con valores cero o vacías
no influyen en el resultado de la suma.
Por el contrario, un promedio da un cierto valor si las celdas a promediar contienen
algunos ceros y otro valor distinto si las celdas a promediar no contienen ceros.
Por tanto, es conveniente que te acostumbres a usar la función promedio de
manera diferente a la función suma según desees que los ceros influyan o no en
el resultado. Las celdas vacías no influyen en el cálculo del promedio.
Los criterios siguen la misma sintaxis que hemos visto hasta ahora: los criterios
(pruebas lógicas) van entre comillas porque las pruebas lógicas se han de poner
en forma de texto, pero por lo demás se usan los operadores lógicos normales = ,
> , >= , < , <= , <>. En el caso del operador igual (=) puede sustituirse por no
poner ningún operador y además puede ponerse el valor de comparación en una
celda externa.
Si ya has descargado los ejemplos, abre el archivo "FuncionesSiConjunto.xlsx" en
la hoja "funciones SI CONJUNTO".
Vamos a hacer un promedio con más de un criterio: supón que te piden promediar
en la celda K4 las facturas no pagadas del cliente C001 y que los ceros no
influyan en el cálculo del promedio. Es decir, las pruebas lógicas son: que en la
columna D haya un "C001", que en la columna F haya un "NO" y que el valor en la
columna E sea mayor que cero. Lo que se promedia serán los valores de la
columna E. En este caso usaremos directamente celdas externas para los
criterios. Sigue estos pasos:
Si quieres que los ceros influyan en el cálculo del promedio teclea esta fórmula:
=PROMEDIO.SI.CONJUNTO(E2:E21;D2:D21;K2;F2:F21;K3)
Si quieres que los ceros no influyan en el cálculo del promedio teclea esta fórmula:
=PROMEDIO.SI.CONJUNTO(E2:E21;D2:D21;K2;F2:F21;K3;E2:E21;">0")
En este caso, teclea esta segunda fórmula, debido a que te piden que los ceros no
influyan en el cálculo.
Mira cómo se hace:
Nota: Tal como hemos dicho, para conseguir el mismo resultado en Excel 2003,
antes de que existiesen las funciones SI CONJUNTO, habría que haber usado la
siguiente fórmula de lógica matricial:
=PROMEDIO(SI((D2:D21=K2)*(F2:F21=K3)*(E2:E21>0)=1;(E2:E21);"")) y
CONTROL+MAYUSCULAS+ENTER
... pero el tema de la lógica matricial lo veremos más adelante.
Para comprobar que los ceros no influyen, puedes hacer clic en la celda E3, que
contiene el valor 345, e introducir un cero. Como resultado, el promedio aumenta a
925,50 porque el valor cero no influye, si influyese el cero, es decir, si hubieses
tecleado la primera de las dos fórmulas, el promedio habría disminuido a 793,29.
Haz clic en E3 y vuelve a introducir el valor 345.
Ahora hazlo tú:
Teclea en la celda K12 una fórmula con PROMEDIO.SI.CONJUNTO() que calcule el
promedio de las facturas NO pagadas del cliente C001, del año que hay en la
celda L9 y que los ceros no influyan en el cálculo del promedio. Usa las celdas
externas K10, K11 y L9 para la fórmula. El resultado debería ser:
1.226,00
Te damos una pista:
Clic aquí para ver
Te damos la solución:
Clic aquí para ver
Continua en la siguiente entrega. Puedes también ir al Indice de los Minicursos o Volver arriba.
Funciones MAX.SI.CONJUNTO() y
MIN.SI.CONJUNTO() para versiones Excel 2016 y
posteriores
Sus sintaxis son totalmente igual que PROMEDIO.SI.CONJUNTO(), la diferencia es
que MAX.SI.CONJUNTO() retorna un sólo valor que es el valor mayor de las celdas
del primer rango y MIN.SI.CONJUNTO() retorna un solo valor que es el valor menor
de las celdas del primer rango:
Nota: En inglés es:
=MAXIFS(rango,rango,"criterio",rango,"criterio",...) y
=MINIFS(rango,rango,"criterio",rango,"criterio",...)
MAX.SI.CONJUNTO() busca el valor más grande que hay en el primer rango de
datos, es decir, en el primer parámetro de la función. El resto de los criterios
indican qué filas de dicho rango usará Excel para buscar el valor más grande. La
función MIN.SI.CONJUNTO() hace lo mismo pero busca el valor más pequeño.
Observa que a la derecha de cada rango está el criterio a comprobar en ese
rango. Se puede poner hasta 127 rangos con sus correspondientes 127 criterios.
Entre estos 127 rangos se pueden repetir rangos pero poniendo criterios distintos.
Nota: en una búsqueda de un valor máximo o un valor mínimo dentro de un rango,
las celdas de dicho rango con valores cero influyen en el resultado final. Por tanto,
es conveniente que te acostumbres a usar las funciones MAX y MIN de manera
diferente a la función suma, según desees que los ceros influyan o no en el
resultado. Las celdas vacías no influyen en el cálculo del máximo o del mínimo.
Los criterios siguen la misma sintaxis que hemos visto hasta ahora: los criterios
(pruebas lógicas) van entre comillas porque las pruebas lógicas se han de
poner en forma de texto, pero por lo demás se usan los operadores lógicos
normales = , > , >= , < , <= , <>. En el caso del operador igual (=) puede
sustituirse por no poner ningún operador y además puede ponerse el valor de
comparación en una celda externa.
Si ya has descargado los ejemplos, abre el archivo "FuncionesSiConjunto-2.xlsx"
en la hoja "MAX y MIN", que tiene que tener este aspecto:
Observa que hay unos números positivos, cero y negativos dentro del rango desde
A2 hasta E11. Supón que te piden calcular el número más grande y el número
más pequeño de dichos números, pero con la condición de incluir en los cálculos
solamente los valores que están entre -1000 y 1000 ambos inclusive, dicho de otra
manera, entre lo que hay en H4 y H5. Los valores cero han de ser incluidos en los
cálculos. Sigue estos pasos:
Teclea la fórmula:
=MIN.SI.CONJUNTO(A2:E11;A2:E11;">="&H4;A2:E11;"<="&H5)
Teclea la fórmula:
=MAX.SI.CONJUNTO(A2:E11;A2:E11;">="&H4;A2:E11;"<="&H5)
Mira cómo se hace:
Es decir, Excel ha incluido en los cálculos solamente los números entre -1000 y
1000 de los valores que hay en el rango A2:E11, el número más pequeño que ha
hallado Excel es -950 y el más grande es 850. Las celdas que Excel ha incluido en
los cálculo te las ponemos en color amarillo y el máximo y el mínimo en color
verde:
Puedes ir cambiando los valores que hay en H4 y H5 y los valores mínimo y
máximo irán cambiando:
Observa que los ceros están incluidos dentro de los valores que Excel incluye en
los cálculos.
Nota: Tal como hemos dicho, para conseguir el mismo resultado en Excel 2003,
2007, 2010, 2013 y 2016 antes de que existiesen estas funciones, habría que
haber usado las siguientes fórmulas de lógica matricial si se quiere incluir los
ceros en los cálculos:
=MIN((A2:E11>=H4)*(A2:E11<=H5)*(A2:E11)) y
CONTROL+MAYUSCULAS+ENTER
y
=MAX((A2:E11>=H4)*(A2:E11<=H5)*(A2:E11)) y CONTROL+MAYUSCULAS+ENTER
Te damos una pista:
Clic aquí para ver
Te damos la solución:
Clic aquí para ver
Nota: no existen en Excel funciones para obtener el mínimo y el máximo de un
rango con un solo criterio. Es decir, tanto si queremos usar un solo criterio como si
queremos usar varios criterios, habrá que usar siempre MAX.SI.CONJUNTO() y
MIN.SI.CONJUNTO().
Continua en la siguiente entrega. Puedes también ir al Indice de los Minicursos o Volver arriba.
En el tema anterior hemos usado la función CONTAR.SI() como función de Tipo 3.
Esto nos permitía contar los clientes. Por ejemplo, cuántos clientes eran el "C001".
Ahora vamos a hacer lo mismo pero en muchas celdas a la vez y tecleando la
fórmula solamente una vez. Sigue estos pasos:
Haz un clic en K5
Teclea la fórmula =CONTAR.SI(D2:D21;J5)
Haz clic en K5
que la tecla F4 convierte los rangos relativos en rangos absolutos sin necesidad
de que tengas que teclear los $ a mano.
Nota: esta fórmula la podías haber tecleado poniendo los dólares ($) directamente
a mano tranquilamente.
Haz clic en K5
Coloca el puntero del mouse en el cuadro de relleno del selector de celda (parte
inferior derecha de K5). El puntero del mouse toma forma de una cruz pequeña.
Arrastra con el mouse hasta K10 (o si quieres haz doble clic en el cuadro de
relleno)
Lo que me da cuántas facturas tiene cada cliente, desde el cliente C001 hasta el
cliente C006.
Y las fórmulas en cada celda deberían ser las siguientes (destacamos en color la
parte que cambia en cada fórmula):
=CONTAR.SI($D$2:$D$21;J5)
=CONTAR.SI($D$2:$D$21;J6)
=CONTAR.SI($D$2:$D$21;J7)
=CONTAR.SI($D$2:$D$21;J8)
=CONTAR.SI($D$2:$D$21;J9)
=CONTAR.SI($D$2:$D$21;J10)
Lo que hemos hecho, es en realidad lo habitual para rellenar una columna con la
misma fórmula. Hemos puesto en la celda K5 una sola función de
resumen. Entonces, dado que necesitábamos la misma función de resumen para
el resto de las columna, lo que hemos hecho ha sido copiarla. En realidad, cada
una de las celdas desde K5 hasta K10 contiene una función de resumen
independiente, lo que ocurre es que en vez de teclearlas todas una por una,
solamente he tecleado la primera fórmula y he usado el cuadro de relleno para
ahorrarme trabajo. Es igual que cuando queremos rellenar una columna con
funciones no matriciales. Eso sí, es necesario poner bien los $ para que, al copiar
la fórmula, no cambien los rangos.
Por tanto, una fórmula matricial de Tipo 4 no es más que hacer siempre este
proceso para tener muchas fórmulas de resumen: teclear solamente la primera
fórmula de resumen matricial con los $ en los rangos y copiar dicha fórmula en el
resto de las celdas.
Mira cómo se hace:
Ahora hazlo tú:
Supón que te piden que, en las celdas desde L5 hasta L10, calcules la suma de
las facturas no pagadas y vencidas para cada cliente. Los clientes están en las
celdas desde J5 hasta J10. Cada suma de cada cliente ha de estar en la misma
fila que su correspondiente cliente en la columna J. Teclea solamente en L5 la
fórmula para el cliente C001 y las demás fórmulas para los demás clientes
cópialas de esta primera fórmula.
Ten en cuenta lo siguiente: Has de usar una fórmula SI CONJUNTO. La suma se
calcula en base a los valores de la columna E. El cliente es el que está en la
columna D. "No pagadas" significa que haya un "NO" en la columna F. "Vencidas"
significa que haya una "X" en la columna G. El resultado debería ser:
Te damos una pista (1):
Clic aquí para ver
Te damos una pista (2):
Clic aquí para ver
Te damos la solución:
Clic aquí para ver
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)))
El resultado es:
5.426
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:
Clic aquí para ver
Te damos la solución:
Clic aquí para ver
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:
Clic aquí para ver
Te damos la solución:
Clic aquí para ver
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:
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:
Clic aquí para ver
Te damos la solución:
Clic aquí para ver
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
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:
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
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:
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.
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
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:
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 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
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:
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:
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:
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;
"")
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
;"")}
Mira cómo se hace:
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:
El resultado ha de ser igual que antes pero sin celdas con cálculos intermedios a
la vista:
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:
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:
Por ejemplo, para C006:
... etc...
Te damos una pista:
Clic aquí para ver
Te damos la solución:
Clic aquí para ver
Continua en la siguiente entrega. Puedes también ir al Indice de los Minicursos o Volver arriba.
Función Descripción
ESFORMULA() (desde Excel 2013) Retorna VERDADERO si existe una referencia a una celda que
contiene una fórmula.
INFO() (no disponible en OneDrive) Retorna información acerca del entorno operativo en uso.
NOD() Retorna un error #N/A. Se usa para forzar que una fórmula retorne #N/A cuando nos
interesa que dé error.
De todas ellas, nos fijaremos en la función lógica de información
ESERROR(celda), que devuelve VERDADERO si una celda contiene un
error (#N/A #¡VALOR! #¡REF! #¡DIV/0! #¡NUM! #¿NOMBRE? #NULO). Es una
función estándar pero también es matricial, por tanto, puede ir bien dentro de una
función matricial de Tipo 1 y, por consiguiente, de Tipo 2. Como Tipo 2, es útil para
ser usada con rangos de datos que contienen errores, de manera que podemos
hacer que la función de resumen ignore los errores y dé un resultado basado
solamente en los valores no erróneos.
Vamos a verlo.
Seguimos en el archivo "MasUsadasEnMatrices.xls" en la hoja "Errores".
La columna D tiene la fórmula columna B ÷ columna C. Observa que en el rango
D6:D13 hay errores de división por cero, y la fórmula
estándar =PROMEDIO(D6:D13) que hay en D14 no nos es útil.
Para solucionar esto, usaremos una función matricial de Tipo 2 en D15. Haz lo
siguiente:
Teclea la fórmula =PROMEDIO(SI(ESERROR(D6:D13);"";D6:D13))
Para un promedio =PROMEDIO(SI(ESERROR(D6:D13);"";D6:D13))
etc.
Todas las funciones de información pueden usarse en funciones matriciales, por
ejemplo para contar en la celda C18 cuantos textos hay en la columna B puedes
hacer esto:
Teclea la fórmula =SUMA(SI(ESTEXTO(B1:B1000);1))
Observa que hemos usado el truco que vimos en un tema anterior de usar la
función SUMA() para contar.
Funciones SUMA(K.ESIMO.MAYOR()),
SUMA(K.ESIMO.MENOR()) a partir de la versión Excel
97
Las funciones K.ESIMO son fáciles de entender, si se explica bien lo que hacen.
Tienen esta sintaxis:
=K.ESIMO.MAYOR(matriz;lugar)
y
=K.ESIMO.MENOR(matriz;lugar)
Ambas funciones operan con un rango de valores como primer parámetro.
K.ESIMO.MAYOR() retorna, de ese rango de valores, el valor que estaría en un cierto
lugar si ese rango estuviese ordenado de mayor a menor, es decir, por ejemplo,
¿qué valor estaría en el 8º lugar si ese rango lo ordenásemos de mayor a menor?
Si el rango estuviese en A1:A100 entonces la
función =K.ESIMO.MAYOR(A1:A100;8) retornará el valor ocuparía el 8º lugar si
hubiésemos ordenado A1:A100 de mayor a menor.
K.ESIMO.MENOR() hace exactamente lo mismo, pero suponiendo que ese
rango estuviese ordenado de menor a mayor. Así, la
función =K.ESIMO.MENOR(A1:A100;21) retorna el valor que ocuparía el 21º lugar si
hubiésemos ordenado A1:A100 de menor a mayor.
K.ESIMO.MAYOR() y K.ESIMO.MENOR() nos permiten ahorrarnos de tener que
ordenar un rango para trabajar con él, con lo que podemos trabajar con rangos
desordenados como si estuviesen ordenados.
Nota: el segundo parámetro de estas funciones indica un lugar, no indica un
valor: no sirven para obtener un segundo o tercer valor más grande o un segundo
o tercer valor más pequeño dentro de un rango. Sirven para obtener qué valor
habría en el segundo o tercer lugar dentro de un rango si lo ordenásemos de
mayor a menor, o de menor a mayor. Es lo que en inglés se llama un Ranking por
posiciones. Por ejemplo, supón que un rango ordenado de mayor a menor queda
así: 3, 2, 2, 2, 2, 2, 1, entonces el lugar nº 6 de este rango es 2 (3, 2, 2, 2,
2, 2, 1). Si el rango lo ordenásemos de menor a mayor quedaría así: 1, 2, 2,
2, 2, 2, 3, entonces el lugar nº 4 de este rango es también 2 (1, 2, 2, 2, 2,
2, 3).
Las funciones K.ESIMO.MAYOR() y K.ESIMO.MENOR() son funciones matriciales
de Tipo 3 de por sí. Se puede saber porque, en la ayuda contextual que aparece
cuando tecleas una fórmula en Excel, aparece la palabra "matriz":
... y se introducen con un ENTER normal. Sin embargo, dado que el segundo
parámetro no es una matriz, sino que es solamente un número que indica un
lugar, en la práctica no sirve de mucho que sean funciones matriciales. Por
consiguiente, se usan mucho en fórmulas de resumen Tipo 2 introduciéndolas con
CONTROL+MAYUSCULAS+ENTER.
Como siempre, antes de ver su uso como Tipo 2, vamos a ver su uso como
Tipo 1.
Como funciones de Tipo 1 nos permite extraer datos ordenados de un rango no
ordenado y, como Tipo 2, resumir tales datos. Por ejemplo ¿cómo obtengo la
suma de los números que ocupan los cinco primeros lugares en un rango si este
rango estuviese ordenado de mayor a menor? Para resolverlo, veremos primero la
función K.ESIMO.MAYOR() como Tipo 1.
Vamos a verlo. Seguimos en el archivo "MasUsadasEnMatrices.xls" en la hoja
"Kesimos":
Sin clicar en ningún sitio para que no se deshaga la selección, teclea la fórmula:
=K.ESIMO.MAYOR(B3:C17;E3:E7)
Si quieres comprobar que es correcto, no te quedará más remedio que comprobar
a ojo que es así, mirando todos los números que hay en B3:C17, ya que como
hemos dicho, no podemos ordenar datos dispuestos en dos columnas de manera
convencional.
Mira cómo se hace:
Teclea la fórmula
=SUMA(K.ESIMO.MAYOR(B3:C17;E3:E7))
El resultado es:
231
Comprueba asimismo que, cambiando los números del rango B3:C17, el resultado
en J10 también cambia. Por ejemplo, cambia B3 por un 999 y observa que la
suma también cambia a 1189. Te recordamos que el rango B3:B17 sigue sin estar
ordenado.
Sin embargo, hay un problema. Si en un momento dado te piden que sumes los
números que están en los 100 primeros lugares de un rango sin ordenar, estarías
obligado a teclear la constante matricial {1;2;3;4;5;6;7; ... ;98;99;100}, es
decir, una constante matricial de ¡100 números!
Afortunadamente, Excel proporciona la función =FILA(1:100) que te evitará tener
que teclear esa constante matricial de 100 números, si bien esto es válido
solamente para constantes matriciales de una sola fila (recuerda que las
constantes matriciales pueden tener varias filas separadas por una contrabarra
"\").
La función FILA() usada no matricialmente tiene otros usos, pero ahora nos
interesa ver solamente su uso matricial, ya que nos va a permitir sustituir la
constante matricial {1;2;3;4;5} por la función FILA(1:5), o bien la constante
matricial {1;2;3;4;5;6;7; ... ;98;99;100} por la función FILA(1:100), etc. Sigue
estos pasos:
Haz clic en B3
Mira cómo se hace:
Si quieres saber la suma de los números que ocuparían los 15 primeros lugares
del rango B3:C17 si estuviese ordenado de mayor a menor, haz lo siguiente:
Haz clic en F3
Teclea la fórmula =K.ESIMO.MAYOR($B$3:$C$16;E3)
Haz clic en G3
Teclea la fórmula =K.ESIMO.MENOR($B$3:$C$16;E3)
Enseguida verás que, para que puedas usar esta función, deberás seleccionar un
rango del mismo tamaño que el segundo parámetro, entonces tendrás que teclear
la fórmula y acabar con CONTROL+MAYUSCULAS+ENTER.
Seguimos en el archivo "MasUsadasEnMatrices.xls" en la hoja "Resúmenes". Nos
centraremos ahora en la zona de la hoja a partir de la celda J10:
Supón que te piden que cuentes cuántos números hay dentro del rango E2:E21. A
simple vista ya vemos que hay 20 números, pero te piden que desgloses, de esos
20 números, cuántos números hay entre 0 y 100, cuántos hay entre 100 y 200,
cuántos hay entre 200 y 300, cuántos hay entre 300 y 400... en concreto, te piden
que desgloses dicho conteo según los intervalos que hay en el rango desde J11
hasta K28. Haz lo siguiente:
Teclea la fórmula =FRECUENCIA(E2:E21;K11:K28)
El resultado:
El conteo desglosado empieza en M11 y significa lo siguiente: hay 1 factura
cuya cantidad está entre 0 y 100 euros, 2 facturas cuya cantidad está entre 100 y
200 euros, 1 factura cuya cantidad está entre 200 y 300 euros, 2 facturas cuya
cantidad está entre 300 y 400 euros, etc… En la celda M29 está la suma de estos
conteos desglosados. Esta suma es 20 que es justamente el conteo que habíamos
hecho a simple vista mirando el rango E2:E21.
Este "conteo desglosado en intervalos" se denomina en estadística "distribución
de frecuencias por categorías".
Si quieres, puedes ir cambiando los números del rango E2:E21 y verás como
cambia automáticamente este conteo desglosado (o distribución de frecuencias),
pero la suma en M29 siempre ha de dar 20.
Mira cómo se hace:
Observa que te hemos dicho que queremos un conteo de facturas distribuido
según los intervalos (o categorías) que hay en el rango J11:K28, pero en la
función FRECUENCIA() no hemos usado para nada la columna J. Solamente hemos
usado la columna K, la que tiene los límites superiores de las categorías y, aun
así, la fórmula ha dado resultados correctos. Esto es debido a que la
función FRECUENCIA() solamente necesita los límites superiores de las
categorías en que queremos distribuir el conteo. Para comprobarlo haz lo
siguiente:
Selecciona el rango desde J11 hasta J28
La columna M sigue dando los mismos valores lo que demuestra que la columna J
no es necesaria. Solamente habíamos puesto la columna J para que los intervalos
quedasen más claros a los ojos de un usuario. Así pues, la distribución que hay a
partir de la celda M11 que ha hecho la función FRECUENCIA() es la siguiente:
Hay 2 facturas cuya cantidad está entre 100 euros exclusive y 200 inclusive
Hay 1 factura cuya cantidad está entre 200 euros exclusive y 300 inclusive
Hay 2 facturas cuya cantidad está entre 300 euros exclusive y 400 inclusive
etc…
Por tanto, a la hora de hacer el cálculo, la función FECUENCIA() toma en cuenta
cada celda del rango K11:K28 pero también la celda inmediatamente superior, y
es por eso que esta función ha de ser siempre de Tipo 1.
Los números que queremos que la función FRECUENCIA() desglose, se ponen en el
primer parámetro de la función, en este caso es el rango E2:E21.
Para que quede más claro, fíjate que la cantidad que hay en E2 es de 200 euros
¿en cuál de las categorías o intervalos está incluida la cantidad de 200? Mira
como está ahora la distribución:
Haz clic en E2 y teclea 200,01. El resultado:
Hemos resaltado en amarillo las celdas que han cambiado. La categoría "Hasta
200" ha disminuido en 1 unidad mientras que la categoría "Hasta 300" ha
aumentado en 1 unidad, esto significa que la cantidad de 200 euros estaba
incluida en la categoría "Hasta 200" porque "Hasta 200" significa en realidad
"Desde 100 exclusive hasta 200 inclusive" y, cuando hemos cambiado a 200,01
esta cantidad ha pasado a la categoría "Desde 200 exclusive hasta 300
inclusive".
Ahora haz clic en E2 y teclea 199,99. El resultado vuelve a ser igual que cuando
E2 contenía el valor 200:
... porque 199,99 es una cantidad incluida en la categoría "Desde 100 exclusive
hasta 200 inclusive".
Ahora haz clic en E2 y teclea el número negativo -9999. Resaltamos en amarillo
los valores que cambian:
Esto significa que la primera categoría "Hasta 100" significa en realidad "Desde
cualquier valor negativo hasta 100 inclusive".
Resumiendo: M11 muestra el conteo desde cualquier valor negativo hasta 100
inclusive, M12 desde 100 exclusive hasta 200 inclusive, M13 desde 200 exclusive
hasta 300 inclusive, M14 desde 300 exclusive hasta 400 inclusive, etc.
Observa que con este sistema de no usar la columna J, no nos podemos
equivocar en las categorías y la función FRECUENCIA() siempre hará bien la
distribución de los números, de modo que, por mucho que cambies los números
que hay desde E2 hasta E21, la celda M29 siempre mostrará 20, aunque los
valores mostrados desde M11 hasta M28 vayan cambiando.
Observa también que, como hemos dicho, como función matricial de Tipo 1, antes
de teclear la fórmula hay que seleccionar un rango tan grande como el rango con
los intervalos o categorías (en este caso K11:K28), en cambio, el otro rango, el
rango E2:E21, de donde la función FRECUENCIA() toma las cantidades en euros a
distribuir en esos intervalos o categorías, puede ser del tamaño que se quiera.
Si te piden la distribución en porcentajes, usa la fórmula que ponemos a
continuación:
Haz clic en E2
Teclea la fórmula
=FRECUENCIA(E2:E21;K11:K28)/CONTAR(E2:E21)
El resultado:
Sin embargo, si en vez de un conteo, te piden que distribuyas la suma de los
números que están dentro de esos intervalos o categoría, la
función FRECUENCIA() ya no nos es útil. Hay que usar la función de
resumen SUMAR.SI.CONJUNTO() como fórmula matricial de Tipo 4: crear la primera
fórmula con los $ adecuadamente colocados y copiándola con el cuadro de
relleno. Sigue estos pasos:
Haz clic en E2
Teclea la fórmula:
=SUMAR.SI(E2:E21;"<="&K11)
Teclea la fórmula:
=SUMAR.SI.CONJUNTO($E$2:$E$21;$E$2:$E$21;">"&K11;$E$2:$E$21;"<="&K12)
Y acaba con un ENTER normal. Es una función de Tipo 3 y esta sí que ya es la
primera de las funciones de Tipo 4 con los $ adecuadamente colocados y, dado
que requiere más de 1 criterio, ya hemos usado SUMAR.SI.CONJUNTO()
Vuelve a hacer clic en L12 y copia la fórmula arrastrándola por el cuadro de relleno
hasta L28.
Tal como dijimos que hay que hacer en las fórmulas de Tipo 4, la primera fórmula
que tecleemos ha de tener los $ adecuadamente colocados. Observa que en L29
está el total de totales de las facturas distribuidas en los intervalos o categorías.
Esta suma necesariamente ha de coincidir con la suma de los valores del rango
E2:E21. Asimismo, la celda M29 contiene la suma del conteo por categorías,
que necesariamente ha de coincidir con el conteo de los valores del rango
E2:E21. Por último, la celda N29 necesariamente ha de sumar 100% si los
porcentajes están bien calculados.
Como curiosidad, en Excel 2003, para calcular las sumas distribuidas por las
categorías, hay que usar SI() anidados, debido a que no existen en Excel 2003
las funciones SI CONJUNTO. La primera de las fórmulas de resumen de Tipo 4
(celda L12) tendría que haber sido en Excel 2003:
=SUMA(SI($E$2:$E$21>J11;SI($E$2:$E$21<=K11;$E$2:$E$21))) y
CONTROL+MAYUSCULAS+ENTER
Por último, si te piden que uses intervalos de 500 en vez de intervalos de 100,
rellena el rango desde K11 hasta K27 con los valores 500, 1000, 1500... (no
cambies el 9999999 que hay en K28) El resultado:
Si trabajas con valores muy grandes, deberás cambiar el valor 9.999.999 que hay
en K28.
Es importante tener en cuenta siempre que esta función solamente puede usarse
como Tipo 1. Si no se hace así, mostrará valores erróneos pero sin mostrar ningún
mensaje de error específico.
Los rangos del 1er y 2o parámetros han de ser iguales. Debe seleccionarse un
rango del mismo tamaño que el 3er parámetro, teclear la fórmula y acabar con
CONTROL+MAYUSCULAS+ENTER. Sin embargo, si el 3er parámetro no es un
rango sino solamente una celda, puede acabarse la fórmula con ENTER normal.
Es una fórmula de poco uso, más bien financiero o estadístico. Básicamente sirve
para predecir, en base a los valores actuales, si en el futuro, de seguir la tendencia
actual, esos valores crecerán o decrecerán. Puede servir para hacer previsiones,
por ejemplo.
Este es un tema opcional. Haz clic aquí para mostrar/ocultar el tema.
Continua en la siguiente entrega. Puedes también ir al Indice de los Minicursos o Volver arriba.
Es una lista de compras por departamentos de una supuesta empresa. Supón que
te piden que en la celda G3 aparezca un "SI" en el caso de que el departamento
que hay en la celda F3 esté en la lista de compras (en la columna B) y que
aparezca un "NO" en otro caso. Haz lo siguiente:
Haz clic en G3
Teclea la fórmula
=SI(CONTAR.SI(B3:B102;F3)>0;"SI";"NO")
Y acaba con un ENTER
El resultado:
Lo que significa que el departamento de Calidad está en la lista de compras, es
decir, como mínimo ha hecho 1 compra (no te interesa el conteo exacto).
Ahora haz clic en F3 e introduce el texto "Administración". El resultado:
Lo que significa que el departamento de Administración no está en la lista de
compras, es decir, no ha hecho compra alguna (obviamente el conteo es 0 pero
seguimos sin estar interesados en el conteo en sí).
Una vez visto esto, vamos a ver algo similar. Se trata de saber si un
departamento está repetido en la lista de compras, no interesa el conteo exacto,
solamente te piden saber si está repetido. Sigue estos pasos:
Haz clic en G2
Haz clic en F3
Haz clic en G3
El resultado:
Lo que significa que el departamento de I+D está repetido en la lista de compras,
es decir, como mínimo ha hecho 2 compras (no te interesa el conteo exacto).
Ahora haz clic en F3 e introduce el texto "Jardines". El resultado:
Lo que significa que el departamento de Jardines no está repetido en la lista de
compras o simplemente no está en la lista (obviamente el conteo es 0 ó 1 pero
seguimos sin estar interesados en el conteo en sí).
Fíjate que, en los dos ejemplos anteriores, no te han pedido hacer un conteo
exacto de las veces que aparece un departamento en la lista de compras,
solamente te han pedido saber si un departamento estaba o no en la lista y si
estaba o no repetido.
Hasta aquí, hemos visto una utilidad más de la fórmula CONTAR.SI() introducida
con ENTER.
Pasemos a ver su utilidad introducida con
CONTROL+MAYUSCULAS+ENTER, en concreto como fórmula matricial de
Tipo 1.
Uso de CONTAR.SI() con CONTROL+MAYUSCULAS+ENTER
para obtener contar ocurrencias de valores
Continuamos en el archivo "ContarSiMatricial.xls" en la hoja "Compras Meses".
Una vez visto que podemos ver si un valor está dentro de un rango
usando CONTAR.SI() con ENTER, vamos a ver cómo hacer algo similar usando la
función como matricial de Tipo 1.
Usada matricialmente como fórmula de Tipo 1 y con
CONTROL+MAYUSCULAS+ENTER, la función CONTAR.SI() puede contar
cuántas veces aparece una serie de valores dentro de un rango. Por ejemplo, en
la hoja "Compras Meses", el rango C3:C102 indica el número de compras de un
departamento. Supón que te piden una fórmula que muestre cuántas veces ha
habido 1 compra, 2 compras, 3 compras,... hasta 10 compras. Sigue estos pasos:
Haz clic en F2
Haz clic en G2
Haz clic en G3
Vamos a poner en la columna G la fórmula matricial de Tipo 1 necesaria para
calcular cuántos 1’s aparecen en la columna C, cuántos 2’s aparecen en la
columna C, cuántos 3’s aparecen en la columna C, etc. hasta contar cuántos 10’s
aparecen en la columna C. Continua con estos pasos:
El resultado:
Es decir, esto me está diciendo que en la columna C el número 1 aparece 2 veces,
el 2 aparece 3 veces, el 3 aparece 0 veces, ... hasta el 10, que aparece 2 veces en
la columna C. Cada fórmula de la columna G nos indica cuántas veces aparece el
número que hay a su izquierda, en la columna F. Este es el resultado de sustituir
en la función CONTAR.SI() el segundo parámetro por un rango, en concreto el
rango D3:D12 que contiene 1, 2, 3, 4, 5, 6, 7, 8, 9, 10. Observa que
simplemente hemos contado ocurrencias de valores únicos, no hemos hecho
ninguna segmentación por intervalos como hicimos en el tema anterior.
Supón que te piden que calcules, en la celda F2, cuántos códigos hay
repetidos, pero que no haya ningún rango con cálculos intermedios.
Si has pensado que esto podría hacerse con una fórmula matricial de Tipo 2, es
que vas bien encaminado.
Pero lo vamos a hacer por pasos. Primero, calcularemos cuántas veces está
repetido cada código postal usando CONTAR.SI() como función matricial de Tipo 1
acabada con CONTROL+MAYUSCULAS+ENTER. Sigue estos pasos:
Sin hacer clic en ningún sitio para que no se deshaga la selección, teclea la
siguiente fórmula:
=CONTAR.SI(B2:B120;B2:B120)
Nota: a partir de la versión Excel 2007, puedes usar como rangos columnas
enteras =CONTAR.SI(B:B;B:B) pero seguramente notarás que Excel irá bastante
más lento para hacer el cálculo, ya que usa una columna entera, que es muy
grande en comparación con un rango pequeño. No obstante, solamente se puede
usar columnas enteras como rangos cuando dichas columnas no tienen celdas
vacías en sus primeras filas, es decir, solamente se puede usar columnas
enteras como rango cuando la columna contiene datos válidos desde la primera
fila. Por tanto, aconsejamos nunca usar CONTAR.SI() ni SUMAR.SI() con columnas
enteras como rangos. Además, al usar columnas enteras, el archivo no será
compatible con Excel 2003.
Lo que hemos hecho ha sido obtener justo a la derecha de cada código, cuántas
veces aparece repetido dicho código.
Fíjate que la mayoría están sin repetir porque aparece un 1 a su derecha. Los
códigos que tienen un valor mayor que 1 a su derecha son los que están
repetidos. Por ejemplo, el código 615266 (en B4) tiene un 2 a su derecha, es decir,
615266 está 2 veces, esto indica que está repetido.
Sin embargo, recuerda que lo que te han pedido es contar los repetidos. Una
solución sería indicar en la columna C con una "X" los códigos repetidos y luego
contar cuántas "X" hay. Vamos a probar. Sigue estos pasos:
Haz clic en C2
Teclea o modifica la fórmula así:
=SI(CONTAR.SI(B2:B120;B2:B120)>1;"X";"")
Al igual que comentábamos en el apartado anterior, cada código que tiene una X a
su derecha significa que está repetido en la lista de códigos, no te interesa el
conteo exacto. Obviamente, los códigos que no tienen una "X" a su derecha no
están repetidos, solamente aparecen 1 vez en la columna B.
Ahora, solamente falta contar cuántas "X" hay en la columna C:
Haz clic en F2
Teclea la fórmula =CONTAR.SI(C2:C120;"X")
El resultado es:
Sin embargo, una manera más fácil, es usar la función SUMA() estándar como
función de conteo, usando el truco que hemos usado hasta ahora que es poner 1's
y 0's en vez de "X" y luego sumar los 1's. Haz lo siguiente:
Haz clic en C2
Dado que los nulos no afectan al resultado de la mayoría de las fórmulas, ahora
bastará con sumar todos los 1's de la columna C para tener el conteo de códigos
repetidos:
Haz clic en F2
Teclea la fórmula =SUMA(C2:C120)
Haz clic en F2
Teclea la fórmula:
=SUMA(SI(CONTAR.SI(B2:B120;B2:B120)>1;1;""))
Como dijimos en las matrices de Tipo 2, es lo mismo:
=SUMA(SI(CONTAR.SI(B:B;B:B)>1;1;"") y CONTROL+MAYUSCULAS+ENTER
tanto si el archivo es .xls como si es .xlsx
=SUMA(SI(CONTAR.SI.CONJUNTO(B:B;B:B)>1;1;"") y
CONTROL+MAYUSCULAS+ENTER si el archivo es .xlsx
... pero es peligroso usar columnas enteras como rangos debido a que se
obtienen resultados erróneos si hay celdas vacías en las primeras filas de las
columnas y, además, los cálculos serán muy lentos debido a que usan
columnas enteras. Por otra parte, ninguna de las dos fórmulas será compatible
con Excel 2003. Por tanto, volvemos a aconsejar nunca usar columnas enteras
como rangos en fórmulas matriciales.
Haz clic en F2
El resultado es un error #¡VALOR!.
¿Por qué da un resultado erróneo?
El resultado es erróneo porque debemos forzar que la función SI(), que está
puesta dentro de SUMAPRODUCTO(), sea tratada como matricial por Excel
introduciendo la fórmula con CONTROL+MAYUSCULAS+ENTER.
Para comprobarlo, haz lo siguiente:
Haz doble clic en la celda F2, esto hará que entres en modo edición de fórmula
El resultado ha de ser nuevamente el correcto:
Observa en la barra de fórmulas que la fórmula es la misma pero ahora está
rodeada de { y } indicando una fórmula matricial.
¿Vale la pena en estos casos sustituir el SUMA() por un SUMAPRODUCTO()?
La respuesta es que no, porque teclear SUMAPRODUCTO() es más largo que
teclear SUMA() y como no nos ahorramos de pulsar
CONTROL+MAYUSCULAS+ENTER, no ganamos nada. Lo mejor es usar la
fórmula original:
=SUMA(SI(CONTAR.SI(B2:B120;B2:B120)>1;1;"")) y
CONTROL+MAYUSCULAS+ENTER
En general, cuando SUMAPRODUCTO() tenga dentro una función SI() como
parámetro, habrá que acabar con CONTROL+MAYUSCULAS+ENTER para forzar
que el SI() que hay dentro de SUMAPRODUCTO() actúe como matricial.
De todos modos, es importante que continúes teniendo en cuenta que la
función SUMAPRODUCTO() sigue siendo una función matricial muy importante. En el
próximo tema de la lógica matricial, verás que podemos usar SUMAPRODUCTO() y
acabar con ENTER sin que Excel muestre error. Para ello, usaremos un truco para
evitar tener que usar la función SI() como parámetro dentro de SUMAPRODUCTO().
Este truco se explicará.
Ahora hazlo tú:
Seguimos en el archivo "ContarSiMatricial.xls". Haz clic en la hoja "Vuelos":
Esta hoja contiene en la columna B una lista de 3 letras que son los códigos
internacionales de los aeropuertos.
Te piden que uses la columna C para que aparezca cuántas veces se repite cada
código de aeropuerto. El resultado debería ser:
Te damos una pista:
Clic aquí para ver
Te damos la solución:
Clic aquí para ver
Teclea la fórmula =1/C4:C27
Teclea la fórmula =SUMA(D4:D27)
El resultado es el correcto:
El funcionamiento de esta fórmula es como sigue:
Etc…
Teclea la fórmula: =SUMA(1/CONTAR.SI(B4:B27;B4:B27))
Nota: Si hay celdas en blanco la función dará error porque los blancos se
consideran 0 y daría error de división por cero. La solución es usar en la celda B30
la fórmula (en Excel 2007+):
=SUMA(SI.ERROR(1/CONTAR.SI(B4:B27;B4:B27);"")) y
CONTROL+MAYUSCULAS+ENTER
Comprueba que funciona bien borrando el código de aeropuerto en la celda B26.
La fórmula en B29 dará error y la fórmula en B30 seguirá bien:
Esta fórmula la podemos usar también para contar los códigos postales únicos en
el ejemplo anterior de los códigos postales. Por ejemplo, en la hoja "Repetidos"
teclea la palabra "Únicos" en la celda F4 y en la celda F5 teclea la fórmula:
=SUMA(1/CONTAR.SI(B2:B120;B2:B120)) y CONTROL+MAYUSCULAS+ENTER
El resultado es 111 códigos postales únicos.
Haz clic en D4
Usa el cuadro de relleno (parte inferior derecha de la celda) para rellenar con la
fórmula desde D4 hasta D27.
El resultado debería ser:
Como vemos, solamente aparece una "X" en los códigos repetidos (no nos
interesa el número exacto de repeticiones).
Sin embargo, esto no indica claramente en qué momento aparece la primera
repetición de cada aeropuerto. Supón que te piden que, en la columna E,
aparezca el texto "Repet.", no en todos los aeropuertos repetidos, sino solamente
cuando aparezca la primera repetición de un aeropuerto. Una fórmula así tendría
la utilidad de saber en qué celda de un rango se ha tecleado un valor repetido.
Para conseguirlo, hay que usar una fórmula que no hemos visto hasta ahora, que
sería de Tipo 4 pero con referencias mixtas. Una referencia mixta es un rango
que no tiene los 4 símbolos $, sino que solamente tiene 2 símbolos $ en la celda
inicial del rango. Veamos cómo se usa:
Usa el cuadro de relleno (parte inferior derecha de la celda) para rellenar con la
fórmula desde E4 hasta E27.
Aparece el texto "Repet." a partir de la celda en que Excel encuentra la primera
repetición de un aeropuerto.
Esta fórmula usa un rango mixto o semi-relativo, que es un rango en la forma:
$Columna$Fila:ColumnaFila
Por ejemplo:
$H$6:H18
De manera que, al copiar con el cuadro de relleno una fórmula que tenga ese
rango, la parte que tiene los $ se mantiene fija, H6, pero la parte que no tiene los $
va variando: H18, H19, H20, H21... Así, en nuestro caso, usamos este rango mixto
o semi-relativo en la fórmula:
y al arrastrar por el cuadro de relleno hacia abajo, este rango irá
cambiando B4:B4, B4:B5, B4:B6, B4:B7, B4:B8, ...
De esta manera, la función CONTAR.SI() que usa este rango semi-relativo, siempre
hace el conteo desde donde está la fórmula hacia arriba, hacia la primera celda
del rango. No cuenta las repeticiones en todo el rango, como hemos hecho hasta
ahora. Con ello, el resultado que obtengo es que Excel me mostrará el texto
"Repet." en la celda en que aparece la primera repetición de un aeropuerto y, si
bien también aparece en la segunda, tercera y siguientes repeticiones, con
este resultado la fórmula ya nos es útil.
Estas fórmulas que hemos visto pueden servirte para saber si un valor está
repetido en una lista, tanto si te interesa saber cuántas veces aparece, como si te
interesa precisamente lo contrario, controlar que los datos no estén repetidos.
Continua en la siguiente entrega. Puedes también ir al Indice de los Minicursos o Volver arriba.
Así, todo es mucho más sencillo.
Pero todavía se puede hacer aún más sencillo. Y aquí es donde entran las
operaciones lógicas (matriciales o estándares).
Esta sencillez se consigue sustituyendo la función SI() por una operación lógica.
Para convertir una función SI() en una operación lógica, basta con borrar la
función SI() dejando la prueba lógica o criterio (o "condición") que hay dentro de
la función SI().
Por ejemplo, para transformar la función:
=SI(A1>1;1;0) y ENTER
... en una operación lógica, basta con dejar solamente su condición, el primer
parámetro:
=(A1>1) y ENTER
Y ya tenemos la operación lógica.
En cuanto veamos el primer ejemplo verás que una fórmula de este tipo devuelve
solamente VERDADERO o FALSO. Recuerda que seguiremos estos pasos:
Y, como siempre, una vez tenemos la versión en Tipo 1, es ya una paso directo
obtener la fórmula de resumen matricial unicelda de Tipo 2 para efectuar conteos
o sumas. No siempre te pedirán una función de resumen de conteo o suma, pero
nosotros siempre la pondremos.
Supón que te piden que calcules, en la celda E2, cuántos números de la columna
A son mayores que 20. Lo primero que podríamos hacer es, en la columna B,
poner una fórmula que indique cuándo en la columna A hay un número mayor
que 20.
Los pasos que recomendamos para solucionarlo serían los tres pasos que hemos
apuntado antes: fórmula estándar, fórmula Tipo 1, función de resumen Tipo
2. Pero lo vamos a hacer usando funciones lógicas, es decir, usando los
valores VERDADERO y FALSO o bien 1's y 0's.
Fórmula estándar:
Haz clic en B2
Haz doble clic en el cuadro de relleno (parte inferior derecha de la celda) para
rellenar toda la columna B
El resultado:
Observa que sólo hay una X en la columna B cuando en la misma fila de la
columna A hay un número mayor que 20.
Ahora sería cuestión de contar las "X", pero, atención, hemos dicho que
usaremos solamente VERDADERO y FALSO, no "X" o nulos "". Por tanto, sigue el
paso que hemos explicado antes para transformar un SI() en una operación
lógica, es decir, bórralo todo excepto el "=" al inicio de la fórmula, los paréntesis y
la prueba lógica o condición:
Haz clic en B2
Haz doble clic en el cuadro de relleno (parte inferior derecha de la celda) para
rellenar toda la columna B
El resultado:
Un valor VERDADERO indica que el número en la columna A es mayor que 20 y un
valor FALSO indica que el número en la columna A no es mayor que 20. Ahora la
fórmula en la columna B es mucho más sencilla y no requiere de la función SI().
Bastaría ahora con contar los VERDADERO de la columna B y ya tendríamos el
conteo de los valores mayores que 20. Pero la función para contar
los VERDADERO debería ser una función SI(), CONTAR.SI(), SUMAR.SI() o
funciones SI CONJUNTO y hemos dicho que la forma más sencilla posible para
contar es usar la función SUMA() con 1's y 0's.
Pero para ello no podemos usar VERDADERO o FALSO. Debemos usar 1's y 0's.
La cuestión es: ¿cómo convertimos estos valores VERDADERO o FALSO en 1's y 0's?.
La respuesta es que Excel proporciona muchas fórmulas para hacerlo. Pero, de
entre todas las fórmulas, hay 6 que son las más usadas.
Para convertir un valor VERDADERO o FALSO en un valor 1 y 0 respectivamente,
podemos usar estas 6 fórmulas:
(A2>20)*1
(A2>20)+0
--(A2>20)
N(A2>20)
(A2>20)*VERDADERO
(A2>20)+FALSO
Excel considera los 0's como valor FALSO y los 1's como valor VERDADERO, si bien en
la práctica, Excel considerará 0 como FALSO, y cualquier valor distinto de cero: ...
-4, -3, -2, -1, 1, 2, 3, 4... como VERDADERO.
Vamos a verlo. Observa que la celda A2 contiene un valor de 21 por tanto la
operación lógica =(A2>20) tiene que dar VERDADERO que es equivalente a un valor
1. Vamos a verlo:
El resultado es VERDADERO:
Vamos a ver cómo transformar ese VERDADERO en un 1 con las 6 fórmulas. Sigue
estos pasos:
Haz clic en H3
Haz clic en H4
Haz clic en H5
Haz clic en H6
Teclea la fórmula =N(A2>20) y ENTER
Haz clic en H7
Haz clic en H8
El resultado:
Por tanto, hemos convertido el valor VERDADERO en un 1 usando 6 fórmulas
distintas. Cualquiera de ellas igual de válida, no hay una fórmula mejor que las
otras. Pero nosotros, en este Minicurso, elegiremos la primera de ellas y las dos
últimas por una razón que explicaremos más adelante.
Ahora vamos a usar la celda A3, que tiene el valor de 20 y por tanto la operación
lógica =(A3>20) tiene que dar FALSO, que es equivalente a un valor 0. Vamos a
verlo:
El resultado es FALSO:
Vamos a ver cómo transformar ese FALSO en un 0 con las 6 fórmulas. Sigue
estos pasos:
Haz clic en I3
Haz clic en I4
Haz clic en I5
Haz clic en I6
Haz clic en I7
Haz clic en I8
El resultado:
Por tanto, hemos convertido el valor FALSO en un 0 usando 6 fórmulas
distintas. Cualquiera de ellas igual de válida, no hay una fórmula mejor que las
otras. Pero nosotros, en este Minicurso, elegiremos la primera de ellas y las dos
últimas por una razón que explicaremos más adelante.
Si buscas fórmulas matriciales en Internet, te puedes encontrar cualquiera de las 6
fórmulas. Pero insistimos que nosotros usaremos la primera y las dos últimas por
una razón que explicaremos más adelante.
Una vez vistas las 6 maneras de convertir un VERDADERO en un 1 o un FALSO en un
0, vamos a aplicarlo a nuestro ejemplo con la finalidad de crear una fórmula lo más
sencilla posible que me cuente en la celda E2 cuántos números mayores que 20
hay en la columna A. Lo que tenemos que hacer es usar cualquiera de las 6
fórmulas para convertir los VERDADERO y FALSO de la columna B en 1's y 0's. Haz lo
siguiente:
Haz clic en B2
Haz doble clic en el cuadro de relleno (parte inferior derecha de la celda) para
rellenar toda la columna B
El resultado:
Un valor 1 indica que el número en la columna A es mayor que 20 y un valor 0
indica que el número en la columna A no es mayor que 20. La fórmula sigue
siendo muy sencilla y no requiere de la función SI().
Por último, bastará ahora con sumar la columna B y ya tendríamos el conteo de
los valores mayores que 20. La fórmula más sencilla que hay sería:
Haz clic en E2
El resultado:
Esto significa que la columna A tiene 17 celdas con valores mayores que 20.
Observa que hemos hecho el conteo usando funciones muy sencillas. Es la
forma más sencilla que hemos visto hasta ahora de hacer un conteo. Solamente
hemos usado estas dos funciones: =(A2>20)*1 en la columna B
y =SUMA(B2:B31) en la celda E2. Recuerda que hemos usado el truco de usar la
función SUMA() para contar.
Sin embargo, aún no hemos acabado, porque para obtener el conteo, hemos
necesitado de la columna B, y nosotros lo que queremos es no usar rangos con
datos intermedios. Hemos de obtener una fórmula que no necesite de la columna
B y, como siempre, esto nos lleva a buscar una función matricial de Tipo 1 que
haga lo mismo que la fórmula estándar, y, una vez obtenida esta función de Tipo
1, ya te será fácil en este punto del curso ver cómo obtenemos una función de
Tipo 2 o de Tipo 3 para hacer el conteo.
Fórmula matricial de Tipo 1:
Pulsa la tecla SUPR para borrar su contenido. No hagas clic en ningún sitio para
que no se deshaga la selección.
Teclea la fórmula =(A2:A31>20)*1 y CONTROL+MAYÚSCULAS+ENTER
El resultado:
Es exactamente igual que antes. No cambia nada. Solamente que ahora tenemos
ya la fórmula matricial de Tipo 1.
Fórmula de resumen matricial de Tipo 2 o Tipo 3
A partir de la fórmula de Tipo 1 obtenemos la de Tipo 2 o Tipo 3. Basta con teclear
la función de resumen y ponerle en su interior como parámetro la misma fórmula
de Tipo 1. Vamos a ver dos fórmulas, la de Tipo 2 que será SUMA() acabada con
CONTROL+MAYUSCULAS+ENTER y la de Tipo 3 que
será SUMAPRODUCTO() acabado en ENTER.
Haz clic en E2
Teclea la fórmula:
=SUMA((A2:A31>20)*1)
Haz clic en E3
Teclea la fórmula:
=SUMAPRODUCTO((A2:A31>20)*1)
Ahora ya puedes borrar el contenido de la columna B y verás que las fórmulas en
E2 y E3 no cambian, es decir, son fórmulas totalmente independientes que no
necesitan de rangos intermedios:
Es más, si cambiamos el valor de la celda A3 e introducimos el valor 99, las
fórmulas E2 y E3 incrementarán el conteo para añadir este nuevo valor mayor que
20:
Si hay que elegir entre las dos fórmulas, SUMA() introducida con
CONTROL+MAYUSCULAS+ENTER o SUMAPRODUCTO() introducida con ENTER,
recuera que siempre es más cómodo usar SUMAPRODUCTO() acabado en ENTER y
además esta función tiene una gran ventaja que veremos enseguida.
Y también:
Ahora hazlo tú:
Continuamos en archivo "Cuestiones.xls", en la hoja "Meses":
En esta hoja hay una lista con muchas fechas en la columna A. Supón que te
piden, en la celda E2, una fórmula que haga un conteo de cuántas fechas hay del
mes de septiembre en la columna A. Te piden que no uses rangos con datos
intermedios. Hazlo usando SUMA() ó SUMAPRODUCTO() para contar y con las menos
funciones posibles, teniendo en cuenta que una de las funciones que tendrás que
usar es MES(fecha).
El resultado debería ser:
Te damos una pista:
Clic aquí para ver
Te damos la solución:
Clic aquí para ver
Haz clic en C2
Teclea la fórmula:
=SI(CONTAR.SI($B$2:$B$120;B2)>1;"X";"") y ENTER
Haz doble clic en el cuadro de relleno (parte inferior derecha de la celda) para
rellenar toda la columna C
El resultado:
Sólo hay una "X" en la columna C cuando en la misma fila de la columna B hay un
código que esté repetido en la propia columna B. Si tienes Excel 2007+ puedes
comprobar que realmente hay una X por cada valor repetido, seleccionando la
columna B completa y haciendo clic en la ficha Inicio → Formato condicional →
Resaltar reglas de celdas* → Duplicar valores** → Aceptar. Aparecerán
coloreadas las celdas repetidas de B y verás que coinciden con las "X" de C:
(*) Mala traducción del inglés "Reglas para resaltar celdas"
(**) Mala traducción del inglés "Resaltar valores duplicados"
Ahora sería cuestión de contar las "X", pero, atención, habíamos dicho que
trabajaríamos solamente con VERDADERO y FALSO, no con "X" o nulos "". Por tanto,
sigue el paso que hemos explicado antes para transformar un SI() en una
operación lógica, es decir, bórralo todo excepto el "=" al inicio de la fórmula, los
paréntesis y la prueba lógica o condición:
Haz clic en C2
=(CONTAR.SI($B$2:$B$120;B2)>1) y ENTER
Haz doble clic en el cuadro de relleno (parte inferior derecha de la celda) para
rellenar toda la columna C
El resultado:
Un valor VERDADERO indica que el código en la columna B está repetido y un
valor FALSO indica que el código en la columna B no está repetido. Ahora la
fórmula es mucho más sencilla y no requiere de la función SI().
Bastaría ahora con contar los VERDADERO de la columna C y ya tendríamos el
conteo de los valores repetidos. Pero ya hemos dicho que la forma más sencilla
posible para contar es usar la función SUMA() con 1's y 0's. Para convertir un
valor VERDADERO o FALSO en un valor 1 y 0 respectivamente recordar que hay 6
fórmulas:
(CONTAR.SI($B$2:$B$120;B2)>1)*1
(CONTAR.SI($B$2:$B$120;B2)>1)+0
--(CONTAR.SI($B$2:$B$120;B2)>1)
N(CONTAR.SI($B$2:$B$120;B2)>1)
(CONTAR.SI($B$2:$B$120;B2)>1)*VERDADERO
(CONTAR.SI($B$2:$B$120;B2)>1)+FALSO
Excel considera los 0's como valor FALSO y los 1's como valor VERDADERO, si bien en
la práctica, Excel considerará 0 como FALSO, y cualquier valor distinto de cero: ...
-4, -3, -2, -1, 1, 2, 3, 4 ... como VERDADERO. Como hemos dicho, cualquiera de las 6
fórmulas es igual de válida y, si buscas fórmulas matriciales en Internet, te puedes
encontrar cualquiera de ellas. Pero insistimos que nosotros usaremos la primera y
las dos últimas por una razón que explicaremos más adelante.
Vamos a convertir los VERDADERO y FALSO de la columna C en 1's y 0's. Haz los
siguiente:
Haz clic en C2
Teclea la fórmula:
Haz doble clic en el cuadro de relleno (parte inferior derecha de la celda) para
rellenar toda la columna C
El resultado:
Un valor 1 indica que el código en la columna B está repetido y un valor 0 indica
que el código en la columna B no está repetido. La fórmula ya no requiere de la
función SI().
Por último, bastará ahora con sumar la columna C y ya tendríamos el conteo de
los valores repetidos en la columna B. La fórmula más sencilla que hay sería:
Haz clic en F2
El resultado:
Esto significa que la columna B tiene 16 celdas con valores repetidos, si bien no
queda claro cuántos códigos únicos hay repetidos, ya que este 16 puede significar
1 código repetido 16 veces, 8 códigos repetidos 2 veces, etc.
Observa que hemos hecho el conteo usando funciones bastante sencillas.
Recuerda que hemos usado el truco de usar la función SUMA() para contar.
Sin embargo, aún no hemos acabado, porque para obtener el conteo, hemos
necesitado de la columna C, y nosotros lo que queremos es no usar rangos con
datos intermedios. Hemos de obtener una fórmula que no necesite de la columna
C y, como siempre, esto nos lleva a buscar una función matricial de Tipo 1 que
haga lo mismo que la fórmula estándar, y, una vez obtenida esta función de Tipo
1, ya te será fácil en este punto del curso ver cómo obtenemos una función de
Tipo 2 o de Tipo 3 para hacer el conteo.
Fórmula matricial de Tipo 1:
Selecciona desde C2 hasta C120 (una manera rápida de hacerlo es hacer clic en
C2 y pulsar CTRL+SHIFT+↓)
Pulsa la tecla SUPR para borrar su contenido. No hagas clic en ningún sitio para
que no se deshaga la selección.
Teclea la fórmula:
=(CONTAR.SI(B2:B120;B2:B120)>1)*1 y CONTROL+MAYÚSCULAS+ENTER
El resultado:
Es exactamente igual que antes. No cambia nada. Solamente que ahora tenemos
ya la fórmula matricial de Tipo 1.
Fórmula de resumen matricial de Tipo 2 o Tipo 3
A partir de la fórmula de Tipo 1 obtenemos la de Tipo 2 o Tipo 3. Basta con teclear
la función de resumen y ponerle en su interior como parámetro la misma fórmula
de Tipo 1. Vamos a ver dos fórmulas, la de Tipo 2 que será SUMA() acabada con
CONTROL+MAYUSCULAS+ENTER y la de Tipo 3 que
será SUMAPRODUCTO() acabado en ENTER.
Haz clic en F2
Teclea la fórmula:
=SUMA((CONTAR.SI(B2:B120;B2:B120)>1)*1) y
CONTROL+MAYÚSCULAS+ENTER
Haz clic en F3
Teclea la fórmula:
=SUMAPRODUCTO((CONTAR.SI(B2:B120;B2:B120)>1)*1) y ENTER
=SUMAPRODUCTO(N(CONTAR.SI(B2:B120;B2:B120)>1)) y ENTER
El resultado con estas fórmulas habría de ser el correcto:
Ahora ya puedes borrar el contenido de la columna C y verás que las fórmulas en
F2 y F3 no cambian, es decir, son fórmulas totalmente independientes que no
necesitan de rangos intermedios:
Es más, si cambiamos el valor de, por ejemplo, las celdas B6 y B7 introduciendo el
código "AAA", las fórmulas F2 y F3 incrementarán el conteo en 2 para añadir este
nuevo código repetido 2 veces:
Si hay que elegir entre las dos fórmulas, SUMA() introducida con
CONTROL+MAYUSCULAS+ENTER o SUMAPRODUCTO() introducida con ENTER,
recuera que siempre es más cómodo usar SUMAPRODUCTO() acabado en ENTER y
además esta función tiene una gran ventaja que veremos enseguida.
Y también:
Continua en la siguiente entrega. Puedes también ir al Indice de los Minicursos o Volver arriba.
=(MES(A3)>=7)*(MES(A3)<=9) y ENTER
Haz doble clic en el cuadro de relleno (parte inferior derecha de la celda) para
rellenar toda la columna B
El resultado:
Un valor 1 indica que la fecha en la columna A está entre julio y septiembre y un
valor 0 indica que no lo está. La fórmula no requiere de la función SI() y por tanto
es una operación lógica, y es más sencilla que usar un SI().
Pero hay una diferencia con lo que hemos hecho hasta ahora, y es que no hemos
hecho la multiplicación por 1 para transformar los VERDADERO en 1's y
los FALSO en 0's.
Ya no necesito multiplicar por 1, ni necesito ninguna de las 6 maneras que dijimos
de transformar VERDADERO y FALSO en 1's y 0's porque cuando multiplico 2 ó
más operaciones lógicas entre paréntesis, Excel ya hace automáticamente la
conversión en 1's y 0's. Por tanto, sólo es necesario hacer (operación
lógica)*1 cuando solamente tengo 1 operación lógica que quiero convertir en 1
ó 0.
Dicho de otra manera, cuando se usa el operador * como "AND" lógico con 2 ó
más operaciones lógicas, Excel siempre da como resultado un 1 ó un 0. Debe
interpretarse entonces ese 1 como VERDADERO y ese 0 como FALSO.
Aun en estos casos en que se multipliquen varias operaciones lógicas, los
paréntesis alrededor de cada operación lógica hay que seguir
manteniéndolos. Es decir, la operación sin paréntesis
=MES(A3)>=7*MES(A3)<=9 dará resultados totalmente erróneos.
Antes hemos dicho que preferíamos usar la fórmula (operación lógica)*1 de entre
las 6 fórmulas que podemos usar para convertir VERDADERO y FALSO en 1's y
0's. La razón es que así usaremos siempre el operador "*".
Una vez dicho esto, para obtener el total de fechas del tercer trimestre, puedo,
provisionalmente, poner en F4 el total con una función SUMA() estándar para
sumar todos los 1's:
Haz clic en F4
El resultado:
Observa que hemos hecho el conteo usando funciones bastante sencillas.
Recuerda que hemos usado el truco de usar la función SUMA() para contar.
Sin embargo, aún no hemos acabado, porque para obtener el conteo, hemos
necesitado de la columna B, y nosotros lo que queremos es no usar rangos con
datos intermedios. Hemos de obtener una fórmula que no necesite de la columna
B y, como siempre, esto nos lleva a buscar una función matricial de Tipo 1 que
haga lo mismo que la fórmula estándar, y, una vez obtenida esta función de Tipo
1, ya te será fácil en este punto del curso ver cómo obtenemos una función de
Tipo 2 o de Tipo 3 para hacer el conteo.
Fórmula matricial de Tipo 1:
Selecciona desde B3 hasta B102 (una manera rápida de hacerlo es hacer clic en
B3 y pulsar CTRL+SHIFT+↓)
Pulsa la tecla SUPR para borrar su contenido. No hagas clic en ningún sitio para
que no se deshaga la selección.
Teclea la fórmula:
=(MES(A3:A102)>=7)*(MES(A3:A102)<=9) y CONTROL+MAYÚSCULAS+ENTER
El resultado:
Es exactamente igual que antes. No cambia nada. Solamente que ahora tenemos
ya la fórmula matricial de Tipo 1.
Fórmula de resumen matricial de Tipo 2 o Tipo 3:
A partir de la fórmula de Tipo 1 obtenemos la de Tipo 2 o Tipo 3. Basta con teclear
la función de resumen y ponerle en su interior como parámetro la misma fórmula
de Tipo 1. Vamos a ver dos fórmulas, la de Tipo 2 que será SUMA() acabada con
CONTROL+MAYUSCULAS+ENTER y la de Tipo 3 que
será SUMAPRODUCTO() acabado en ENTER.
Haz clic en F4
Teclea la fórmula:
=SUMA((MES(A3:A102)>=7)*(MES(A3:A102)<=9)) y
CONTROL+MAYÚSCULAS+ENTER
Haz clic en F5
Teclea la fórmula:
=SUMAPRODUCTO((MES(A3:A102)>=7)*(MES(A3:A102)<=9)) y ENTER
El resultado con ambas fórmulas habría de ser el correcto:
Ahora ya puedes borrar el contenido de la columna B y verás que las fórmulas en
F4 y F5 no cambian, es decir, son fórmulas totalmente independientes que no
necesitan de rangos intermedios:
Es más, si cambiamos el valor de, por ejemplo, la celda A3 por una fecha del mes
de julio, las fórmulas F4 y F5 incrementarán el conteo en 1 para añadir esta nueva
fecha del segundo semestre:
Si hay que elegir entre las dos fórmulas, SUMA() introducida con
CONTROL+MAYUSCULAS+ENTER o SUMAPRODUCTO() introducida con ENTER,
recuera que siempre es más cómodo usar SUMAPRODUCTO() acabado en ENTER y
además esta función tiene una gran ventaja que veremos enseguida.
Y también:
Sería interesante que vieses cómo opera Excel con el operador * usado
como AND lógico. Haz lo siguiente:
Haz clic en D3
Haz doble clic en el cuadro de relleno (parte inferior derecha de la celda) para
rellenar toda la columna D
Haz clic en E3
Haz doble clic en el cuadro de relleno (parte inferior derecha de la celda) para
rellenar toda la columna E
Haz clic en F3
Haz doble clic en el cuadro de relleno (parte inferior derecha de la celda) para
rellenar toda la columna F
Por consiguiente, al trabajar con 1's y 0's en vez de con VERDADERO y FALSO, el
operador * hace las veces de operador lógico "AND" porque, como ves en las
celdas naranjas de la imagen anterior, solamente 1*1 = 1 (VERDADERO), mientras
que en resto de los casos es 0 (FALSO).
Ahora es cuestión de sumar los 1's de la columna F para saber cuántas fechas de
la columna A son del tercer trimestre:
Haz clic en G1
Sin embargo, podemos hacer este cálculo si unimos los cálculos de las columnas
D y E en una sola operación en la columna F, haciendo lo siguiente:
Haz doble clic en el cuadro de relleno (parte inferior derecha de la celda) para
rellenar toda la columna F
Haz clic en G1
=SUMAPRODUCTO((MES(A3:A102)>=7)*(MES(A3:A102)<=9)) y ENTER
Cambiando un poco lo que hemos estado diciendo hasta ahora, podemos ahora
decir que, es lo mismo:
Ahora hazlo tú:
Seguimos en el archivo "Cuestiones.xls" en la hoja "Compras Meses":
Es la misma hoja que "Compras Meses 2". Tenemos las mismas fechas en la
columna A, pero además hemos añadido a esa fecha el número de compras de
los clientes y el volumen de facturación de esa fecha en las columnas B y C.
Supón que te piden que uses SUMAPRODUCTO() para calcular en F3 cuántas fechas
de los meses entre septiembre y noviembre hay con 10 ó más compras y con un
volumen de 20.000 ó más. Es decir, te piden usar SUMAPRODUCTO() para hacer un
conteo. El resultado debería ser:
Te damos una pista 1:
Clic aquí para ver
Te damos una pista 2:
Clic aquí para ver
Te damos la solución:
Clic aquí para ver
Esta vez te piden, en la celda F11, una fórmula que calcule la suma total del
volumen de compras, pero solamente de las compras hechas entre los meses de
septiembre a noviembre, con más de 10 compras y que facturen más de
20.000. Fíjate que no te piden "cuántas" sino que "sumes" el volumen de
compras.
Primero te diremos la fórmula y luego te explicaremos por qué esta fórmula da la
suma correcta:
Teclea la fórmula:
=SUMAPRODUCTO((MES(A3:A102)>=9)*(MES(A3:A102)<=11)*(B3:B102>=10)*(C3:C102
>=20000)*(C3:C102)) y ENTER
Esto significa que la suma de los valores de la columna C que cumplen las 4
condiciones que nos han pedido, es el valor que se muestra en la celda F11.
Haz clic en D3
Haz clic en E3
Haz clic en F3
Haz clic en G3
En este caso, la columna D muestra el valor 1 (VERDADERO) si el mes de la fecha en
la columna A es desde septiembre hasta diciembre. La columna E muestra el valor
1 (VERDADERO) si el mes de la fecha en la columna A es desde enero hasta
noviembre. La columna F muestra el valor 1 (VERDADERO) si la cantidad de compras
de la columna B es mayor o igual que 10. La columna G muestra el valor 1
(VERDADERO) si el volumen de compras de la columna C es mayor o igual que
20.000. Por tanto, si te fijas en las columnas D, E, F y G por separado,
aparentemente no estamos resolviendo lo que te piden.
Pero si te fijas en todas las columnas a la vez, verás que las filas que tienen un 1
en las cuatro columnas D, E, F y G a la vez son justamente las filas que cumplen
las 4 condiciones que te han pedido.
Por tanto, podemos crear, en la columna H, una fórmula que me indique
claramente las filas que tienen un 1 a la vez en las columnas D, E, F y G. La mejor
fórmula es, precisamente, multiplicar (operador "*") las filas de las columnas D, E,
F y G de forma que en la columna H solamente habrá un 1 si todas las filas son 1
a la vez. Para verlo, haz lo siguiente:
Haz clic en H3
Teclea la fórmula =E3*D3*F3*G3 y ENTER.
Haz doble clic en el cuadro de relleno (parte inferior derecha de la celda) para
rellenar toda la columna H
Para que lo veas mejor, en la siguiente imagen hemos coloreado las celdas que
contienen un 1 en las columnas D, E, F y G y comprueba que solamente las filas
que son todas verdes tienen un 1 en la columna H:
Por consiguiente, al trabajar con 1's y 0's en vez de con VERDADERO y FALSO, el
operador * hace las veces de operador lógico "AND" porque, como ves en las
celdas naranjas de la imagen anterior, solamente 1*1*1*1 = 1 (VERDADERO),
mientras que en resto de los casos es 0 (FALSO).
Pero aún no hemos acabado. Ahora hay que multiplicar la columna H por el
valor que te han pedido sumar, que es el volumen de compras de la columna C.
Lo haremos en la columna I. Haz lo siguiente:
Haz clic en I3
Haz doble clic en el cuadro de relleno (parte inferior derecha de la celda) para
rellenar toda la columna I
El resultado:
Por tanto, la columna I contiene los mismos valores que la columna C pero
solamente cuando el valor en la columna H es 1, es decir, cuando las 4
condiciones que te han pedido son 1 (VERDADERO). Por tanto, la columna I contiene
los volúmenes de ventas de la columna C solamente cuando se cumplen las 4
condiciones a la vez.
Ahora es cuestión de sumar los valores de la columna I para saber la suma de los
valores de la columna C que cumplen las 4 condiciones solicitadas:
Haz clic en J1
Haz clic en I3
Teclea la fórmula:
=(MES(A3)>=9)*(MES(A3)<=11)*(B3>=10)*(C3>=20000)*(C3) y ENTER
Haz doble clic en el cuadro de relleno (parte inferior derecha de la celda) para
rellenar toda la columna I
Haz clic en J1
Teclea la fórmula:
=SUMAPRODUCTO((MES(A3:A102)>=9)*(MES(A3:A102)<=11)*(B3:B102>=10)*(C3:C102
>=20000)*(C3:C102)) y ENTER
Si te piden calcular el promedio del volumen de ventas, tendrías que usar una
función PROMEDIO() matricialmente. Por ejemplo, haz clic en K5 y teclea:
=PROMEDIO(SI((MES(A3:A102)>=9)*(MES(A3:A102)<=11)*(B3:B102>=10)*(C3:C102>
=20000);(C3:C102);"")) y CONTROL+MAYUSCULAS+ENTER
Lo que hemos hecho es lo siguiente: para las condiciones lógicas hemos usado el
operador * como AND lógico. Pero para devolver los valores del rango C3:C102
que cumplen todas las condiciones lógicas, ya no hemos usado el
operador * como multiplicación aritmética estándar, sino que hemos usado una
función SI() que retorne un nulo "" cuando no se cumplen todas las condiciones
lógicas, y que retorne el valor correspondiente de C3:C102 cuando se cumplen
todas las condiciones lógicas.
El resultado debería ser:
Se trata de una lista de ventas de productos con un cierto código (columna A) que
se han vendido en cierta fecha (columna B), una cierta cantidad de unidades
(columna C) y por un cierto valor en euros (columna D).
Supón que te piden el total de ventas en euros (columna D) de aquellos productos
que se hayan vendido una cantidad menor o igual a 10 unidades (columna C) pero
que hayan facturado igual o más de 10.000 euros (columna D nuevamente). Pero
te piden dicho total solamente de los productos PR-001 "y" PR-003 "y" PR-005.
Las dos primeras condiciones hay que interpretarlas como un "AND" normal, pero
la condición de los tres códigos de producto ha de interpretarse como "sumado
a" debido a que ningún producto es a la vez el producto PR-001 y PR-003 y PR-
005. Vamos primero a calcularlo por pasos, por ejemplo, en la columna L.
Resaltamos en color la parte que cambia en cada fórmula:
Haz clic en L2
Teclea la fórmula:
=SUMAR.SI.CONJUNTO(D:D;C:C;"<=10";D:D;">=10000";A:A;"PR-001") y ENTER
Haz clic en L3
Teclea la fórmula:
=SUMAR.SI.CONJUNTO(D:D;C:C;"<=10";D:D;">=10000";A:A;"PR-003") y ENTER
Haz clic en L4
Teclea la fórmula:
=SUMAR.SI.CONJUNTO(D:D;C:C;"<=10";D:D;">=10000";A:A;"PR-005") y ENTER
El resultado debería ser:
Sin embargo, te han pedido la suma, por lo que debes teclear por ejemplo en L5 la
fórmula:
=L2+L3+L4
El resultado:
Sin embargo, lo correcto es poner el cálculo en una sola celda. Haz lo siguiente:
Haz clic en M2
Teclea la siguiente fórmula que no es más que la suma de las tres fórmulas
anteriores, por lo que si quieres puedes copiarlas y pegarlas para ahorrarte de
teclear:
=SUMAR.SI.CONJUNTO(D:D;C:C;"<=10";D:D;">=10000";A:A;"PR-001") + SUMAR.SI.
CONJUNTO(D:D;C:C;"<=10";D:D;">=10000";A:A;"PR-003") + SUMAR.SI.CONJUNTO(D
:D;C:C;"<=10";D:D;">=10000";A:A;"PR-005") y ENTER
En este caso, por tanto, hemos usado el operador "+" como suma aritmética para
"unir" el total de los tres productos y obtener así el total de ventas de tres los
productos por separado pero que cumplan las dos primeras condiciones (menos
de 10 ventas pero más de 10.000 de facturación). Dicho de otra manera, la
siguiente fórmula incorrecta habría dado un resultado totalmente erróneo:
=SUMAR.SI.CONJUNTO(D:D;C:C;"<=10";D:D;">=10000";A:A;"PR-001";A:A;"PR-
003";A:A;"PR-005")
... ya que ningún producto es el producto con el código PR-001, el código PR-003
y el código PR-005 a la vez.
Ahora veremos el mismo ejemplo usando la lógica matricial donde el
operador suma "+" se usa como "OR" lógico.
Con la lógica matricial ya puedes usar Excel 2003 o mayor. Lo haremos también
por pasos. Indicaremos con 1's y 0's en las columnas E, F y G las filas que
cumplan todas las condiciones:
Haz clic en E2
Teclea la siguiente fórmula estándar que indica con 1's si un producto es el PR-
001 "o" el PR-032 "o" el PR-005. Observa que usamos el operador "+" como
"OR" lógico y la condiciones lógicas también han de estar entre paréntesis:
Haz doble clic en el cuadro de relleno (parte inferior derecha de la celda) para
rellenar toda la columna E
El resultado:
Observa que en la columna E sólo hay un 1 si el código del producto es PR-
001 "o" PR-003 "o" PR-005.
Haz clic en F2
Teclea la siguiente fórmula estándar que indica con 1's si de un producto se ha
vendido igual o menos que 10 unidades pero ha facturado igual o más que
10.000 euros. Esta vez las condiciones lógicas sí que han de cumplirse a la vez:
Haz doble clic en el cuadro de relleno (parte inferior derecha de la celda) para
rellenar toda la columna F
El resultado:
Haz clic en G2
=E2*F2 y ENTER
Vuelve a hacer clic en G2
Haz doble clic en el cuadro de relleno (parte inferior derecha de la celda) para
rellenar toda la columna G
El resultado:
Observa que sólo hay un 1 en la columna G cuando las columnas E y F
contienen a la vez un 1.
Sumando la columna G podrías contar cuántas de las ventas cumplen estas
condiciones, pero te han pedido la suma de las cantidades en euros, por tanto,
puedes usar en la columna H el operador * como multiplicación aritmética para
obtener los valores de la columna D que cumplen todas las condiciones (que en la
columna G haya un 1):
Haz clic en H2
=G2*D2 y ENTER
El resultado:
La columna H ya contiene por fin los valores a sumar (el valor de la columna D
cuando la columna G tiene un 1).
Vamos a hacer la suma en la celda K2:
Haz clic en K2
Sin embargo, las fórmulas matriciales tienen como principal y más importante
utilidad el no tener que usar rangos con cálculos intermedios, por tanto usaremos
una fórmula matricial de Tipo 2 o Tipo 3 para hacer la suma sin rangos con
cálculos intermedios. Nos saltamos el paso de convertir las fórmulas estándares
en fórmulas matriciales de Tipo 1 y solamente te decimos que has de cambiar las
celdas por rangos, que los rangos a usar para la fórmula matricial van desde la
fila 2 hasta la fila 101 y que usaremos SUMAPRODUCTO() con ENTER (Tipo 3):
Haz clic en K3
Teclea la fórmula:
=SUMAPRODUCTO(((A2:A101="PR-001")+(A2:A101="PR-003")+(A2:A101="PR-
005"))*(C2:C101<=10)*(D2:D101>=10000)*(D2:D101)) y ENTER
Dado que la precedencia del operador * es mayor que la del operador +, las
condiciones lógicas unidas por el operador + han de ir encerradas entre
paréntesis, que hemos resaltado en color junto con los rangos que has de poner.
El resultado:
La fórmula en K3 muestra el resultado correcto sin rangos intermedios (la fórmula
en K2 da resultado incorrecto pues necesita de las columnas E hasta H).
Recuerda que los valores cero no influyen en una suma pero sí en otras funciones.
Si te pidiesen el promedio, máximo, mínimo, etc., habrías de sustituir el último
operador *, el que actúa como multiplicación aritmética, por una función SI() que
devuelva un nulo "" cuando no se cumplan las condiciones:
=PROMEDIO(SI(((A2:A101="PR-001")+(A2:A101="PR-003")+(A2:A101="PR-
005"))*(C2:C101<=10)*(D2:D101>=10000);(D2:D101);"")) y
CONTROL+MAYUSCULAS+ENTER
El promedio habría de ser en este caso 60.000.
Se trata de una hoja de una supuesta empresa que vende unos productos. En
esta hoja se anotan las incidencias en las ventas. Es una lista de productos mal
entregados y que ha habido que cambiar. En la columna A están los códigos de
los productos que fueron entregados al cliente y en la columna B los códigos de
los productos que el cliente realmente solicitó. En la columna C está la cantidad de
unidades cambiadas.
Supón que te piden que calcules la suma de unidades cambiadas que afectan a
los productos PR-001 "y" PR-003, pero te lo piden tanto si esos dos productos
son 'a cambiar' como si son 'cambiar por', es decir, tanto si aparecen en la
columna A como si aparecen en la B. La solución es comprobar si PR-001 "y" PR-
003 aparecen en la columna A "y" en la B. Podemos decidir usar operaciones
lógicas con OR (ya sabemos entonces que esos "y" son un "+") y, una vez
obtenido el VERDADERO o FALSO, usar el operador "*" como multiplicación
aritmética "de toda la vida" para multiplicar por la columna C y así obtener la
cantidad. Esto no va a funcionar en este caso. Te lo vamos a mostrar por pasos.
Haz lo siguiente:
Haz clic en D2
=(A2="PR-001")+(A2="PR-003") y ENTER
Haz clic en E2
=(B2="PR-001")+(B2="PR-003") y ENTER
Haz clic en F2
=D2+E2 y ENTER
Por último, dado que nos piden las cantidades de la columna C, podemos usar el
operador * como multiplicación aritmética y multiplicar la cantidad de la columna
C por el resultado que nos ha dado en la columna F (que nosotros por ahora
estamos pensando que solamente puede ser 0 ó 1 y que enseguida
veremos que no es así). Por tanto, haz clic en G2 y teclea la siguiente
fórmula (con * como multiplicación):
=F2*C2 y ENTER
Selecciona el rango D2:G2 y rellena las columnas haciendo doble clic en el cuadro
de relleno de la celda G2.
El resultado:
Verás en la columna F unas celdas rojas. Estas celdas rojas indican un valor que
no sea 1 ó 0. Observa que aparecen algunos valores 2. Para Excel un 2
significa VERDADERO, pero para una multiplicación aritmética sigue siendo un 2, por
tanto, la fórmula en la columna G no repite el valor de la columna C como hemos
visto hasta ahora sino que en algunas celda multiplica por 0, en otras multiplica
por 1 (hasta aquí correcto) y en otras multiplica por 2, lo que da un resultado
totalmente incorrecto.
Por tanto, la fórmula correcta en la columna F es una función SI() que cambie
cualquier valor igual o mayor que 2 por un 1. Haz lo siguiente:
Haz clic en F2
Teclea la fórmula:
=SI(D2+E2=0;0;1) y ENTER
Vuelve a hacer clic en F2 y haz doble clic en el cuadro de relleno para rellenar la
columna entera.
Haz la suma de la columna G y verás que el resultado es 1905, que es correcto.
Por último, tras hacer la "traducción" a una fórmula matricial de resumen de Tipo
3, la fórmula final que no depende de rangos intermedios es:
Haz clic en I2
Teclea la fórmula:
=SUMA(C2:C60*SI((A2:A60="PR-001")+(A2:A60="PR-003")+(B2:B60="PR-001")+
(B2:B60="PR-003")=0;0;1))
Recopilación de fórmulas matriciales para
entender las matrices en Excel
Con lo visto hasta ahora ya tienes la base para entender las fórmulas matriciales.
Ya sabes que hay 4 maneras de usarlas y que las usuales son de Tipo 2 o de Tipo
3: una función de resumen que tiene dentro una fórmula matricial.
Sin embargo, cuando necesites una fórmula para hacer un cálculo, en tu empresa
por ejemplo, y no tengas una idea clara de cómo hacerlo, es mejor que primero
busques en Internet. Esto es debido a que las fórmulas que se encuentran por
Internet suelen estar ya comprobadas y solamente muy pocas son no fiables. El
problema es que estas fórmulas que encuentres en Internet deberás adaptarlas a
tus necesidades haciendo los cambios necesarios. En el caso de que la fórmula
que encuentres en Internet sea una fórmula matricial, lo más seguro es que, para
adaptarla a tu necesidad, lo único que haya que hacer sea cambiar los rangos.
Con los conocimientos que has adquirido en este Minicurso esperamos que estos
cambios te sean fáciles de hacer.
En Internet hay muchas fórmulas matriciales en bastantes sitios web por tanto te
conviene siempre hacer una búsqueda, en Google por ejemplo, para ahorrar
tiempo.
https://support.office.com/es-es/
https://www.microsoft.com/learning/es-es/
http://blogs.office.com/
https://technet.microsoft.com/es-es/
Estas fórmulas que hemos encontrado por Internet las hemos incluido en el
archivo "Recopilacion.xls".
Archivo "Recopilacion.xls"
Si ya has descargado los ejemplos, en el archivo "Recopilacion.xls" te hemos
puesto una recopilación de muchas fórmulas matriciales de muchos tipos. Las
fórmulas matriciales están todas en celdas de color naranja:
Veamos:
Conteos
Hemos puesto varias fórmulas de conteos en la hoja "Rec 1" del archivo
"Recopilacion.xls".
Por ejemplo, antes hemos visto que para contar cuantos textos hay en un rango
como B3:B20 sería:
=SUMA(SI(ESTEXTO(B3:B20);1;0))
=CONTAR.SI(B3:B20;"*") y ENTER
También puedes ver en la celda G4 esta fórmula que cuenta las celdas que
contienen texto con 3 caracteres:
=CONTAR.SI(B3:B20;"???") y ENTER
O bien en G5 esta fórmula que cuenta las celdas que tengan un código postal que
empiece por "08", con tal de que los códigos postales los hayáis formateado
como texto en vuestra hoja de cálculo.
=CONTAR.SI(B3:B20;"08???") y ENTER
En la celda G7 está la función MODA() que retorna el valor que aparece más
veces repetido en la columna J y en la celda G8 hay una fórmula matricial de Tipo
3 con CONTAR.SI() que cuenta cuántas veces aparece dicha moda en la columna
J. Hay que decir que la función MODA() es compatible con Excel 2003, pero a partir
de la versión Excel 2010 se añadió la función MODA.UNO() equivalente
a MODA() y MODA.VARIOS() que retorna varias modas cuando hay varios valores
que se repiten la misma cantidad de veces. MODA.VARIOS() es exclusivamente
matricial de Tipo 1.
A la hora de buscar la MODA(), mucha gente en Internet pregunta si la
función MODA() sirve para buscar el texto más repetido en un rango con textos. La
respuesta es que no, pues la función moda es una función numérica. Así pues, en
la celda G10 hemos puesto una fórmula matricial que muestra el texto más
repetido en una rango de textos, en ese caso K3:K20, y en la celda G11 otra
función matricial que cuenta cuántas veces aparece dicho texto.
Seguimos todavía en la hoja "Rec 1". En las celdas G12, G13 y G14 hay distintas
fórmulas para contar cuantas veces aparece un nombre en un rango: contar
independientemente de las mayúsculas y minúsculas o contar dependientemente
de las mayúsculas y las minúsculas con la función IGUAL(). Te hacemos la
siguiente pregunta o reto ¿por qué la celda G13 usa la función SUMA() si es una
función para contar?
Pasamos a la hoja "Rec 2" del archivo "Recopilacion.xls". En esta hoja hay una
lista de alumnos y sus calificaciones en las columnas A hasta C. En las columnas
E y F hay un desglose de las calificaciones en 6 intervalos y en la columna H se
hace el conteo de calificaciones en cada intervalo. Haz clic en H3 y mira la
fórmula. ¿Es una fórmula matricial de Tipo 1, 2, 3 ó 4? ¿Por qué no
usa SI() anidados?
En el rango M3:N4 se cuenta la cantidad de aprobados y no aprobados
desglosado en Hombre o Mujer. Se usa la función SUMA() para contar. Sin
embargo ¿por qué no se usa SUMA(SI(...;1;0)) como hemos dicho hasta ahora?
En la misma hoja "Rec 6", en la celda E12, hay una fórmula que permite averiguar
en qué fila de la columna B hay un valor que está más cercano a 1000, pero dar
como resultado el valor que hay en la columna A o la columna C de dicha fila. La
columna cuyo valor retornará la función se configura en la celda E10: si es -1
retorna el valor de la columna A, si es 0 retorna el propio número de la columna B
y si es 1 retorna el valor de la columna C. No explicaremos esta fórmula, si la
necesitas en alguna situación, copia la fórmula y cambia los rangos.
Filtros
La hoja "Rec 7" del archivo "Recopilacion.xls" hay un rango con unos valores
positivos y negativos en la columna B. En las columnas C hasta F hemos puesto
unas fórmulas que no explicaremos por ser complejas, que permiten filtrar datos
de manera instantánea, debido a que son fórmulas matriciales. Es decir, no
requieren de la funcionalidad de Excel "Filtro avanzado". En la columna C hay una
fórmula matricial para repetir los datos que hay en la columna B pero solamente
los números positivos, excluyendo los negativos y el cero. En la columna D es la
misma fórmula pero filtrando los errores #¡NUM!. En la columna E hay una fórmula
para extraer los números tanto positivos como negativos pero sin repetir ningún
número, solamente valores únicos. En la columna F es la misma fórmula pero
filtrando los errores #¡NUM!.
Calendario automático
La hoja "Rec 8" del archivo "Recopilacion.xls" hay en el rango C4:I9 una
fórmula matricial de Tipo 1 que genera automáticamente el calendario del mes de
la fecha que hay en B2. Tiene en cuenta los años bisiestos. Hay que tener un poco
de cuidado porque en Internet existen fórmulas similares, pero que generan un
calendario de semana litúrgica cuyo primer día es el domingo y que se usa en
países anglosajones, mientras que la fórmula que aquí presentamos genera un
calendario de semana laboral según norma ISO 8601 cuyo primer día es el lunes
y el sábado y el domingo son fin de semana. En Brasil y Portugal el nombre del
lunes es segunda-feira ("segunda feria"), el martes terça-feira ("tercera feria"), etc.,
lo que puede dar lugar a confusión, de todas maneras el sábado y el domingo son
"fin de semana" y se llaman igual que en español, "sábado" y "domingo". Para que
se visualice correctamente el calendario, todas las celdas del rango C4:I9 han de
estar formateadas con el formato personalizado "d":
Segmentación
En la hoja "Rec 9" del archivo "Recopilacion.xls", hay un ejemplo en el que
queda bien clara la utilidad de las funciones matriciales, ya que comprobarás que,
si hubiera que resolverlo sin matrices, sería mucho más complicado. En esta hoja
hay dos rangos nombrados como MONEDA y FACTURADA que indican la
cantidad en dinero y la cantidad en unidades vendidas de ciertos productos en una
empresa.
=CONTAR(SI(MONEDA>=$B8;SI(MONEDA<=$C8;SI(FACTURADA>=D$6;SI(FACTURADA<=D$7
;MONEDA)))))
Después, arrastra con el cuadro de relleno hasta rellenar todo el rango D8:I13.
=SUMAPRODUCTO((MONEDA>=$B27)*(MONEDA<=$C27)*(FACTURADA>=D$6)*(FACTURADA<=
D$7))
Después, arrastra con el cuadro de relleno hasta rellenar todo el rango D27:I32.
Con este ejemplo, puedes comparar la diferencia entre usar SI() anidados y
multiplicar operaciones lógicas, además que es más difícil hacerlo sin matrices.
Cercanos
En la hoja "Rec 10" del archivo "Recopilacion.xls", se pide averiguar qué
números de una lista de números son los más cercanos a otro número de
referencia. La lista de valores está en la columna A que tiene un código de una
persona y en la B que tiene la puntuación obtenida por esa persona. En la celda
H1 está el valor de referencia, por defecto 50 pero se puede ir cambiando. Se trata
de marcar en la columna C con una "X" los números de la columna B más
cercanos al que hay en H1.
Para hacer esto hemos decidido hacer lo siguiente: buscar la diferencia de H1 con
respecto a todas las puntuaciones, poner esta diferencia en un número siempre
positivo con la función ABS(), y entonces hallar el valor mínimo. Todos los
números de la columna B cuya resta con H1 sea igual a este mínimo se marcarán
con una "X".
=MIN(ABS(B2:B25-H1))
=ABS(B2:B25-H1)=D2
Acabada con CONTROL+MAYUSCULAS+ENTER. Esto marca en la columna C
con VERDADERO los valores de B que son iguales al mínimo calculado en D2.
Ahora lo que hay que hacer es unir las dos fórmula anteriores para evitar el uso de
celdas intermedias. Para ello haz clic en C2 y, sin seleccionar nada, teclea la
fórmula de Tipo 1:
=ABS(B2:B25-H1)=MIN(ABS(B2:B25-H1)
Pero una opción mejor para el usuario sería que apareciese una "X" en vez de
VERDADEROS. Haz lo siguiente:
=SI(ABS(B2:B25-H1)=MIN(ABS(B2:B25-H1));"X";"")
Puedes ir poniendo diversos valores en H1 y verás que las "X" van cambiando de
lugar.
Factura
Ponte en la hoja "Rec 11" del archivo "Recopilacion.xls". Es una factura con
varios productos de la que hemos obtenido el total de E9:E13 en las celdas E14,
E15, E16 y E17. Te pedimos como reto que mires las fórmulas que hay en estas
celdas y averigües cuáles son matriciales y cuáles necesitan rangos con cálculos
intermedios.
También te pedimos que averigües qué hacen las fórmulas de las celdas H19 y
H20.
También te pedimos que averigües qué hacen las fórmulas de las celdas H22 y
H23. ¿Por qué H23 es una función errónea? ¿Hay otra función que pueda
sustituir a H22?
En la celda H26 ¿qué calcula esta fórmula? ¿por qué se usa una función SI() en
vez de multiplicar con * para obtener la cantidad?
Frecuencia
En la hoja "Rec 12" del archivo "Recopilacion.xls", vamos a repasar un poco la
función FRECUENCIA(). Haz un clic en G6, observa la fórmula y averigua qué hace
teniendo en cuenta que MISDATOS es el rango C9:C608 y MISINTERVALOS es
el rango F6:F26. Ponte también en las celdas L5 y L6 y averigua qué hacen. ¿Qué
significa el gráfico?
Nombres de rangos en las fórmulas matriciales
En la hoja "Rec 13" del archivo "Recopilacion.xls", te mostramos que las
fórmulas matriciales pueden usarse con rangos nombrados con la funcionalidad
CONTROL-F3. Observa el rango D12:F15 y mira cómo usa un nombre de rango
para crear un fórmula matricial. ¿Esta fórmula es de Tipo 1, 2, 3 o 4? ¿Qué hace
teniendo en cuenta que VENTAS es el rango D5:F8? En la hoja "Rec 14" te
preguntamos lo mismo respecto al rango C18:H18.
Cálculos cruzados
En una celda cualquiera, pongamos por ejemplo la celda L5, usada dentro de una
fórmula, los $ pueden colocarse de las siguientes 4 maneras y se denominan en
Excel de maneras distintas:
L5 = referencia relativa
En las celdas F14 a F19 hay diversas maneras de usar operaciones lógicas para
hacer cálculos cruzados entre el producto "PC" y el vendedor "Ana". La celda F14
usa el OR lógico (+), es decir, VERDADERO ó 1 es venta de PC o venta Ana. La celda
F15 usa el AND lógico (*), es decir, VERDADERO ó 1 es venta de PC y de Ana. Estas
ya las conocemos. Las otras dos fórmulas hacen estos cálculos: F16 es el XOR
lógico que evaluará a VERDADERO ó 1 si es venta de PC o venta de Ana pero no
venta de PC y de Ana. F17 es el NAND lógico que evaluará a VERDADERO ó 1 todos
los casos excepto una venta de PC y de Ana.
Textos
En la hoja "Rec 18" del archivo "Recopilacion.xls", hay una serie de fórmulas
para los textos en un rango: La mayor longitud de los textos, cuál es el texto con
esa mayor longitud y qué lugar que ocupa en su rango. Estas fórmulas las puedes
añadir a las usadas en la hoja "Rec 1".
Esta es la última Entrega. Puedes ir al índice de contenidos para ver todos los
Minicursos, ir a la primera entrega de este minicurso de Matrices en
Excel o Volver arriba.
Etiquetas:Avanzado,Excel,FRECUENCIA,LogicaMatricial,MatricesExcel,Ofimática,Operacio
nesLogicas,ReferenciasAbsolutas,SUMAPRODUCTO