LibreOffice Calc单公式求最小3值平均值报错求助
解决LibreOffice Calc中计算最小3个值平均值的问题
我之前在LibreOffice Calc里也碰到过这个奇怪的问题!你用SMALL函数时遇到的自动修改数字和Err539错误,其实是Calc对数组常量的解析规则和Excel不一样导致的,不用辅助单元格也能搞定,给你两个靠谱的方案:
方案1:用ROW函数生成序列(数组公式)
直接用ROW(1:3)来动态生成1、2、3的序列,代替手动输入的数组常量,这样就不会出现解析错误。公式如下:
=AVERAGE(SMALL(A1:A6;ROW(1:3)))
输入完公式后,必须按Ctrl+Shift+Enter来确认成数组公式,Calc会自动给公式加上大括号(不用手动加),这样就能正确提取出前3个最小值并计算平均值。
方案2:用SUMPRODUCT替代AVERAGE(无需数组公式)
如果不想用数组公式的快捷键操作,可以用SUMPRODUCT来求和,再除以3得到平均值,这个方法Calc能直接识别,不会出错:
=SUMPRODUCT(SMALL(A1:A6;{1;2;3}))/3
这里要注意数组常量用分号分隔,这是LibreOffice Calc里数组元素的正确分隔符(和Excel用逗号不同),这样SMALL会返回三个最小值,SUMPRODUCT自动求和后除以3就是平均。
为什么你的原公式会出错?
LibreOffice Calc的区域设置会影响数组常量的解析,如果你的系统把逗号设为小数分隔符,输入{1,2,3}时,Calc会把1,2错误解析成其他数值(比如你遇到的20,大概率是区域设置的特殊解析逻辑导致),换成分号分隔或者用ROW生成序列就能避开这个坑。
内容的提问来源于stack exchange,提问作者Vertex




