Excel 2010 - 按不同列计算列数据平均值

Excel 2010 - 按不同列计算列数据平均值

我的数据包括每个参与者的几个重复测量(~4-5),我希望能够对每个参与者的所有特定测量进行平均。例如,在附加的屏幕截图中,我想分别计算第一个用户(ID=38106100)、第二个用户(ID=38212221)等的每个测量(CK 列,每列代表不同的测量)的平均值。也就是说,我想仅使用第 2-5 行,然后仅使用第 6-8 行,然后是第 9-12 行,依此类推,而不必对每个参与者 ID 重复进行(我有 200 名参与者)。

答案1

您没有指定确切的格式,也没有附加屏幕截图,因此有点难以猜测。

假设如下

Sheet1
A       B       C       D           E
name    date    unit_1  unit_2      unit_3
John    1-2-3   3       9           7
John    2-2-3   9       13          16
Maria   9-10-4  10      8           7
Maria   13-5-4  6       3           7
Maria   9-8-7   8       7           3

您可以做的是创建第二张工作表。 - 创建一个 A 列,其中包含当前参与者的姓名(或 ID,或工作表 1 的 A 列是什么(或 B?)) - 创建一个 B 列,其中包含第一行,其中包含 A 列的参与者信息。 - 创建一个 C 列,其中包含最后一行,其中包含 A 列的参与者信息。 - 创建包含平均值的 DL 列。

假设您想保留第 1 行作为标题行,此示例从第 2 行开始。

Row #2
A   = INDIRECT(CONCATENATE("Sheet1!A",B2)  
B   = IF(ROW()=2;2;C1+1)
C   = SUMPRODUCT(MAX((INDIRECT(CONCATENATE("Sheet1!A",B2,":","A",B2+10))=A2)*(ROW(INDIRECT(CONCATENATE("Sheet1!A",B2,":","A",B2+10))))))
D   = AVERAGE(INDIRECT(CONCATENATE("Sheet1!C",$B2,":","C",$C2)))
E   = AVERAGE(INDIRECT(CONCATENATE("Sheet1!D",$B2,":","D",$C2)))
F   = AVERAGE(INDIRECT(CONCATENATE("Sheet1!E",$B2,":","E",$C2)))
G   = AVERAGE(INDIRECT(CONCATENATE("Sheet1!F",$B2,":","F",$C2)))
H   = AVERAGE(INDIRECT(CONCATENATE("Sheet1!G",$B2,":","G",$C2)))
I   = AVERAGE(INDIRECT(CONCATENATE("Sheet1!H",$B2,":","H",$C2)))
J   = AVERAGE(INDIRECT(CONCATENATE("Sheet1!I",$B2,":","I",$C2)))
K   = AVERAGE(INDIRECT(CONCATENATE("Sheet1!J",$B2,":","J",$C2)))
L   = AVERAGE(INDIRECT(CONCATENATE("Sheet1!K",$B2,":","K",$C2)))

如果这是 Sheet2 中的第一行,则 B 列保存第一行(第 2 行),否则它将取上面一行的结束值并对其进行 +1。A 列从名为“Sheet1”的工作表的 B2 列的 A 列中获取属于该行的名称。C 列查找 A 行中具有不同值的第一行(仅检查最多 10 行,如果超过 10 行,可能会出现问题,如果需要服务更多行,请调整数字 10。)DL 列计算平均值。DL 列基本相同,因此您可以将公式从 D 一直拖到 L。

相关内容