仅当存在至少5个元素时,由1个单元格中的逗号分隔的数字数组的总和

时间:2018-05-23 10:49:17

标签: excel-formula

  1. 我需要同一个单元格中元素数组的总和。
  2. 它们以逗号分隔。
  3. 如果有< 5元素,则不要计算该单元格的总和。
  4. 示例:

    cell 1A: 2,1,2,3,1  cell 1B: 9 (the sum)
    
    cell 2A: 1, 2       cell 2B: -- (nothing as there are less than five elements).
    

    我试图解释自己。希望很清楚。

2 个答案:

答案 0 :(得分:3)

我在这里问了一个类似的问题:

Old Question

但是您还有其他要求,请尝试以下用户定义函数:

Public Function SumWithin(s As String) As Variant
    If s = "" Then
        SumWithin = ""
        Exit Function
    End If

    If InStr(1, s, ",") = 0 Then
        SumWithin = ""
        Exit Function
    End If

    arry = Split(s, ",")
    If UBound(arry) < 4 Then
        SumWithin = ""
        Exit Function
    End If

    For Each a In arry
        SumWithin = SumWithin + CDbl(a)
    Next a
End Function

一些例子:

enter image description here

这种方法避免了典型的文本到列方法所需的所有额外单元格。
如果没有 可以做到这一点VBA,但它涉及数组公式。

答案 1 :(得分:2)

你可以使用名称管理器( Ctrl + F3 )来实现这一点,以擅长将列表作为数组读取,我调用了我的命名范围“valueArray”:

=EVALUATE("{"&SUBSTITUTE(Sheet1!$A2," ","")&"}")

请注意,row参数没有绝对引用,并且它与数据在同一行开始(以正确对齐数组的第一次使用)。

您可以直接引用Sheet1!$A2直接包含在EVALUATE()中,并使用大括号,但SUBSTITUTE()已用于确保数据不会受到空格的影响。

Name Manager

现在您已拥有该数组,您可以轻松地对其执行逻辑操作,如果在您预期结果时抛出错误或单元格为空,则可能是其中一个值未被解析为号码(可能是一两个字母):

=IF(COUNT(valueArray)>4,SUM(valueArray),"")

Example