Сумма по месяцам

Автор Sanek_650, 7 октября 2022, 11:58

0 Пользователи и 1 гость просматривают эту тему.

Sanek_650

Добрый день! подскажите как можно сократить данную формулу =СУММПРОИЗВ((МЕСЯЦ(C9:C27:C29:C31:C33:C35:C37:C40:C42:C44:C46:C48:C50:C52:C54:C56:C58:C60:C62:C64:C66:C71:C73:C75:C77:C79:C81:C83:C85:C88:C90:C96:C98:C102:C104:C106:C108:C110:C112:C117:C119:C128:C130:C132:C134:C136:C138:C140:C142:C144:C146:C148:C150:C152:C154:C156:C158:C160:C162:C164:C168:C174:C176:C178:C180:C194:C196:C198:C200:C209:C211:C213:C215:C217:C219:C221:C223:C225:C227:C230:C232:C234:C236:C238:C240:C242:C244:C246:C248:C250:C252:C254:C256:C260:C262:C264:C266:C268:C270:C272:C274:C276:C278:C280:C282:C284:C286:C292)=1)*D9:D27:D29:D31:D33:D35:D37:D40:D42:D44:D46:D48:D50:D52:D54:D56:D58:D60:D62:D64:D66:D71:D73:D75:D77:D79:D81:D83:D85:D88:D90:D96:D98:D102:D104:D106:D108:D110:D112:D117:D119:D128:D130:D132:D134:D136:D138:D140:D142:D144:D146:D148:D150:D152:D154:D156:D158:D160:D162:D164:D168:D174:D176:D178:D180:D194:D196:D198:D200:D209:D211:D213:D215:D217:D219:D221:D223:D225:D227:D230:D232:D234:D236:D238:D240:D242:D244:D246:D248:D250:D252:D254:D256:D260:D262:D264:D266:D268:D270:D272:D274:D276:D278:D280:D282:D284:D286:D292)  но это так сказать малая часть данной формулы, или возможно применить какую либо другую функцию для выполнения этой задачи. LibreOffice-Версия: 5.4.2.2 (x64)

mikekaganski

#1
Например,

=SUMPRODUCT(MONTH(C9:C292)=1;D9:D292)
С уважением,
Михаил Каганский

bigor

#2
Где то вчера уже видел этого монстра :)
=SUMPRODUCT((MONTH(C9:C293)=1)*(A9:A293="")*(D9:D293))за январь посчитал правильно, остальные месяца проверяйте сами
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

mikekaganski

Зачем использовать явное умножение (и, соответственно, скобки для установления порядка вычислений) в функции, которая сама предназначена для перемножения аргументов?
С уважением,
Михаил Каганский

bigor

#4
Цитата: mikekaganski от  7 октября 2022, 12:16Зачем использовать явное умножение
Сталкивалсмя, что эксель не понимает три параметра через ; а явное умножение проходит. Вот и привык для совместимости
Открыл файл в excel 2010, "родная" формула возвращает результат 487 (=месяц() на пустых ячейках, почему то возвращает 1). Если использовать =SUMPRODUCT(MONTH(C9:C292)=1;D9:D292), то выдает 0, при замене ; на * 487.
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

mikekaganski

Это потому, что в Экселе есть отдельный логический тип данных, это не число.
И он действует с ним похоже на то, как мы работаем с текстом: если использовать =2+"2", получим 4, а если =SUM(2;"2") - то ошибку.

Вот и SUMPRODUCT в Экселе, получая массив логических значений в первом параметре, не превращает TRUE в 1, а тупо воспринимает всё как 0.
С уважением,
Михаил Каганский

sokol92

Неожиданно в теме возникли неясности.  :)

Цитата: Bigor от  7 октября 2022, 12:18=месяц() на пустых ячейках, почему то возвращает 1

Для рабочих функций листа Excel MONTH(0)=1 DAY(0)=0 YEAR(0)=1900. Для отрицательных аргументов эти функции возвращают #ЧИСЛО! Можно считать это частью спецификации.

Цитата: mikekaganski от  7 октября 2022, 13:06если =SUM(2;"2") - то ошибку

Действительно, "загадка" (в смысле, трудно запомнить). В Excel SUM("2",2)=4. Если же текст содержится в ячейке, то он будет проигнорирован функцией SUM как в Calc, так и Excel.

Владимир.

Sanek_650

Цитата: Bigor от  7 октября 2022, 12:12Где то вчера уже видел этого монстра :)
на форуме планета Excel :)

Sanek_650

Цитата: Bigor от  7 октября 2022, 12:12Где то вчера уже видел этого монстра :)
=SUMPRODUCT((MONTH(C9:C293)=1)*(A9:A293="")*(D9:D293))за январь посчитал правильно, остальные месяца проверяйте сами
Спасибо! но этот код работает до декабря. в декабре он мне считает итоги с таблицы так как где итоги в столбце С пустая ячейка и соответственно Excel определяет эту ячейку как декабрь и суммирует мне итоги.

Sanek_650

есть такой код =СУММПРОИЗВ((МЕСЯЦ($C$9:$C$292)=МЕСЯЦ(1&$B315))*($C$9:$C$292>0)*D$9:D$292), но я не совсем разберусь какую роль  в коде играет =МЕСЯЦ(1&$B315)

bigor

Excel споткнулся на январе, Calc на декабре :) Ну тогда как то так
=SUMPRODUCT(MONTH($C$9:$C$292)=ROW($A1);D$9:D$292;$C$9:$C$292>0)не совместима с Excel
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

Sanek_650

Цитата: Bigor от  7 октября 2022, 14:52Excel споткнулся на январе, Calc на декабре :) Ну тогда как то так
=SUMPRODUCT(MONTH($C$9:$C$292)=ROW($A1);D$9:D$292;$C$9:$C$292>0)не совместима с Excel
Огромное спасибо! Все получилось.

sokol92

Цитата: Bigor от  7 октября 2022, 14:52не совместима с Excel
Если "мешают" пустые ячейки, то можно добавить еще одно условие (?)
Владимир.

bigor

Цитата: sokol92 от  7 октября 2022, 15:32Если "мешают" пустые ячейки
не, записал параметры через точку с запятой. А пустые ячейки, надеюсь  $C$9:$C$292>0 отсеет.
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут