Скажем, у меня есть следующий столбец: 100, 123, 400, 64 Я хочу использовать SUMIF для суммирования всех чисел, которые делятся на 100 без напоминания. То есть я хочу, чтобы результат был 500, для приведенного выше примера. Мне нужно как-то использовать MOD(?, 100) = 0 условного выражения. Мой вопрос более общий, можно ли использовать функции в условном выражении SUMIF (или COUNTIF и т.д.).
2 ответа
Нет, это невозможно. Это то, от чего мы отказываемся, чтобы позволить его оптимизировать (без массива).
Но вы можете использовать SUMPRODUCT:
Для СУММЫ:
=SUMPRODUCT((MOD(A1:A4,100)=0)* A1:A4)
Для СЧЕТА:
=SUMPRODUCT(--(MOD(A1:A4,100)=0))
(MOD(A1:A4,100)=0)
вернет TRUE/FALSE, когда будет проходить через массив. Используя математические операнды, TRUE/FALSE становится 1/0 соответственно. поэтому SUMPRODUCT выполняет математические вычисления и добавляет полученный массив вместе.
Хотя принятие ответа Скотта Кранера является правильным и, вероятно, вы захотите его использовать, я подумал, что вам может быть интересно узнать, что SUMIF()
можно использовать в этом конкретном случае.
Поскольку SUMIF()
поддерживает регулярные выражения, вы можете использовать следующее:
=SUMIF(A1:A4,"^.*00$")
Это работает, потому что числа в A1:A4
неявно преобразуются в текст для соответствия регулярному выражению, которое ищет строки, заканчивающиеся двумя нулями (если включено сопоставление всей строки, ^
и $
можно опустить).
Метод можно обобщить для чисел, кратных степеням 10 или степеням 10 с определенным остатком, но ответ Скотта можно использовать для кратностей любого числа и многих других критериев.
Примечание: я протестировал это с LibreOffice Calc, так как у меня нет легкого доступа к недавнему выпуску Excel, но я обнаружил, что функции довольно совместимы между ними. Регулярные выражения (и сопоставление всей строки) включены в Calc по умолчанию, но их может потребоваться установить в Excel.
Обновление: Скотт теперь сообщает мне, что RE не поддерживаются в критериях SUMIF()
, но я оставлю ответ в интересах пользователей LibreOffice.