假设您有一个巨大的工作表,其中包含过去一百多年左右的给定语言环境的所有降雨量读数。在单元格A2:A42733中,您可以看到1903年1月1日至2019年12月31日之间的日期。在单元格B2:B42733中,您具有每个日期的度量。此外,某些测量值可以为零(如果当天没有降雨)或空白(如果在该特定日期没有读数)。利用所有这些信息,您想要计算一年中任何给定日期的平均历史降雨量。

一种解决方案涉及数组公式的使用,如下所示:

。在A列中选择所有包含日期​​的单元格,然后为该范围分配名称Dates。

。选择列B中的所有相应单元格;这些包含A列中日期的降雨数据。为此范围指定名称Rainfall。

。在D列中,从单元格D2开始,放置一年中的所有日子。您应该以填充日期的D2至D366结尾。

。在单元格E2中,输入以下数组公式(通过按Shift + Ctrl + Enter终止该公式)。对于单元格D2中指定的日期,公式的结果是“降雨范围”中所有单元格的总和。

。在单元格F2中,输入以下数组公式(通过按Shift + Ctrl + Enter终止该公式)。公式的结果是,对于单元格D2中的日期,“降雨范围”中的单元格数目中具有值。

。在单元格G2中,输入以下常规公式。这是单元格D2中日期的平均值。

。选择范围E2:G2并复制D列中显示的所有日期。

这种方法有效,但是要花相当长的时间才能计算出来。这是因为您有效地输入了822个数组公式,每个数组公式检查了42,000个以上的单元格。这是一项繁重的工作,因此,在完成步骤7之后,您的计算机可能看起来像“挂了”。这将需要一段时间才能完成计算。

要减少必须执行的计算数量,可以在上述步骤中使用变体。如上所述,按照步骤1到3进行操作,然后将以下数组公式放入单元格E2中:

然后,您可以将公式复制为D列中显示的所有日期。该公式的结果是实际平均降雨量,与先前方法中的G列中所示的相同。

=AVERAGE(IF((Dates<>0)(Rainfall<>0)(MONTH(Dates)=MONTH(D2))*(DAY(Dates)=DAY(D2)),Rainfall))

您只需删除所有用于计算一年中每一天平均值的表,就可以进一步减少计算开销。在A和B列中输入日期和降雨量,请按照以下步骤操作:

。在A列中选择所有包含日期​​的单元格,然后为该范围分配名称Dates。

。选择列B中的所有相应单元格;这些包含A列中日期的降雨数据。为此范围指定名称Rainfall。

。在单元格D2中,放置要检查平均降雨量的日期。 (年份并不重要;在计算中仅使用月份和日期。)

。在单元格E2中输入以下公式:

而已。现在,您可以根据需要在单元格D2中更改日期,单元格E2将始终指示该日期的平均降雨量。 E2单元格中的公式与最后一种方法中使用的公式相同;所不同的是,您并不是一年中的所有天都在计算它,因此计算速度更快。

=AVERAGE(IF((Dates<>0)(Rainfall<>0)(MONTH(Dates)=MONTH(D2))*(DAY(Dates)=DAY(D2)),Rainfall))

另一种方法涉及使用Excel的筛选功能。

但是,在正确使用它们之前,必须创建一列,以仅显示数据中每个日期的月份和日期。在单元格C2中使用以下公式:

现在,启用“自动过滤”(在功能区上显示“数据”选项卡|“排序和过滤器”组|“过滤器”),然后使用新列顶部的下拉列表来选择您想要平均的日期。然后,使用以下公式,将其放在所需的任何单元格中,以显示所选日期的平均降雨量:

=MONTH(A2) & "-" & DAY(A2)

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(10319)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。您可以在此处为Excel的较旧菜单界面找到此技巧的版本:

=SUBTOTAL(1,B:B)

链接:/ excel-Calculating_Averages_by_Date [按日期计算平均值]。