vba 获取每天多次回复的平均每日得分

vba get the average daily score for multiple responses per day

我有这样的数据:

date        v1  v2  v3  v4
1/16/2015   5   5   5   5
1/22/2015   5   2   5   5
1/22/2015   5   2   5   5
1/23/2015   5   5   5   5
1/23/2015   5   5   5   5
1/23/2015   5   5   5   5
1/24/2015   5   5   5   5
1/24/2015   5   5   5   5
1/25/2015   5   4   5   5

我需要输出每天每个值(v1、v2、v3、v4)的平均分数。我在另一个工作表中输出了一个唯一的日期列表,如下所示:

date        avg val 1   avg val 2   avg val 3   avg val 4
1/16/2015                   
1/22/2015                   
1/23/2015               
1/24/2015
1/25/2015                   

我如何遍历每个唯一日期的 v1 的所有值,对它们进行平均,然后将该数字输入到其匹配日期的平均列中?

当 header 标签匹配时,为此使用公式通常效果更好,因此您不必在 cross-referenced 中硬编码条件。

=AVERAGEIFS(INDEX($B:$E, , MATCH(H, $B:$E, 0)), $A:$A, $G2)

使用修改后的 header 标签(如图所示),可以向右和向下填充。如果您想保留样本 header 标签(不同于数据 table),您将必须 hard-code V1V2,等等进入MATCH函数。

公式使用 INDEXMATCH 提供列,AVERAGEIFS 负责日期标准。 AVERAGEIF 可以使用,但语法略有不同。