找到特定值后找到一系列相邻单元的平均值

时间:2015-08-22 00:26:06

标签: excel

我有一个文件,每行显示一列(C)上的星期一日期,另一列(D)显示星期日。列(E) - (S)显示每个商店每周的销售额。我希望获得过去6个月的平均每周商店销售额,并且公式会不断更新,以查找我在Cell(A1)中输入的特定日期的最近6个月。我知道我必须为每个列(E) - (S)制作一个独特的公式,以获得每个商店的平均值。

我已经想出了如何获得我输入(A1)日期的星期日的日期。这是我得到的,这是输入(B1)......

=IF(WEEKDAY(A1,11)=1,A1,IF(WEEKDAY(A1,11)=2,A1-1,IF(WEEKDAY(A1,11)=3,A1-2,IF(WEEKDAY(A1,11)=4,A1-3,IF(WEEKDAY(A1,11)=5,A1-4,IF(WEEKDAY(A1,11)=6,A1-5,IF(WEEKDAY(A1,11)=7,A1-6,"error")))))))

这总是会给我一个应该出现在我的(C)栏目上的日期。

列(E)中的第一个商店的示例...因此,谜题是公式使用上面的公式查找此星期一日期,然后将过去6个月的列(E)中的销售额相加。要获得6个月范围的开始日期,我只需使用此= A1-168。通过弄清楚有平均值,我得到了168。每月4周*月。 (= 7 * 4 * 6)这将始终显示列(C)上的开始日期。

简而言之,我只想要(A1)的平均销售额。

1 个答案:

答案 0 :(得分:0)

让我们从收紧多重IF公式开始。

=IFERROR(A1-WEEKDAY(A1,11)+1, "error")    <~~ for Monday
=IFERROR(A1-WEEKDAY(A1,11), "")           <~~ for Sunday

这应该是您提供日期的任何一周的星期一或星期日开始。

EDATE function可以快速生成一个恰好六个月前的日期。 SUMIFS functionAVERAGEIFS function可以根据该时间窗口生成总计和均值。

=SUMIFS(E:E, A:A, "<="&A1, A:A, ">"&EDATE(A1, -6))
=AVERAGEIFS(E:E, A:A, "<="&A1, A:A, ">"&EDATE(A1, -6))

关于是否使用A1(日期),C1(星期一)或D1(星期日)创建时间窗口存在一些混淆,但您应该能够为自己的目的转录这些公式中使用的方法