1

Я использую SUMIF как

=SUM(SUMIF(range, {C1, C2, ...}, values)) 

где строки в C1 и C2 содержат символы подстановки. Например, C1 - это "*A*" а C2 - "*B*" . Некоторые ячейки в диапазоне соответствуют нескольким правилам и учитываются дважды. Как я могу избежать двойного счета этих значений, чтобы считать их только один раз?

Например, если список {apple, banana, pear} а поиск - {"p","a"} я бы получил 3, только считая "груша" один раз.

2 ответа2

0

Более гибко, чтобы ваши критерии содержались в реальных ячейках на листе, а не были жестко закодированы в формуле.

Если для этого вы используете вертикальный непрерывный диапазон ячеек (например, H1:H2) и предполагаете, что Range является вертикальным диапазоном, вы можете использовать эту формулу массива **:

=SUM(IF(MMULT(0+ISNUMBER(SEARCH(TRANSPOSE(Criteria),Range)),ROW(Criteria)^0)>0,Values))

Если вы настаиваете на том, чтобы критерии были в формуле, то:

=SUM(IF(MMULT(0+ISNUMBER(SEARCH({"p","a"},Range)),{1;1})>0,Values))

С уважением

0

Я действительно думал, что это будет SUMPRODUCT(-- формула, но я не могу заставить его работать. Это должно работать, хотя -

=SUM(IF(FREQUENCY(IF(NOT(ISERR(SEARCH({"d","g"},A2:A10))),ROW(A2:A10)),ROW(A2:A10))>0,1))

Где {"d","g"} будет вашим массивом строк поиска.

Это формула массива, поэтому, как только вы ее введете, вы должны нажать ctrl + shft + entr, и фигурные скобки должны появиться в строке формул вокруг всей функции.

Обратите внимание, что это будет работать, только если вы ищете один столбец.

Возможно, это не сработает, учитывая групповые символы. Может быть, regex это то, что вам нужно?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .