Excel-取每月数据的平均值

时间:2018-11-19 16:59:20

标签: excel excel-formula

我有一个用于商品定价的历史数据集。在整个数据集中,数据开始输入特定日期的价格,而不是整个月的平均值。为了保持每月只有平均价格的流量。

在最佳情况下,我将使用Averageif函数,但是每个月的数据显示的天数并不一致。

如何自动执行此过程:如果月份与上一行相同但与下一行不同,请计算^行的平均值,直到您达到下个月为止。

这是我的意思的简单显示:

![enter image description here] 1

2 个答案:

答案 0 :(得分:0)

您可以使用数据透视表获取所需的输出。它也将被整齐地组织起来,而不是将您的平均值与一个几乎空白的列混在一起。下图显示了使用随机数据生成的数据透视表的设置/输出。

enter image description here

答案 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)))
因此,它将在所有单元格中显示为空,除非月份更改。