我正在尝试计算数值表中一列的平均值。
它是这样的:
Hi Hello Hey
1 | 2 | 3
1 | 2 | 3
1 | 2 | 3
我正在尝试获取其中一列的平均值,但具体是哪一列取决于另一个单元格,它会告诉我“Hi”、“Hello”或“Hey”。假设这样的单元格是 K5
所以我想到了类似 averageif(A1:C1;"="&K5;A2:C4) 的方法。当 K5 为 Hi 时,公式返回值 1。但是当我更改 Hi 列中的值时,结果如下:
Hi Hello Hey
1 | 2 | 3
7 | 2 | 3
1 | 2 | 3
公式仍然显示 1(应该是 3),因此它只考虑第二行。
如果 K5 为 Hi,我该如何计算 A2:A4 的平均值;如果 K5 为 Hello,我该如何计算 B2:B4 的平均值;如果 K5 为 Hey,我该如何计算 C2:C4 的平均值?
谢谢。
答案1
AverageIf
并非旨在评估整个表并仅返回一列。要实现您描述的结果,您可以使用类似
=AVERAGE(IF(A1:C1=K5,A2:C4,""))
Ctrl这是一个数组公式,必须用++Shift来确认Enter。
答案2
我会给你首先想到的两种方法。
=average(offset(A2:C2,0,match(K5,A1:C1,0)-1))
偏移会改变您的范围,匹配将在单元格 A1:C1 中找到 K5 并返回它是哪个单元格 (1,2,3) 减一以使行正确。
或者,如果您将数据存储为表格,这将找到 K5 中具有标题名称的任何列的平均值。
=average(INDIRECT("Table1["&K5&"]"))
间接基本上允许您使用变量来定义单元格引用。
答案3
如果您使用 Excel 中的表格功能将所需数据制作成表格
(突出显示所有内容并按CTRL+T)然后您可以使用以下方法计算平均值:
=AVERAGE([Hi])
假设您的表头名为Hi
。
您可以在更大的函数中使用它,例如
=100 - ([@hi]) / ( MAX([hi]) + AVERAGE([hi]) )
或更多,如果您想进一步扩展它。
这=([@hi])
将给出该行的当前hi
值。其余部分非常容易理解。