在 Excel 中,我有一个很长的复杂表达式(表达式 A),我正在公式中使用。我希望此公式返回表达式 A 的值,除非该表达式等于某个特定值(例如 0),在这种情况下它会返回其他值,例如“(none)”。
有没有一种书写方式=IF(<Expression A> = 0, "(none)", <Expression A>)
不需要我重复整个表达式 A 两次?(有点像IFERROR
工作方式,除了自定义条件)
答案1
如果你想要显示其他内容而不是具体为零当表达式解析为零时,你可以通过将 1 除以该结果来强制产生错误,例如使用 IFERROR 函数 - 在 Excel 2007 或更高版本中可用
=IFERROR(1/(1/<Expression A>),"(none)")
或使用自定义格式,其中零显示为“(无)”,例如
0;-0;"(none)"
答案2
“不可以”,但通常需要遵守警告,没有 VBA 不行。
但是通过不同的方法,您可能会省去一些麻烦,比如使用条件格式。
答案3
有以下几种选择:
隐藏列
您可以写入<Expression A>
隐藏列中的单独单元格,然后引用该单元格。
Column A Column B
(hidden)
=<Expression A> =IF(A1=0,"(none)",A1)
数字格式
只需使用公式=<Expression A>
,不用担心IF
函数。
将单元格格式设置为风俗: 0;-0;"(none)"
答案4
在 VBA 中,这可以相当轻松地完成。以下是几个示例函数:
函数 DISPLAY_0_DEFAULT(exp_val) 如果 exp_val = 0 那么 DISPLAY_0_DEFAULT = "(无)" 别的 DISPLAY_0_DEFAULT = exp_val 万一 结束函数 函数 DISPLAY_3_ARGS(exp_val, test_val, display_val) 如果 exp_val = test_val 那么 DISPLAY_3_ARGS = display_val 别的 DISPLAY_3_ARGS = exp_val 万一 结束函数
该DISPLAY_0_DEFAULT
函数的作用与问题中描述的一样,将“表达式 A”作为参数。该DISPLAY_3_ARGS
函数的作用相同,但它允许您指定“特定值”(用于比较)以及当“表达式 A”与“特定值”匹配时显示的值。以下是它们的用法说明: