Оператор OpenOffice.org Calc SUMIF

Я пытаюсь суммировать все ячейки в C2:C2000, если соответствующая ячейка в столбце A находится в (10; 20], но у меня проблемы с условием.

Я пробовал что-то вроде =SUMIF(A2:A2000, AND(">10","<=20"), C2:C2000), но это возвращает 0, что неверно.

Спасибо.

[редактировать]

Можно использовать =SUMIF(A2:A2000, ">10", C2:C2000) - SUMIF(A2:A2000, ">20", C2:C2000), но это не совсем то, что мне нужно.


person Nikolay Yordanov    schedule 13.04.2011    source источник
comment
Я попытался выполнить то, что вы надеетесь выполнить в MS Excel, и столкнулся с той же проблемой. Похоже, что Excel и OpenOffice не могут вычислять составные логические операторы, такие как «›10 & ‹=20». Как насчет написания пользовательской функции, такой как BETWEEN(), которая принимает три аргумента и возвращает TRUE или FALSE: число для сравнения, нижнюю границу и верхнюю границу?   -  person Jubbles    schedule 13.04.2011
comment
@Jubbles Спасибо, я посмотрю, есть ли способ написать сложные условия, и я опубликую здесь, если найду решение.   -  person Nikolay Yordanov    schedule 13.04.2011


Ответы (2)


Простой способ обойти ограничение сложных условий — использовать другой столбец в качестве «локальной переменной» — сделать столбец D результатом вашего условия (И (и т. д.)), скрыть его, если вы хотите меньше беспорядка на экране, и использовать D2:D2000 как часть СУММЕСЛИ.

отредактировано, чтобы добавить альтернативный вариант:

http://support.microsoft.com/kb/275165

используйте Sum(if( .. )) вместо SUMIF и используйте произведения и суммы вместо ANDS и OR.

Лично я думаю, что использование промежуточного столбца легче отслеживать и поддерживать.

person Mikeb    schedule 13.04.2011
comment
Возможно, да, но мне было интересно, есть ли простой способ использовать сложные логические операторы в СУММЕСЛИ, СЧЁТЕСЛИ и т. д. - person Nikolay Yordanov; 13.04.2011

Относительно элегантным решением в OpenOffice является использование Sumproduct, которое умножает два массива. Скармливайте Sumproduct последовательными проверками истинности в диапазоне (которые, я думаю, возвращают массив логических значений). Что-то вроде этого:

SUMPRODUCT(C2:C2000;A2:A2000>"10";A2:A2000>="20")

Я получил это отсюда:

http://user.services.openoffice.org/en/forum/viewtopic.php?f=9&t=28585

Протестировано в OpenOffice — я понятия не имею, есть ли аналог в Excel. Извините, у меня нет копии для тестирования.

person Ryan Damm    schedule 23.07.2012