使用AVERAGEIF确定Excel中的月份日期度量标准

时间:2016-11-08 17:55:06

标签: excel vba excel-vba

我正在尝试创建一个仪表板,用于计算同一工作簿中单独工作表中记录的各种指标的月初至今平均值。

这是一个仪表板组件之一的示例:

Sample Dashboard Widget

这是我填写数据的表格的图片:

Example Data Table

因此,要填充物流的月初平均值,我正在尝试使用AVERAGEIF函数,如果“月”列中的值相等,我想在“后勤”列中平均值到该列中最后输入的值。 (我知道你理想情况下要检查月份和年份,但由于此表的数据始于年初,因此现在不需要)。

我尝试了answers listed in this question的许多排列,但没有一个对我有用,我不知道为什么。

以下是我尝试过的一些不同版本:

=AVERAGEIF('Daily KPI w Rows'!B:B, 'Daily KPI w Rows'!K:K = LastColumnCell('Daily KPI w Rows'!K:K))
=AVERAGEIF('Daily KPI w Rows'!B:B,  LastColumnCell('Daily KPI w Rows'!K:K))
=AVERAGEIF('Daily KPI w Rows'!B:B,  LastColumnCell('Daily KPI w Rows'!K:K), 'Daily KPI w Rows'!B:B)
=AVERAGEIF('Daily KPI w Rows'!B:B,  'Daily KPI w Rows'!K:K = LastColumnCell('Daily KPI w Rows'!K:K), 'Daily KPI w Rows'!B:B)

重要

LastColumnCell是我写的一个VBA函数,用于获取列中的最后一个值。

它使用以下代码:

代码:

Function LastColumnCell (arg As Range)
    LastColumnCell = arg.End(xlDown)
End Function 

所以我们的想法是,如果11月是有数据的最新月份,那么如果“月”列中的值等于11,它将平均“后勤”中的值。

我对AVERAGEIF函数的所有实现都会收到Div/#0错误消息,所以显然这些消息都没有评估为True,但我不确定原因。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

我无法看到你的照片,但如果我假设:

1。)B列包含指标 2.)列K包含月份值

......你的公式应该是:

{{1}}

答案 1 :(得分:0)

只需使用以下公式:

=AVERAGEIF('Daily KPI w Rows'!B:B,MAX('Daily KPI w Rows'!B:B),'Daily KPI w Rows'!A:A)

MAX('Daily KPI w Rows'!B:B)是最后输入的数据月份。然后你不需要使用VBA代码。