我知道在 Excel 中可以切换显示值和显示公式我需要将统计课的作业以打印的 Excel 表格形式提交,其中显示两个都公式和结果。现在,讲师让我们要么复制公式并将其作为文本粘贴到计算值旁边,要么复制值并将其粘贴到公式旁边。这非常低效,容易出错(如果在复制粘贴后更改公式或值),并且通常浪费时间。
有什么方法可以让 Excel 显示公式和其值是否在同一个单元格中?如果没有,是否有任何函数可以将引用单元格中的公式显示为纯文本,例如,=showformula(A1)
将打印出来=sum(A2:A5)
而不是25
(如果这些是单元格的公式和值A1
)?
我正在使用 Excel 2010,但如果能提供一个适用于任何最新版本的 Excel 的通用答案就更好了。
答案1
我不知道有任何内置函数可以实现这一点。不过,您可以创建一个用户定义的 VB 函数来实现您想要的功能。
按Alt+F11要打开 VBA 编辑器,请在项目资源管理器中单击鼠标右键,然后选择插入->模块.粘贴以下代码:
Function GetFormula(cell)
GetFormula = cell.Formula
End Function
现在您可以使用=GetFormula(A1)
来显示该单元格的公式。
答案2
也许值得注意的是,从 Excel 2013 开始,有一个本机函数用于此功能:FORMULATEXT
。
来自 support dot office dot comFORMULATEXT
功能文章:
描述
以字符串形式返回公式。
句法
FORMULATEXT(参考)
FORMULATEXT 函数语法具有以下参数:
- 参考 必需。对单元格或单元格区域的引用。
评论
- 如果您选择引用的单元格,FORMULATEXT 函数将返回公式栏中显示的内容。
答案3
这里有一种方法可以自动化你之前所做的事情。它结合了LonelyKnight 对自己问题的回答,Indrek 的回答,以及 Billis 的回答:
Sub Show_Formulas()
Dim rng As Range, cell As Range
row_offset = 10
col_offset = 0
Set rng = Range(Cells(1, 1), Cells(5, 7))
On Error GoTo ErrHandler
For Each cell In rng
cell.Offset(row_offset, col_offset) = "'" & cell.Formula
Next cell
Exit Sub
ErrHandler:
MsgBox "The cow jumped over the moon", , "Error!", Err.HelpFile, Err.HelpContext
End Sub
对于指定范围 (此处硬编码为A1:G5
) 中的每个单元格,它将单元格的公式 (受撇号保护) 复制到固定偏移量的单元格中。 (参见如何在 MS Office 中添加 VBA?
有关在 Excel 中使用 VBA 的指导。)您只需记住在打印之前运行此宏。
PrintOut , , , True
或者,在 之前添加一个语句Exit Sub
,这个宏就会为您打印工作表。(您只需记住打印使用此宏)第四个参数PrintOut
是预览,设置为True
让 Microsoft Excel 在打印工作表之前调用打印预览(从而为您提供取消的选项)或False
(或省略)立即、无条件打印工作表。
或者,如果你真的担心忘记运行这个,你可以Private Sub Worksheet_Change
随时使用来更新可显示的公式任何工作表中的更改。
答案4
免费插件,方程式办公桌可以为您做到这一点,并以更易于理解的方式显示公式并找出公式中的错误。
正如您在下面的屏幕截图中看到的,您可以同时查看单元格的最终结果和原始公式以及公式的增强可探索显示,正如您所要求的。
[披露:我是 FormulaDesk 的作者]