=AVERAGE(目标1,目标2,目标3,……),回车
注:目标1、目标2,目标3用鼠标直接点要求平均值的区域就可以了,中间用英文状态下的逗号隔开。
可以用SUMIFS函数实现。
因为SUMIFS函数的条件必须变为文本,所以给公式变量条件造成了很大麻烦,不过可以通过变通的方法解决问题,公式稍长。
=SUMIFS(D2:D32,A2:A32,“>”&TEXT(TODAY()-7,“yyyy-mm-dd”),A2:A32,“<=”&TEXT(TODAY(),“yyyy-mm-dd”))/7
很简单,就是用TODAY函数定义出今天的日期。今天的日期减去7,就是起计算日期的前一天。SUMIFS的条件之一,要合计大于那一天的数,另一个条件是今天,计算小于等于今天的数,两个条件同时应用,那么就是大于今天往前算七天前的那一天并且小于等于今天日期的这部分数据(刚好7天)。因为SUMIFS函数的条件部分只能用文本格式,不识别变量(函数),所以TODAY函数并不能直接用在条件中,需要用TEXT将其格式转换成文本格式,也就是SUMIF的条件之一,再用比较符号与之连接起来,形成一个SUMIFS认可的又具有变量的条件。将这七天的和求出来之后,直接除以7就可以了。
呃,SUMIFS用的比较多,用得顺手了,忘了一个更简便的函数AVERAGEIFS,直接求平均值。说明如上。只不过不用除以七了,它直接选了那七天范围内的数据,直接就计算平均了 。
公式如下:
=AVERAGEIFS(D2:D32,A2:A32,“>”&TEXT(TODAY()-7,“yyyy-mm-dd”),A2:A32,“<=”&TEXT(TODAY(),“yyyy-mm-dd”))
你自己套用进去,看看这个公式对不对。如果还有其他需求,可以私信,给联系方式。简单的函数可以免费制作,复杂的不免费。
PS:想公式再短几个字符的话,可以用如下公式:
=AVERAGEIFS(D2:D32,A2:A32,“>”&TEXT(NOW()-7,“yyyy-m-d”),A2:A32,“<=”&TEXT(NOW(),“yyyy-m-d”))
使用以上所有公式,需要注意的是,你的日期列中,不管怎么显示,日期数据必须是带准确年份的。年份不能错了。因为判断系统日期,是连年份一起判断的。
输入类似公式
=AVERAGE(A1:A3,A6:A8,A11:A12)
详见附图
在AT3中输入或复制粘贴下列公式
=AVERAGE(OFFSET(INDEX(D3:AS3,MATCH(TODAY(),$D$2:$AS$2,)-1),,,,-7))
另两个公式
=AVERAGE(OFFSET(INDEX(D3:AS3,MATCH(TODAY(),$D$2:$AS$2,)-1),,,,-15))
=AVERAGE(OFFSET(INDEX(D3:AS3,MATCH(TODAY(),$D$2:$AS$2,)-1),,,,-30))
这些公式分别得到的是当前日期(当天)之前7、15、30天(不包括当天)的平均值,但也包括了空白的单元格区域(此空白区域不填写0)。仍然没有得到你要求。
这也算抛砖引玉吧。
- 上一篇:abac形式的词语有哪些
- 下一篇:7个字的成语有哪些?