Excel,如何在单元格公式中显示值而不是引用

时间:2012-07-20 12:50:34

标签: excel excel-formula

单击Excel中的单元格时,会看到类似=A1+B1的公式。这是带有单元格引用的公式。我希望看到包含单元格值的公式,例如:=10+20

A1 =10           //Cell A1 has the value 10
A2 =20           //Cell A2 has the value 20
C2 =A1+B1        //Cell C2 has the value A1 + A2

D2 =10+20        //I want Excel to derive this.

我不希望单元格中显示的公式或任何内容。我仍然希望C2显示30.我只是想要它,这样如果我点击C2,我可以在公式栏中看到=10+20

或者,如果C2在显示计算时显示评论(因此点击C2会显示评论“= 10 + 20”,这也会有效。

5 个答案:

答案 0 :(得分:3)

这不是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

答案 1 :(得分:3)

这是不可能的,但如果原因是您很快想要识别这些值,则可以使用“跟踪先例”,它将向1个工作表中的相关字段绘制箭头,而无需用户识别单元格和一直都是范围。
如果这是你的目的,也许会有所帮助...... 您可以在功能区的“公式”选项卡中找到此功能。

答案 2 :(得分:1)

这是一个回答你的第一个问题的技巧:

在公式栏中,在formlula中选择要查看...的值的单元格引用,例如A1,然后按F9。嘿presto,公式的突出部分被评估:= 10 + A2。

仍然在公式栏中,现在对A2做同样的事情,你会看到= 10 + 20 单元格中显示的值仍为30,但它不再从A1和A2派生,因为这些单元格中的值已在公式中得到解析。按ENTER键接受评估的公式。

您可以使用F9评估公式的任何部分,以查看Excel将返回的内容 - 如果可以 - 并且您可以在较长的公式中多次执行此操作以检查一个接一个的部分。 NB!您在公式栏中选择/突出显示的部分必须是“完整”短语,因为它可以进行评估,例如完整的括号集,公式中的所有参数等。

当一个冗长的公式返回错误而你想找到导致问题的部分时,这是最有用的......我一直都在使用它。在数组公式等中查找单个dud值或显示范围中的值时非常有用。 NB!长度限制适用......

最后,一旦你查看了公式的评估组件,一定要点击Esc,这样公式就会回到原来的状态。否则,您的公式只会变成一系列数字或字符串,而不再作为公式运行。如果您忘记了这一点,请撤消/ Ctrl + Z以恢复您的公式。

要回答第二个问题:有一个Excel函数N(“...”),它允许您在公式中添加注释作为文本字符串,而不是在单独的注释框中。

例如:= SUM($ B $ 2:$ B $ 21)+ N(“所有20位销售代表的总销售额。”)

= N(“任何文本字符串”)总是计算为0(使用上面的提示来确认这一点),因此添加0不会改变你的答案,但允许单个公式带有他们自己的小Rem语句。 N(3)的计算结果为3,而N(“3”)的计算结果为0,顺便说一句。

只是为了好玩,你可以通过在公式中添加N()语句来保护/改变你的工作表:= SUM($ B $ 2:$ B $ 21)/ N(IF($ F $ 3 =“Go”,1, “1”))

其中$ F $ 3(一些无害的单元格,文本颜色为白色)必须在其中输入单词“Go”以停止公式除以0.您可以将其除以某个随机数等,从而呈现结果毫无意义......或者至少减慢某人的速度。

HTH

答案 3 :(得分:0)

您可以使用CONCATENATE来获得所需的结果。 对于您的情况,请输入以下函数:

D2 =连接(&#34; =&#34;,A1,&#34; +&#34;,A2)

答案 4 :(得分:-1)

没那么复杂。选择要评估的单元格,然后单击公式 > 评估 > 继续单击评估,直到它显示您要查找的单元格中的值。 如果公式中包含的单元格太多,会有点麻烦。