展平 Excel 公式 (2007)

展平 Excel 公式 (2007)

假设单元格 A1 中有公式 A2 + A3

B1 的公式为 B2 + B2

C1 的公式为 A1 + B1

我需要一种简单快捷的方法来创建平坦状态下的 C1 公式。

即 (A2 + A3) + (B1 + B2)

虽然上面的例子很简单,但我试图简化一个涉及大约 40 个单元格(以及通过第三方插件的大约 70 个调用)的公式。

任何帮助都值得感激!

答案1

如果您只需要查看 C1 单元格中的公式,您可以尝试以下操作:

= CONCATENATE("= (";SUBSTITUTE(FORMULATEXT(A1);"=";"");") + (";SUBSTITUTE(FORMULATEXT(B1);"=";"");")

它确实可以工作Excel-2013但我无法测试Excel-2007

如果您需要执行该公式,您可能需要查看以下答案,了解如何将该字符串转换为真实公式:

https://stackoverflow.com/questions/4471884/turn-a-string-formula-into-a-real-formula

答案2

如果您没有 Excel 2013,您可以使用 Visual Basic 中的短函数伪造 FORMULATEXT 函数。我确实使用了 douglaslps 引用的问题来将其作为值而不是字符串返回。(这个答案非常简洁。)在单元格 C1 中,您可以使用以下公式:

=CombineFormulas(A1:B1,"+")

您可以将此功能放在工作簿模块中的某个位置:

Option Explicit
Public Function CombineFormulas(RangeToCombine As Range, Operator As String)
    'Input:  Range of cells and an operator to use when combining their formulas
    'Output: String of the combined formulas
    Dim cell As Range
    Dim s As String
    s = "="
    For Each cell In RangeToCombine.Cells
        If Len(s) > 1 Then s = s & Operator
        s = s & "(" & Mid(cell.Formula, 2, Len(cell.Formula)) & ")"
    Next
    Application.Volatile
    CombineFormulas = Evaluate(s)
End Function

相关内容