【问题标题】:Subtotal average, of data linked to a particular month in Excel 2016Excel 2016 中与特定月份相关的数据的小计平均值
【发布时间】:2018-10-05 05:05:15
【问题描述】:

我有一个很大的电子表格,我很难得到一个平均值,到目前为止,我在谷歌或其他地方使用过的任何公式都没有奏效。

平均值是时间的平均值,特别是开始和结束时间之间的小时数,转换为天数。

  • 在 E9:E1833 列中,我的开始时间为 dd/mm/yyy hh:mm
  • 在 J9:J1833 列中,我有以天为单位的时间,从开始到结束为 [h]:mm(有些是空的)
  • 我有一个自动过滤器设置来改变工作类型/区域/状态等,结果需要随着数据的过滤而改变。

以下公式有效,但不会重新计算:

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

以下公式有效,但结果不正确:

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

我尝试过 Offset,结果相似,许多“现成”解决方案产生 #Div/0#REF#Value 或完全不允许输入。

任何帮助都将不胜感激,最好不要在 VBA 中,因为我不想永远被这个电子表格所困扰。提前致谢。

【问题讨论】:

  • 你有多少年的数据?
  • 我必须使用的最早条目是 2005 年,一直到现在。

标签: excel math excel-formula excel-2016


【解决方案1】:

由于您要进行过滤,并且希望在过滤时改变结果,只需使用AGGREGATE 函数:

=AGGREGATE(1,3,J:J)

编辑为回答问题添加了动画

“值”列中的值可以是时间,但您可能必须格式化 AGGREGATE 函数的结果(单元格/数字格式)以将结果显示为 [h]:mm

注意:GIF 会播放两次。要重复,请刷新页面

【讨论】:

  • 如果 E9:E1833 中的月份匹配,你能告诉我这将如何计算平均值吗?
  • @AlexanderRhodes 当你尝试它时发生了什么?如果您过滤列(您写过您有一个自动过滤器),该函数的结果将会调整。阅读AGGREGATE 函数的帮助以了解其工作原理。
  • @AlexanderRhodes 我添加了一个动画来展示它是如何工作的。
  • 我看到您正在使用过滤器来获得结果。我需要一种在 H3:S3 中输出每个结果(每月)的方法,以便我可以在仪表板上引用它。因此,为什么原始公式包含月份查询。因此,该公式需要在每张纸上复制 12 次,并且对于每张纸的行数。我在另一张表上有一个仪表板,它将参考这个结果,以获得一目了然的趋势。明智地过滤,我需要根据需要过滤每张工作表上的工作类型、区域、状态,然后能够浏览仪表板以记录更改。
  • @AlexanderRhodes 我想我不知道你想要什么。您写道结果需要随着数据的过滤而改变。如果您想按月在表格中获取结果,只需使用数据透视表,并使用 worksheet_change 触发的事件宏来进行刷新。
【解决方案2】:

以下公式似乎有效。

{=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过滤

【讨论】:

  • 这个结果每个月都返回相同的结果,这与我对 =AVERAGE(IF(MONTH(E9:E1833)=1,(J9:J1833))) 的结果不匹配。
  • 将月份语句更改为嵌入的 if 语句似乎可以解决此问题。答案反映了这些变化。
  • 这在一定程度上可行。我设法找到了一个适用于 2 个额外帮助列的公式,这与我的手动计算检查相匹配。然而,由于未知的原因,这个公式有点过时了。 8.13 变为 8.82,15.15 变为 15.83,49.13 变为 52.75,依此类推。虽然做得很好,但要做到这一点并不容易,而且有 2 个额外的帮助列确实需要一些时间才能让事情顺利进行。
猜你喜欢
  • 2018-08-14
  • 1970-01-01
  • 2023-03-26
  • 2018-11-20
  • 2020-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-16
相关资源
最近更新 更多