Excel sumifs с двумя значениями выдает ошибку - PullRequest
0 голосов
/ 21 января 2020

Я пытаюсь получить сумму столбца C, если A равно abc или cba, а B равно def:

=SUMIFS(C2:C51;A2:A51;{"abc","cba"};B2:B51;"def")

Но формула недопустимо, не уверен, где моя ошибка, так как это было предложено в быстром поиске Google.

Спасибо за ваши предложения.

Ответы [ 2 ]

2 голосов
/ 21 января 2020

Возможно, я бы использовал ответ @Plutian (на самом деле я проголосовал), но в случае, если он может сработать для вас, вы можете использовать SUMPRODUCT в сочетании с DOUBLE UNARY, чтобы получить именно то, что вы хотите.

DOUBLE UNARY

SUMPRODUCT

Я создал такой поддельный набор данных:

enter image description here

Как видите, только выделенные значения соответствуют вашим требованиям (если A=abc OR cba AND B=def)

Моя формула в E10:

=SUMPRODUCT(--($A$2:$A$7="abc")+--($A$2:$A$7="cba");--($B$2:$B$7="def");$C$2:$C$7)

Вот как это работает:

  1. ($A$2:$A$7="abc") вернет массив значений True/False, если условие выполнено.
  2. Этот массив, поскольку он находится внутри двойного унарного оператора --( your range ), будет преобразовать все True/False значения в 1 or 0 значения. Допустим, это работает так, как если бы вы выбрали диапазон ячеек, который содержит только 1 или 0. Таким образом, это вернет массив, такой как {1,0,1,0,1,0}, в этом случае
  3. --($A$2:$A$7="cba") будет делать то же самое, что и шаги 1 или 2 снова, но с вашим вторым вариантом. Он вернет другой массив значений, в этом случае {0,1,0,1,0,1}
  4. --($A$2:$A$7="abc")+--($A$2:$A$7="cba") мы просто суммируем оба массива, поэтому {1,0,1,0,1,0}+{0,1,0,1,0,1}={1,1,1,1,1,1}
  5. --($B$2:$B$7="def") будет выполнять шаги 1 и снова 2 с вашим третьим условием, и он вернет другой массив, теперь он будет {1,0,1,0,0,1}
  6. Массив, полученный на шаге 5, затем он умножается на массив, полученный на шаге 4, поэтому мы делаем {1,1,1,1,1,1} * {1,0,1,0,0,1}={1,0,1,0,0,1}
  7. Теперь этот окончательный массив, полученный на шаге 7, затем умножается на значения ячеек $C$2:$C$7, так что в этом случае это {1,0,1,0,0,1} * {10,1,10,1,1,10} = {10,0,10,0,0,10}
  8. И последний шаг , мы суммируем все значения внутри массива, полученные на последнем шаге, поэтому мы делаем 10+0+10+0+0+10=30

Я объяснил каждый шаг, чтобы убедиться, что все могут понять, потому что SUMPRODUCT это действительно полезная функция, если вы знаю, как правильно (я новичок, но я видел настоящих героев здесь, на SO, использующих эту функцию).

Преимущество использования SUMPRODUCT вместо SUMIFS заключается в том, что вы можете легко добавлять дополнительные условия для применения. тот же диапазон (случай --($A$2:$A$7="abc")+--($A$2:$A$7="cba") или одиночный переход к дополнительным диапазонам (случай --($B$2:$B$7="def")).

С обычными SUMIFS, вероятно, вам придется добавить 1 дополнительный полный SUMIF для каждого условия, примененного в том же диапазоне.

Надеюсь, это поможет

2 голосов
/ 21 января 2020

Формула действительна для меня, но это может быть проблема с вашим разделителем. В зависимости от вашего Excel, windows или настроек местоположения вам может понадобиться использовать запятую , в качестве разделителя вместо точки с запятой ;.

Что касается вашей формулы, для завершения я сделал тот же поиск в Google и в итоге эта ссылка . Кажется, что ваша логика c в формуле верна, если не считать одного важного шага - SUM(, охватывающего вашу формулу. Это означает, что если ваша формула работает, она будет учитывать только первое попадание, но с суммой она будет учитывать каждую запись, где ваша логика c равна True. Синтаксис:

=SUM(SUMIFS(C2:C51,A2:A51,{"abc","cba"},B2:B51,"def"))

Или разделенный точкой с запятой:

=SUM(SUMIFS(C2:C51;A2:A51;{"abc";"cba"};B2:B51;"def"))

Поскольку опция {array} не работает для вас, я предлагаю обходной путь следующим образом:

=SUMIFS(C1:C15;A1:A15;"abc";B1:B15;"def")+SUMIFS(C1:C15;A1:A15;"cba";B1:B15;"def")

Это более неуклюжая функция, но она достигает того же результата, разбивая данные на две функции SUMIFS( и добавляя результаты вместе.

...