如果名称出现在行中的其他位置,我尝试使用 AVERAGEIF 或类似函数来查找列中值的平均值。通常,这是 AVERAGEIF 的直接用法,但名称可能出现在行中的几个不同列中。
附件是一个玩具范例。
分数 | 玩家 | ||
---|---|---|---|
3 | 凯莉 | 安娜 | |
4 | 安娜 | 洛伊丝 | 米歇尔 |
5 | 米歇尔 |
在这里,我希望平均得分列是玩家出现行中得分的平均值。例如,安娜出现在第 2 行和第 3 行,所以我希望它计算第 2 行和第 3 行得分的平均值。
这就是我希望电子表格显示的内容:
姓名 | 数数 | 平均分数 |
---|---|---|
安娜 | 2 | 3.5 |
凯莉 | 1 | 3 |
洛伊丝 | 1 | 4 |
米歇尔 | 2 | 4.5 |
如果有关系的话,真正的电子表格有更多可以包含名称的列,但它们不应该算在指定的列之外。所以我确实需要它限制在某些列,而不仅仅是行中的任何位置。
=sort(UNIQUE(FLATTEN(B2:D4)))
我通过在 A7 中执行(其中 B2:D4 是球员范围)并在 B7 中执行出场次数来自动生成姓名,从而获得了预期结果部分=countif(B$2:D$4,A7)
。平均得分是我遇到问题的地方。
在 C7 中,我尝试执行=averageif(B$2:D$4,A7,A$2:A$4)
并向下扩展它,但我得到的不是我想要的结果,而是以下内容。
姓名 | 数数 | 平均分数 |
---|---|---|
安娜 | 2 | 4 |
凯莉 | 1 | 3 |
洛伊丝 | 1 | #DIV/0! |
米歇尔 | 2 | 5 |
对于安娜和米歇尔来说,似乎只采用了适用于她们的第二个分数而不是平均值,但我不明白为什么它只给了我露易丝的错误。
您不能使用 Averageif,因为条件区域 (B2:D4) 的尺寸必须与要计算平均值的数字区域 (A2:A4) 的尺寸相匹配。您的公式只是使用 B2:D4 的第一列作为条件:Lois 没有出现在第一列中,因此她的结果是 #DIV/0!
原则上,您可以像这样复制 A2:A4 三次
{A2:A4,A2:A4,A2:A4}
以匹配 B2:D4 的尺寸,但这样做不行,因为这将是一个数组,而 Averageifs 需要一个范围。解决此问题的一个简单方法(假设每个名称每行只能出现一次)是使用数组乘法来获取总和并除以计数:
您可以尝试:
一次性获取整个 output_table 的另一种方法: