示例:
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).
我试图解释自己。希望很清楚。
答案 0 :(得分:3)
我在这里问了一个类似的问题:
但是您还有其他要求,请尝试以下用户定义函数:
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
一些例子:
这种方法避免了典型的文本到列方法所需的所有额外单元格。
如果没有 可以做到这一点VBA,但它涉及数组公式。
答案 1 :(得分:2)
你可以使用名称管理器( Ctrl + F3 )来实现这一点,以擅长将列表作为数组读取,我调用了我的命名范围“valueArray”:
=EVALUATE("{"&SUBSTITUTE(Sheet1!$A2," ","")&"}")
请注意,row参数没有绝对引用,并且它与数据在同一行开始(以正确对齐数组的第一次使用)。
您可以直接引用Sheet1!$A2
直接包含在EVALUATE()
中,并使用大括号,但SUBSTITUTE()
已用于确保数据不会受到空格的影响。
现在您已拥有该数组,您可以轻松地对其执行逻辑操作,如果在您预期结果时抛出错误或单元格为空,则可能是其中一个值未被解析为号码(可能是一两个字母):
=IF(COUNT(valueArray)>4,SUM(valueArray),"")