我有一个电子表格,其中包含多行矩阵中的值。每行都有 N 个数字。我想计算该行中 M 个较高值的平均值。M<N。是否有通用函数可以执行此操作?
如果没有这样的功能,我想我可以使用 gnumeric 的 python 插件或 libreoffice 的基本插件来添加它。
答案1
好的,如果您的数据数字数据在行中Sheet1
,则输入您的米值代入Sheet2!M1
,并输入
=AVERAGE(LARGE(Sheet1!1:1, ROW(INDIRECT("1:"&M$1))))
变成Sheet2!A1
。(如果您的数据仅在 到 的列中,则更 G
改为 。Z
)按++创建数组公式。向下拖动所需的行数,然后就完成了。Sheet1!1:1
Sheet1!G1:Z1
CtrlShiftEnter
解释:
&
是 Excel 中的字符串连接运算符(据我所知,Libre Office Calc 与 Excel 非常相似),因此,如果Sheet2!M1
是 17,那么就"1:"&M$1
变成字符串值"1:17"
。INDIRECT("1:17")
1
是由 Row到 Row 组成的区域17
,并且ROW()
其中 是数组{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17}
。
这是创建由运行时数据指定的数组值的技巧。LARGE(Sheet1!1:1, {1…17})
是数组{ LARGE(Sheet1!1:1,1), LARGE(Sheet1!1:1,2), LARGE(Sheet1!1:1,3), …}
,它是 中最大的成员Sheet1!1:1
,第二大成员,…,依此类推,直到第 17 个。