鲍勃问是否有可能写一个公式并在注释中而不是在单元格中得到答案。简短的答案是不,您不能使用公式来做到这一点。但是,您可以使用宏来实现。例如,以下宏将两个单元格(A1和B1)的内容相加,然后将结果粘贴到单元格C1的注释中:

Sub MakeComment()

With Worksheets(1).Range("C1").AddComment         .Visible = True         .Text "Total of cell A1 plus cell B1 is equal to " & _           ([A1].Value) + ([B1].Value)

End With End Sub

如果您希望在一系列单元格上运行宏,则需要另一种方法。以下宏循环遍历选择中的所有单元格。如果单元格包含公式,则宏会将值(公式的结果)放在该单元格的注释中。

Sub ValueToComment()

Dim rCell As Range     For Each rCell In Selection         With rCell             If .HasFormula Then                 On Error Resume Next                 .Comment.Delete                 On Error GoTo 0                 .AddComment                 .Comment.Text Text:=CStr(rCell.Value)

End If         End With     Next     Set rCell = Nothing End Sub

在选择中的单元格之间循环时,如果其中一个单元格具有公式和现有注释,则该注释将被删除并替换为包含公式结果的新注释。

之后,将显示该单元格的值以及具有相同编号的注释。除了CStr,您还可以使用Format函数以所需的任何方式显示值。

您还可以创建一个宏,该宏将在您更新特定单元格的内容时修改注释。例如,假设每次有人在单元格C11中进行更改时,您都希望将该单元格中任何内容的结果放入附加到单元格F15的注释中。下面的宏就是这样做的:

Private Sub Worksheet_Change(ByVal Target As Range)

Dim sResult As String

If Union(Target, Range("C11")).Address = Target.Address Then         Application.EnableEvents = False         Application.ScreenUpdating = False         sResult = Target.Value         Target.ClearContents

With Range("F15")

.ClearComments             .AddComment             .Comment.Text Text:=sResult         End With         Application.EnableEvents = True         Application.ScreenUpdating = True     End If End Sub

当某人在单元格C11中输入公式(或值)时,该公式的结果(或值本身)将放入附加到单元格F15的注释中。由于这是一个事件触发的宏,因此需要在将要运行的工作表的代码窗口中输入它。

最后,您可能希望宏监视整个列。下面的宏使用工作表的Change事件,就像前面的宏一样。但是,只有在F列中进行了更改,并且仅当该列中的单个单元格发生更改时,它才会生效。

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Cells.Count > 1 Then Exit Sub     If Target.Column <> 6 Then Exit Sub

Dim x As String     Application.EnableEvents = False     If Target.HasFormula Then         x = Evaluate(Target.Formula)

Else         x = Target.Text     End If

Target.ClearComments     If Target.Text = "" Then         Application.EnableEvents = True         Exit Sub     End If

Target.AddComment x     Target = ""

Application.EnableEvents = True End Sub

如果用户对F列中的单个单元格进行了更改,则宏将获取输入内容的结果,并将其放在该单元格的注释中。然后删除单元格的内容。

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(13038)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。您可以在此处为Excel的较旧菜单界面找到此技巧的版本: