George的工作表包含日期(在A列中)和与这些日期相关联的值(在B列中)。该工作表包含最近几年的值。他想计算给定年份中给定月份所有值的平均值。例如,乔治想计算2020年2月所有值的平均值。

有几种不同的方法来解决此问题。一种方法是根据数据创建数据透视表。 (数据透视表非常适合聚合和分析大量数据。)您可以轻松地将value字段设置为Average(而不是默认的Sum),并根据需要将Dates列分组。

如果您不想使用数据透视表,则可以将任意数量的公式添加到工作表中。例如,以下公式使用SUMPRODUCT函数计算平均值:

=SUMPRODUCT((MONTH(A2:A1000)=5)(YEAR(A2:A1000)=2020)(B2:B1000)) / (SUMPRODUCT((MONTH(A2:A1000)=5)(YEAR(A2:A1000)=2020)1))

该公式假定您的日期和值从第2行开始(以允许出现标题),并且不超过1000行。如果数据中没有2020年2月的日期,则该公式返回#DIV / 0!错误。

另一种方法是使用数组公式,例如:

=AVERAGE(IF((MONTH(A2:A1000)=5)*(YEAR(A2:A1000)=2020),B2:B1000))

这种方法比SUMPRODUCT公式短,但是您必须记住在输入公式时按住Ctrl + Shift + Enter。

如果没有所需月份和年份的数据,您还将得到除以零的错误。

还有一种方法是使用Excel的数据库功能之一DAVERAGE。您需要做的只是建立一个标准表,该表定义您要查找的内容。例如,假设列上的标题是原始的,例如日期(单元格A1)和值(单元格B1)。

您可以在其他地方设置条件表,例如D1:E2。该表如下所示:

Date         Date >1/31/20     <3/1/20

条件表表示您希望DAVERAGE使用“日期”列中包含大于1/31/20的日期和小于3/1/20的日期的任何内容。公式如下:

=DAVERAGE(A1:B1000,"Value",D1:E2)

第一个参数定义您的数据库,第二个参数指示您要对“值”列(列B)中的信息求平均,第三个参数告诉DAVERAGE标准表位于何处。

一种相当简单的方法是应用日期过滤并使用SUBTOTAL函数。在单元格中输入以下公式:

=SUBTOTAL(101,B2:B1000)

在数据范围内选择一个单元格并过滤数据(显示功能区的“数据”选项卡,然后单击“过滤器”工具)。单击A列顶部的过滤箭头,然后选择“日期过滤器” |“过滤器”。下拉列表中的“自定义过滤器”。 Excel将显示“自定义自动筛选”对话框。

(请参见图1。)

image

图1.“自定义自动筛选”对话框。

使用对话框中的控件可以指定要大于1/31/20且小于3/1/20的记录。单击“确定”时,仅显示2020年2月内的那些记录,小计公式显示这些可见记录的平均值。

但是,也许最简单的方法是使用AVERAGEIFS函数。它使您可以根据相关值(在这种情况下为日期)是否满足指定的条件来计算某些值的平均值。公式的外观如下:

=AVERAGEIFS(B2:B1000,A2:A1000,">31 Jan 2020",A2:A1000,"<01 Mar 2020")

请注意,这不是数组公式,您不需要为您的条件定义条件表-它们直接内置在公式中。

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

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

链接:/ excel-Averaging_Values_for_a_Given_Month_and_Year [给定月份和年份的平均值]。