
Supongamos que por algún motivo no podemos operar con el rango A1:A8. Si queremos sumar todos los valores en los dos rango podemos usar la fórmula
=SUMA(A1:A3,A5:A8)
Lo mismo si queremos contar cuántos elementos hay en ambos rangos
=CONTAR(A1:A3,A5:A8)
Pero si queremos usar CONTAR.SI para averiguar cuantos números mayores a 200 hay en los dos rangos, la fórmula
=CONTAR.SI((A1:A3,A5:A8),">200")
da como resultado #¡VALOR! Lo mismo sucede si queremos usar SUMAR.SI
La solución, por lo general, será combinar dos funciones CONTAR.SI. En nuestro caso sería
=CONTAR.SI(A1:A3,">200")+CONTAR.SI(A5:A8,">200")
El problema con esta solución es que en muchos casos tenemos que combinar muchas funciones CONTAR.SI, lo que convierte en engorrosa la tarea de construir nuestra fórmula.
Veamos cuáles son nuestras posibilidades:
Una posibilidad más compacta es ésta (propuesta por Juan Pablo González en el foro de MrExcel):
=SUMA(CONTAR.SI(INDIRECTO({"A1:A3";"A5:A8"}),">200"))
o utilizar la función ARRAY.JOIN del complemento Morefunc que tantas veces he recomendado
={SUMA((ARRAY.JOIN(A1:A3,A5:A8)>200)*1)}
Esta última fórmula es matricial y debe introducirse en la celda apretando simultáneamente Ctrl+Mayúsculas+Enter.
Los "puristas" pueden utilizar también
=SUMA(--(ARRAY.JOIN(A1:A3,A5:A8)>200))
donde usamos el doble signo menos (--) para forzar la conversión de valores lógicos a 1 (VERDADERO) o 0 (FALSO).
Ambas fórmulas dan como resultado 6.
Para sumar condicional podemos usar estas posibilidades:
=SUMA(SUMAR.SI(INDIRECTO({"A1:A3";"A5:A8"}),">200"))
una variante de la fórmula con INDIRECTO, adaptada a suma condicional, o
=SUMAPRODUCTO((ARRAY.JOIN(A1:A3,A5:A8)>200)*ARRAY.JOIN(A1:A3,A5:A8))
donde usamos SUMAPRODUCTO junto con ARRAY.JOIN
Podemos, y es recomendable, usar rangos nominados. Definimos dos nombres, cada uno refiriéndose a cada uno de los rangos
rango1 =Hoja1!$A$1:$A$3
rango2 =Hoja1!$A$5:$A$8
y utilizarlos en nuestras fórmulas. Por ejemplo:
=SUMA(SUMAR.SI(INDIRECTO({"rango1";"rango2"}),">200"))
Habrán notado que en las fórmulas con INDIRECTO usamos la expresión {"A1:A3";"A5:A8"}. Esta expresión crea un matriz en base a los datos de los rangos expresados como texto (que aparecen entre comillas y por ese motivo usamos INDIRECTO). Pueden consultar esta nota sobre funciones y constantes matriciales.
Technorati Tags: MS Excel