Итого по среднему значению данных, связанных с конкретным месяцем в Excel 2016 - PullRequest
0 голосов
/ 03 октября 2018

У меня есть большая таблица, и я изо всех сил пытаюсь получить среднее значение, ни одна формула, которую я использовал до сих пор, от Google или иначе, не сработала.

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

  • В столбце E9: E1833 у меня есть время начала как дд / мм / ггг чч: мм
  • В столбце J9: J1833 у меня есть время в днях, от начала дозакончить как [ч]: мм (некоторые пустые)
  • У меня есть автоматическая настройка фильтра для изменения в зависимости от типа задания / области / статуса и т. д., и результат должен меняться по мере фильтрации данных.

Следующая формула работает, но не пересчитывает:

{=AVERAGE(IF(MONTH(E9:E1833)=1,(J9:J1833)))}

Следующая формула работает, но дает неверный результат:

=AVERAGE(IF(MONTH(E1833)=1,SUBTOTAL(101,(J9:J1833))))

Я пробовал Offset, с похожими результатами, и многие из готовых решений производят #Div/0, #REF, #Value или не позволяют вообще разрешить запись,

Любая помощь будет принята с благодарностью, желательно не в VBA, так как я не хочу, чтобы эта таблица была забита навсегда.Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 03 октября 2018

Кажется, что работает следующая формула.

{=AVERAGE(IF(SUBTOTAL(9,(OFFSET(J9:J1833,ROW(J9:J1833)-MIN(ROW(J9:J1833)),0,1)))>0,(IF(MONTH(E9:E1833)=3,SUBTOTAL(9,(OFFSET(J9:J1833,ROW(J9:J1833)-MIN(ROW(J9:J1833)),0,1)))))))}

Часть функции SUBTOTAL(9,OFFSET возвращает массив, где отфильтрованные числа равны 0, а видимые числа возвращают свои значения.Если вы просто усредните этот массив, вы получите неправильное число, потому что вы бы усредняли все эти нули.Таким образом, оператор IF просто создает массив, который возвращает FALSE для нуля, который не усредняется.

Дополнительное предостережение, которое вызвало у меня головную боль, когда я играл, было то, что вы также фильтруетеMONTH()=1.Проблема в том, что пустые ячейки возвращают дату января, что означает, что они не будут отфильтрованы по MONTH()=1

0 голосов
/ 03 октября 2018

Поскольку вы собираетесь фильтровать и хотите, чтобы результат изменялся при фильтрации, просто используйте функцию AGGREGATE:

=AGGREGATE(1,3,J:J)

РЕДАКТИРОВАТЬ : Анимациядобавлено в ответ на вопрос

Значения в столбце Значения могут быть временными, хотя вам может потребоваться отформатировать результат функции AGGREGATE (ячейка / числовой формат), чтобы отобразить результат как [h]:mm

Примечание: GIF будет воспроизводиться дважды.Чтобы повторить, обновите страницу

enter image description here

...