假设单元格 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