Формула Excel: Сумма, если ячейки содержат x или y -

Содержание

Общая формула

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

Резюме

Подводя итог, если ячейки содержат одну или другую текстовую строку (т.е. содержат «кот» или «крыса»), вы можете использовать функцию СУММПРОИЗВ вместе с ISNUMBER + SEARCH или FIND. В показанном примере формула в ячейке F5:

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

который возвращает сумму значений в C4: C8, когда ячейки в B4: B8 содержат либо «кошка», либо «крыса».

Объяснение

При суммировании ячеек с помощью критерия «ИЛИ» необходимо соблюдать осторожность, чтобы не удвоить счет, если существует вероятность того, что оба критерия вернут истину. В показанном примере мы хотим суммировать значения в столбце C, когда ячейки в столбце B содержат либо «кот», либо «крыса». Мы не можем использовать СУММЕСЛИМН с двумя критериями, потому что СУММЕСЛИМН основано на логике И. И если мы попытаемся использовать два СУММЕСЛИМН (то есть СУММЕСЛИМН + СУММЕСЛИМН), мы получим двойной счет, потому что есть ячейки, которые содержат и «кот», и «крыса».

Вместо этого мы используем такую ​​формулу:

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

Это ядро ​​этой формулы основано на описанной здесь формуле, которая определяет местонахождение текста внутри ячейки с помощью ISNUMBER и SEARCH:

ISNUMBER(SEARCH("text",range)

Если задан диапазон ячеек, этот фрагмент вернет массив значений ИСТИНА / ЛОЖЬ, по одному значению для каждой ячейки диапазона. В этой формуле мы используем этот фрагмент дважды, один раз для слова «кошка» и один раз для слова «крыса», поэтому мы получим два массива. На данный момент у нас есть:

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

Затем мы складываем эти массивы вместе, потому что сложение используется в булевой алгебре для логики ИЛИ. Математическая операция автоматически переводит значения ИСТИНА и ЛОЖЬ в единицы и нули, так что мы получаем следующий массив:

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

Каждое число в этом массиве является результатом сложения значений ИСТИНА и ЛОЖЬ в исходных двух массивах вместе. В показанном примере массив выглядит так:

(2;0;2;1;0)

Нам нужно сложить эти числа, но мы не хотим двойного счета. Поэтому нам нужно убедиться, что любое значение больше нуля учитывается только один раз. Для этого мы переводим все значения в ИСТИНА или ЛОЖЬ, проверяя массив с «> 0». Это возвращает TRUE / FALSE:

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

Затем мы преобразуем его в 1/0, используя двойной минус (-):

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

и наконец:

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

SUMPRODUCT умножает соответствующие элементы двух массивов вместе и суммирует результат, возвращая 70.

Вариант с учетом регистра

Функция ПОИСК игнорирует регистр. Если вам нужна чувствительная опция, замените ПОИСК функцией НАЙТИ.

Интересные статьи...