Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Text 对分隔文本中的数字求和并返回平均值_Text_Sum_Formula_Libreoffice Calc - Fatal编程技术网

Text 对分隔文本中的数字求和并返回平均值

Text 对分隔文本中的数字求和并返回平均值,text,sum,formula,libreoffice-calc,Text,Sum,Formula,Libreoffice Calc,我在单元格中有以下数字作为文本: "12-14-14-16-18-10" 现在我需要计算平均值,但我不想创建额外的列,因为数据的长度不同 使用公式有什么方法可以做到这一点吗?换句话说:您想用“-”字符分割字符串值并计算其元素的平均值?AFAIK解决此问题的唯一方法是使用一个小宏(也称为用户定义函数),因为LO Calc在电子表格级别上不提供拆分/标记化函数 快速而肮脏的解决方案可能如下所示: 函数分割平均值(a) 将数组(UBound(拆分(a,“-”)作为整数)调暗 阵列=拆分(a,“-”)

我在单元格中有以下数字作为文本:

"12-14-14-16-18-10"
现在我需要计算平均值,但我不想创建额外的列,因为数据的长度不同


使用公式有什么方法可以做到这一点吗?

换句话说:您想用“-”字符分割字符串值并计算其元素的平均值?AFAIK解决此问题的唯一方法是使用一个小宏(也称为用户定义函数),因为LO Calc在电子表格级别上不提供拆分/标记化函数

快速而肮脏的解决方案可能如下所示:

函数分割平均值(a)
将数组(UBound(拆分(a,“-”)作为整数)调暗
阵列=拆分(a,“-”)
作为整数的Dim SumVal
对于i=0到UBound(阵列)
SumVal=SumVal+theArray(i)
接下来我
分割平均值=总和/(UBound(数组)+1)
端函数

当然,没有类型检查等等,所以你自己试试看。要使用它,只需将它复制到StarBasic标准模块中,保存,并使用
=split_average(A1)
在电子表格中调用它。对于一般的用户定义函数,请参见。

我知道这是一个旧线程,但让我加上我的两分钱。使用
FILTERXML
和一些
XPATH
magic=)


=FILTERXML(“®EX(A1;”-“;”;“g”)&“;“sum(//s)div count(//s)”)


我们甚至可以在数字节点上执行检查:

=FILTERXML("<t><s>"&REGEX(A1;"-";"</s><s>";"g")&"</s></t>";"sum(//s[.*0=0]) div count(//s[.*0=0])")
=FILTERXML(“®EX(A1;“-”;“g”)&“;”sum(//s[.*0=0])div count(//s[.*0=0]))


看看这个,我发现不幸的是
Excel
不允许在表达式本身内部进行直接操作。出乎意料的是,图书馆办公室真的

=FILTERXML("<t><s>"&REGEX(A1;"-";"</s><s>";"g")&"</s></t>";"sum(//s[.*0=0]) div count(//s[.*0=0])")