如何在复杂的Excel公式中添加注释

33

能否在Excel公式的单元格内添加注释?我在单元格内有一个非常长的表达式,如果我可以在其中添加注释,那么它就更容易理解了。

我的Excel版本是2010。这里是我想要做注释的示例单元格:

=MID(
A4,
((FIND("n   ",A4,FIND(G4,A4))+75)+LEN(H4)+78),
(FIND("n   ",A4,(FIND("n   ",A4,FIND(G4,A4))+75))) - ((FIND("n   ",A4,FIND(G4,A4))+78))
)

3
您可以在单元格中添加注释,就像单击时出现的气泡一样。 或者您可以将公式拆分成多个单元格,并使用标题行解释每个单元格的作用。 这些可以位于可打印和正常视图区域之外。 - Scott Craner
2
@ScottCraner 我认为Scott的方法更加简洁;如果你的公式已经足够长/复杂需要解释,那么在单元格'外部'添加注释可以帮助保持清晰。将公式拆分成多个单元格是展示逐步获取值的好方法,这对于审核你的方法尤其重要。 - Grade 'Eh' Bacon
5个回答

29

8
非常有趣的用法 - N() 函数将文本转换为 0,因此您写的任何内容最终都会被公式忽略。我通常更喜欢使用实际的注释系统,但有时候这是不可能的[例如,注释可能只用于公司审查记录等]。 - Grade 'Eh' Bacon
只要公式给出数值结果,就可以了。 - Tom Sharpe
8
如果你有类似于=IFERROR(A1/A2,"")+N("comment")这样的公式,当A2=0时会出错,所以我不能完全支持它。 - Tom Sharpe

12

对于Ben Rhys-Lewis在回答中提到的Tom Sharpe问题,有一个解决方案。好吧,作为Excel,可能有五六个,但是:

对于您希望添加注释的文本函数,请使用以下内容:

=CONCATENATE(IFERROR(A1/A2,""),T(N("comment")))

N()函数将返回一个“0”,而T()函数会将其转换为Excel的空白。它在公式中的作用类似于"",因为它并不会向字符串中添加任何内容,但如果您使用它粘贴值,它将不是空值...这样就产生了Excel的“空白”。

请注意,如果除法不会导致错误,它也可以与数学运算一起使用,因为虽然Excel将结果转换为文本,但在单元格中,它将其作为数字用于对该单元格的文本-数字结果进行数学运算(例如,文本“3.5”仍将添加到在另一个单元格中将“3.5”加6得到数字9.5的单元格中)。

此外,为了使注释更加突出,您可以在该部分及其注释之前和之后使用Alt-Enter来打破公式的片段。虽然不像真正的注释,但比某些可怕的混乱更加突出,足以值得做,您几乎总是可以在注释之前添加空格:

=function stuff function stuff
CONCATENATE(IFERROR(A1/A2,""),    T(N("comment")))
and a bit more function stuff and more and more and so on...

1
或者,如果您不想让单词“CONCATENATE”和额外的一组括号丑化您的公式,您可以使用这个:=IFERROR(A1/A2,"") & T(N("comment")),它本质上是等效的,但看起来更干净。另一个优点(尽管这很不可能成为问题)是,CONCATENATE有255个字符长度限制,而**&**没有。 - Adi Inbar

9
您可以像这样使用 LET 函数:
=LET(
comment, "my comment",
SUM(P4:P10))

3
这是一个很好的建议。虽然它不能转换成Google Sheets或Libre Office,但对于纯Excel来说,它非常准确。 - havlock

8

N()注释函数不一定要是该函数的最后部分。因此,这是可行的解决方案:

=+C6+N("C6变量的描述") +C7+N("C7信息") +C8+N("C8信息")

虽然不是必需的,但为了提高可读性,我使用params来表示评论涉及多个元素。对于这个例子,第一个注释只是指“q13”单元格,而接下来的两个注释则指“(…)”之间的计算。

=+AA435 * q13+N(奖金乘数) +(c435*$d$4/a435)+N("按面积缩放的利润") +(p24*$q$5 + w12*3)+N("blah...")

我总是喜欢将长而复杂的公式分解为单个简单的合并公式,将中间公式的隐藏列相加。


6

2020年发布LET函数(仅限Microsoft 365订阅用户)使得通过使用变量,可以以更易读的方式重写复杂公式。正如Jim Pearson在他的回答中指出的那样,您还可以将注释作为未在公式中使用的变量。

以下是使用变量名称重写公式以帮助理解公式不同部分的众多方法之一:

=LET(\0, "Extract characters from text based on the contents of the other columns.",
     text, A4,
     find_string_G, FIND(G4, text),
     find_string_n, FIND("n   ", text, find_string_G),
     start_num, (find_string_n+75) + LEN(H4) + 78,
     num_chars, FIND("n   ", text, (find_string_n+75)) - (find_string_n+78),
MID(text, start_num, num_chars)
)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接