包括活动行的5个特定单元格的平均值,上下2个跳过空格,而不是包括在该范围内



我的Excel技能相对有限,所以我不确定是否可以用公式来完成,但我希望它可以,因为我的宏技能可以记录宏并进行基本编辑。

基本上,我有一张年表,包括前一年的12月和次年的1月。这里链接的表格是它的快照,2-1-2日平均价格,日期列为A列。

从本质上讲,我需要在5个可能不连续的日子里,从每日平均值列中输入5天的平均值。我需要跳过空白单元格,即星期六&完全是周日,不包括在任何范围内,但这是我遇到的问题,它还需要跳过某些工作日,即没有公布价格的公共假日。我还需要能够将其复制/拖动到列中的所有单元格,例如2017年12月至2019年1月,每年滚动计算每年都会更改的公共假日,或者能够每年进行简单的编辑。

我输入了一个嵌套的If语句,该语句对周六、周日或公共假日以外的任何内容都返回1,对所有内容都返回0。由于知识有限,而且我找不到从"每日平均值"列中排除空格的简单方法,这是我最有希望的选择,但我找不出对活动行的单元格进行平均所需的确切公式,以及基于不同列的值的上下前2个。

我发现了以下形式的公式CCD_ 1,该站点上的CCD_ 2&=AVERAGEIF($A$1:$A$500,D1,$B$1:$B$500)在其他地方,但问题是它基于整个范围的平均值,而不仅仅是我需要的五个范围。我还发现SUMPRODUCT对此没有太大作用,因为它似乎有类似的最终结果。

任何帮助都将不胜感激,因为我已经无计可施了,正在努力让它发挥作用/已经花时间自动化了整个工作簿,这取决于这项工作,而且我不会告诉我的经理我的时间被浪费了。

提前感谢您,并对时间过长表示歉意。

问候,

Simon

您可以将以下数组公式(crtl+shift+enter(放在G3中(假设基于屏幕截图(,然后向下复制:
{=AVERAGE(IF(ROW(F3:$F$90)<=SMALL(IF(F3:$F$90<>"";ROW(F3:$F$90));MIN(COUNT(F3:$F$90);5));IF(F3:$F$90<>"";F3:$F$90)))}

一些评论:

  • 公式中对5进行了硬编码。最好把它放在某个地方的单元格里,这样你也可以计算其他天数的平均值
  • 我假设数据在F3:$F$90
  • 它还将计算空白行的平均值,因此如果您希望平均值也是空白的,则必须添加一个附加值
  • 该公式也适用于最后的值,如果值小于5,它将只接受所有可用的值

最新更新