在分隔的文本中求和并返回平均值

问题描述 投票:2回答:2

我在一个单元格里有以下的数字作为文本,现在我需要计算平均数,但我不想创建额外的列,因为数据的长度是不同的。

"12-14-14-16-18-10"

现在我需要计算平均数,但我不想建立额外的列,因为数据的长度是不同的。

有什么方法可以用公式来计算?

text sum formula libreoffice-calc
2个回答
1
投票

换句话说:你想用"-"字符分割字符串值,并计算其元素的平均值?AFAIK唯一的解决方法是使用一个小的宏(也就是用户定义的函数),因为LO Calc没有提供电子表格级别的splitittokenize函数。

一个快速而肮脏的解决方案可能如下。

Function split_average(a)
    Dim theArray(UBound(Split(a, "-"))) As Integer
    theArray = Split(a, "-")
    Dim SumVal As Integer
    For i = 0 To UBound(theArray)
        SumVal = SumVal + theArray(i)
    Next i
    split_average = SumVal / (UBound(theArray) + 1)
End Function

当然,这里没有类型检查之类的功能,所以请自行尝试。要使用它,只需将它复制到 StarBasic 标准模块中,保存,然后在电子表格中调用它,使用 =split_average(A1). 关于用户定义的一般功能,请参见 LO计算文档.


0
投票

我知道这是一个老话题,但让我补充我的两分钱。使用 FILTERXML 和一些 XPATH 神奇的=)


=FILTERXML("<t><s>"&REGEX(A1;"-";"</s><s>";"g")&"</s></t>";"sum(//s) div count(//s)")

enter image description here


我们甚至可以实现对数字节点的检查。

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

enter image description here


看着这个,我觉得很遗憾 Excel 不允许在表达式本身内部直接操作。惊讶 LibreOffice 是的!

© www.soinside.com 2019 - 2024. All rights reserved.