Subtotal average, of data linked to a particular month in Excel 2016

≡放荡痞女 提交于 2019-12-11 06:58:42

问题


I have a large spreadsheet and I am struggling to get an average, no formula I have used thus far from google or otherwise, has worked.

The average is an average of time, in particular, hours between a start and end time, converted into days.

  • In column E9:E1833, I have start time as dd/mm/yyy hh:mm
  • In column J9:J1833, I have the time in days, from start to finish as [h]:mm (some are empty)
  • I have an auto filter setup to change with job type / area / status etc, and the result needs to change as data is filtered.

The following formula works, but does not recalculate:

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

The following formula works, but gives an incorrect result:

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

I have tried Offset, with similar results, and many of the "off-the-shelf" solutions produces #Div/0, #REF, #Value or fail to allow the entry altogether.

Any help would be much appreciated, preferably not in VBA, as I don't want to be lumbered with this spreadsheet forever. Thanks in advance.


回答1:


Since you are going to be filtering, and want the result to change as you filter, just use the AGGREGATE function:

=AGGREGATE(1,3,J:J)

EDIT: Animation added in response to question

The values in the Values column can be times, although you may have to format the result of the AGGREGATE function (cell/numberformat) to show the result as [h]:mm

Note: GIF will play twice. To repeat, refresh the page




回答2:


The following formula seems to work.

{=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)))))))}

The SUBTOTAL(9,OFFSET part of the function returns an array where filtered numbers are 0, and visible numbers return their values. If you just averaged that array, you would get the wrong number because you would be averaging all those zeros. So the IF statement just creates an array that returns a FALSE for zero, which is not averaged.

An additional caution that gave me a headache as I was playing around, was you are also filtering on MONTH()=1. The issue with that is, blank cells return a January date, which means they will not be filtered by MONTH()=1



来源:https://stackoverflow.com/questions/52630765/subtotal-average-of-data-linked-to-a-particular-month-in-excel-2016

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!