Fórmula de Excel: Suma si las celdas contienen xoy -

Tabla de contenido

Fórmula genérica

=SUMPRODUCT(--((ISNUMBER(SEARCH("cat",rng1)) + ISNUMBER(SEARCH("rat",rng1)))>0),rng2)

Resumen

Para resumir, si las celdas contienen una cadena de texto u otra (es decir, contienen "gato" o "rata"), puede usar la función SUMPRODUCT junto con ISNUMBER + SEARCH o FIND. En el ejemplo que se muestra, la fórmula en la celda F5 es:

=SUMPRODUCT(--((ISNUMBER(SEARCH("cat",B4:B8)) + ISNUMBER(SEARCH("rat",B4:B8)))>0),C4:C8)

que devuelve la suma de los valores en C4: C8 cuando las celdas en B4: B8 contienen "gato" o "rata".

Explicación

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

En su lugar, usamos una fórmula como esta:

=SUMPRODUCT(--((ISNUMBER(SEARCH("cat",B4:B8))+ISNUMBER(SEARCH("rat",B4:B8)))>0),C4:C8)

Este núcleo de esta fórmula se basa en la fórmula explicada aquí que ubica el texto dentro de una celda con ISNUMBER y SEARCH:

ISNUMBER(SEARCH("text",range)

Cuando se le da un rango de celdas, este fragmento devolverá una matriz de valores VERDADERO / FALSO, un valor para cada celda del rango. En esta fórmula, usamos este fragmento dos veces, una para "gato" y otra para "rata", por lo que obtendremos dos matrices. En este punto, tenemos:

=SUMPRODUCT(--(((TRUE;FALSE;TRUE;FALSE;FALSE)+ (TRUE;FALSE;TRUE;TRUE;FALSE))>0),C4:C8)

A continuación, sumamos estas matrices porque la suma se usa en el álgebra booleana para la lógica OR. La operación matemática coacciona automáticamente los valores VERDADERO y FALSO a 1 y 0, por lo que terminamos con la siguiente matriz:

=SUMPRODUCT(--(((2;0;2;1;0))>0),C4:C8)

Cada número de esta matriz es el resultado de sumar los valores VERDADERO y FALSO en las dos matrices originales. 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 una sola vez. Para hacer eso, forzamos todos los valores a VERDADERO o FALSO marcando la matriz con "> 0". Esto devuelve VERDADERO / FALSO:

=SUMPRODUCT(--((TRUE;FALSE;TRUE;TRUE;FALSE)),C4:C8)

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

=SUMPRODUCT((1;0;1;1;0),C4:C8)

y finalmente:

=SUMPRODUCT((1;0;1;1;0),(20;15;30;20;10))

SUMPRODUCT multiplica los elementos correspondientes de las dos matrices y suma el resultado, devolviendo 70.

Opción sensible a mayúsculas y minúsculas

La función de BÚSQUEDA ignora el caso. Si necesita una opción sensible, reemplace BUSCAR con la función ENCONTRAR.

Articulos interesantes...