在 Excel 中,有没有一种不太重复的写法来写 `=IF(=0, "(无)",)`?

在 Excel 中,有没有一种不太重复的写法来写 `=IF(=0, "(无)",)`?

在 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”与“特定值”匹配时显示的值。以下是它们的用法说明:

使用 DISPLAY_0_DEFAULT 和 DISPLAY_3_ARGS 的示例

相关内容