martes, 9 de junio de 2020

EXCEL: Suma si las celdas contienen x o y

Excel formula: Sum if cells contain either x or y

Fórmula genérica

=SUMAPRODUCTO(--((ESNUMERO(HALLAR("cat",rng1)) + ESNUMERO(HALLAR("rat",rng1)))>0),rng2)

Explicación

Para sumar si las celdas contienen una cadena de texto u otra (es decir, contienen "gato" o "rata"), puede usar la función SUMAPRODUCTO.

Antecedentes

Cuando suma celdas con criterios "O", debe tener cuidado de no contar dos veces cuando existe la posibilidad de que ambos criterios vuelvan a ser verdaderos. En el ejemplo que se muestra, queremos sumar valores en la Columna C cuando las celdas en la columna B contienen "gato" o "rata". No podemos utilizar SUMIF con dos criterios, porque SUMAR.SI.CONJUNTO se basa en la lógica Y. Y si intentamos usar dos SUMAR.SI.CONJUNTO (es decir, SUMAR.SI.CONJUNTO + SUMAR.SI.CONJUNTO) contaremos dos veces porque hay celdas que contienen tanto "cat" como "rat"

Solución

Una solución es usar SUMAPRODUCTO con ESNUMERO + HALLAR o ENCONTRAR. La fórmula en la celda F4 es:

=SUMAPRODUCTO(--((ESNUMERO(HALLAR("cat",B4:B8)) + ESNUMERO(HALLAR("rat",B4:B8)))>0),C4:C8)

Esta fórmula se basa aquí en la fórmula que ubica el texto dentro de una celda:

ESNUMERO(HALLAR("abc",B4:B10) 

Cuando se le da un rango de celdas, este fragmento devolverá una matriz de valores VERDADERO / FALSO, un valor para cada celda del rango. Como estamos usando esto dos veces (una para "gato" y otra para "rata"), obtendremos dos matrices.

A continuación, agregamos estas matrices juntas (con +), lo que crea una nueva matriz única de números. Cada número en esta matriz es el resultado de sumar los valores VERDADERO y FALSO en las dos matrices originales juntas. En el ejemplo que se muestra, la matriz se ve así:

{2; 0; 2; 1; 0}

Necesitamos sumar estos números, pero no queremos contar dos veces. Por lo tanto, debemos asegurarnos de que cualquier valor mayor que cero se cuente solo una vez. Para hacer eso, forzamos todos los valores a VERDADERO o FALSO marcando la matriz con "> 0". Esto devuelve VERDADERO / FALSO:

{VERDADERO; FALSO; VERDADERO; VERDADERO; FALSO}

Que luego convertimos a 1/0 usando un doble negativo (-):

{1; 0; 1; 1; 0}

Opción de mayúsculas y minúsculas

La función HALLAR ignora mayúsculas y minúsculas. Si necesita una opción sensible, reemplace HALLAR con ENCONTRAR.


Comentarios en Facebook


0 comentarios:

Copyright © 2021 TRUJILLOSOFT