Для решения без сводных таблиц вы можете использовать следующую формулу:
=AVERAGEIFS($B$1:$B$30;$A$1:$A$30;">="&(A1-DAY(A1)+1);$A$1:$A$30;"<="&EOMONTH(A1;0))
Приведенный выше пример взят из ячейки C1
и может быть скопирован по всему списку. Даты в $A$1:$A$30
и значения в $B$1:$B$30
. Первое условие проверяется в первый день месяца (рассчитывается как A1-DAY(A1)+1
), а второе условие - в последний день месяца (рассчитывается как EOMONTH(A1;0)
Это, очевидно, поместит среднее значение месяца в каждой строке, но также будет работать, если ваши данные не отсортированы по дате. Если это так, и вы хотите отображать только одно число в месяц в столбце (как в своем собственном примере), вы можете добавить дополнительный оператор IF
, заключенный в формулу:
=IF(EOMONTH(A2;0)=EOMONTH(A1;0);"";AVERAGEIFS($B$1:$B$30;$A$1:$A$30;">="&(A1-DAY(A1)+1);$A$1:$A$30;"<="&EOMONTH(A1;0)))
Таким образом, он будет отображаться пустым во всех ячейках, кроме случаев, когда меняется месяц.