在 Excel 中的单个单元格中添加总和的某个括号

在 Excel 中的单个单元格中添加总和的某个括号

我需要以下方面的帮助:
在一个单元格中,我添加了:((0)+(0)+(10))+((13)+(0)+(0))+((0)+(0)+(10))
我只想添加每个外括号中的第三个括号,这样总数就会是 20。
你们对这种方法有什么建议吗?

答案1

这是一个 VBA 宏作为解决方案。

对于 excel 公式,使用 Find() 和 Mid() 来处理多个目标会变得非常长且复杂。此外,这里也存在困难,因为加法长度会发生变化。0 是一位数,其他是两位数。

此宏使用活动单元格并添加每个第三个元素(无论括号是否为括号)。最后一行已被注释掉,但可用于将总和插入到工作表中。

Sub sumSplit()
    Dim currCell As String
    Dim sums As Variant
    Dim myTot As Long
    Dim myIndex As Long
    Dim myString As String
    Dim myExit As Boolean

    myString = Replace(ActiveCell.Value2, "(", "")
    myString = Replace(myString, ")", "")
    sums = Split(myString, "+")
    myIndex = 2
    myTot = 0
    myExit = True
    Do While myExit
        If myIndex <= UBound(sums, 1) Then
            myTot = myTot + sums(myIndex)
        Else
            myExit = False
        End If
        myIndex = myIndex + 3
    Loop

    MsgBox myTot
    'ActiveCell.Offset(0, 1).Value2 = myTot

End Sub

答案2

=LEFT(RIGHT(A2,LEN(A2)-FIND("|",SUBSTITUTE(A2,"(","|",4))),FIND(")",RIGHT(A2,LEN(A2)-FIND("|",SUBSTITUTE(A2,"(","|",4))))-1) + LEFT(RIGHT(A2,LEN(A2)-FIND("|",SUBSTITUTE(A2,"(","|",8))),FIND(")",RIGHT(A2,LEN(A2)-FIND("|",SUBSTITUTE(A2,"(","|",8))))-1) + LEFT(RIGHT(A2,LEN(A2)-FIND("|",SUBSTITUTE(A2,"(","|",12))),FIND(")",RIGHT(A2,LEN(A2)-FIND("|",SUBSTITUTE(A2,"(","|",12))))-1)

注意事项 - 如果满足以下条件,此方法有效:

  • 在每一组外括号中,始终恰好有三组内括号,如示例所示((...)...(...)...(...))
  • 第三个内括号包含一个数字,而不是一个计算结果为数字的表达式;可以有空格( 2 )
  • 外括号恰好有三组((1)+(11)+(111))+((2)+(22)+(222))+((3)+(33)+(333))

如果引用单元格包含公式,则用 FORMULATEXT 将每个单元格引用括起来FORMULATEXT(A2)。如果有时是公式,有时是文本,则使用IFERROR(FORMULATEXT(A2),A2)

编辑:
这项改进消除了第三个警告,即现在可以有 0 到 1000 个外括号三元组(将两个1000s 编辑为所需的限制的相同值)。

=SUM( IFERROR( NUMBERVALUE( LEFT( RIGHT( A2, LEN(A2) - FIND( "|", SUBSTITUTE( A2, "(", "|", ROW($A$1:$A$1000)*4))), FIND( ")", RIGHT( A2, LEN(A2) - FIND( "|", SUBSTITUTE( A2, "(", "|", ROW($A$1:$A$1000)*4)))) - 1)), 0))

此改进是一个数组公式,因此按Ctrl- Shift-Enter输入。

相关内容