我有一个用于商品定价的历史数据集。在整个数据集中,数据开始输入特定日期的价格,而不是整个月的平均值。为了保持每月只有平均价格的流量。
在最佳情况下,我将使用Averageif函数,但是每个月的数据显示的天数并不一致。
如何自动执行此过程:如果月份与上一行相同但与下一行不同,请计算^行的平均值,直到您达到下个月为止。
这是我的意思的简单显示:
] 1
答案 0 :(得分:0)
答案 1 :(得分:0)
对于没有数据透视表的解决方案,可以使用以下公式:
=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)))
因此,它将在所有单元格中显示为空,除非月份更改。