首页 > 解决方案 > Excel - 返回数组中右三个值的平均值

问题描述

如果我在 excel 中有一个范围,比如 A2:I2,用于存储每月比赛的结果,我在 excel 中使用什么公式来返回三个最正确值的平均值?该公式需要考虑并非所有列都被填充,即一名玩家可能有 5 个结果,一个可能有 9 个结果,一个可能有 1 个。

在此处输入图像描述

谢谢

标签: arraysexcelexcel-formula

解决方案


您可以组合使用TEXTJOIN()FILTERXML()如下所示。

=AVERAGE(FILTERXML("<t><s>"&TEXTJOIN("</s><s>",TRUE,B2:J2)&"</s></t>","//s[position()>" & COUNTA(B2:J2)-3 &"]"))

在此处输入图像描述

  • 这里"<t><s>"&TEXTJOIN("</s><s>",TRUE,B2:J2)&"</s></t>"将构造一个有效的XML字符串。
  • XPATH参数"//s[position()>" & COUNTA(B2:J2)-3 &"]"将返回最后 3 个节点以AverageAVERAGE()函数计算。
  • COUNTA(B2:J2)-3将检测在最后 3 个节点之前有多少个节点,以便我们可以返回其余节点,这意味着通过FILTERXML()公式总是最后 3 个节点。

FILTERXML()JvdV的更多信息使用 FILTERXML 从字符串中提取子字符串

编辑:对于谷歌表,您可以使用以下公式。

=AVERAGE(FILTER(B2:J2,(COLUMN(B2:J2)-Column(A2))>IF(COUNTA(B2:J2)<=3,0,COUNTA(B2:J2)-3)))

推荐阅读