如果我有一个单元格公式,例如 A4 中的公式......“=A1+A2”
我知道我可以使用 FORMULATEXT() 函数在单元格 B4 中显示公式,但我不希望公式显示单元格引用。
相反,我想在单元格 C4 中创建一种方法来显示单元格 A4 中的公式,但显示值而不是单元格引用,因此“=5+10”作为最终结果。如果我将 A1 更改为 6,则 C4 中显示的结果将是“=6+10”。
原因是我希望我的 Excel 公式可以在打印页面上检查。单元格引用没有用。我想看到值。我需要这个才能应用于数百个公式。所以我希望有一些 VBA 可以用于用户定义函数,我可以将其添加到类似于 FORMULATEXT() 的单元格中,除了单元格引用之外,我需要的是值。
提前致谢
答案1
Excel 的工作方式并非如此;如果单元格中有一个公式,那么该公式就会显示在公式栏中。
编辑
但是,您可以使用 VBA(来自Tools > Macros > Visual Basic Editor
)编写代码,使用 A + B 的值更新 C 单元格的内容,如下所示:
Private Sub HideFormula()
Dim lastrow As Long, r1 As Long
' Get the last row in the worksheet
lastrow = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
For r1 = 1 To lastrow
' If A & B aren't blank, make the formula of cell C equal to A + B.
If Sheet1.Range("$A$" & r1).Value <> "" And _
Sheet1.Range("$B$" & r1).Value <> "" Then
' In the example, C2 = A1 + B1, so offset C by one
Sheet1.Range("$C$" & (r1 + 1)).Value = _
"=" & Sheet1.Range("$A$" & r1).Value & "+" & _
Sheet1.Range("$B$" & r1).Value
End If
Next
End Sub
编辑2
如果您想用公式中的值替换 C 单元格的内容,您可以使用该.Formula
值找到其公式,然后从那里开始:
Private Sub ReplaceFormulaWithValues()
Dim lastrow As Long, r1 As Long
Dim temp As String, arTemp
' Get the last row in the worksheet
lastrow = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
For r1 = 1 To lastrow
' If A & B aren't blank, make the formula of cell C equal to A + B.
If Sheet1.Range("$C$" & r1).Value <> "" Then
' Get the formula for the current C cell
temp = Replace(Sheet1.Range("$C$" & r1).Formula, "=", "")
' Create an array by splitting the formula on the + sign
arTemp = Split(temp, "+")
Sheet1.Range("$C$" & r1).Value = _
"=" & Sheet1.Range(arTemp(0)).Value & "+" & _
Sheet1.Range(arTemp(1)).Value
End If
Next
End Sub