我需要从Excel公式返回一个空单元格,但Excel似乎将空字符串或空单元格引用与真正的空单元格区别对待。所以本质上我需要

=IF(some_condition,EMPTY(),some_value)

我试着去做一些事情

=IF(some_condition,"",some_value)

and

=IF(some_condition,,some_value)

假设B1是空单元格

=IF(some_condition,B1,some_value)

但这些似乎都不是真正的空单元格,我猜是因为它们是公式的结果。是否有办法填充一个细胞当且仅当满足某些条件,否则保持细胞真正空?

编辑:按照建议,我尝试返回NA(),但对于我的目的,这也不工作。有办法用VB来做这个吗?

编辑:我正在构建一个工作表,它从其他工作表中拉入数据,这些工作表被格式化为将数据导入数据库的应用程序的非常特定的需求。我没有权限更改此应用程序的实现,如果值为“”而不是实际为空,则会失败。


当前回答

在IF语句中使用COUNTBLANK(B1)>0代替ISBLANK(B1)。

与ISBLANK()不同,COUNTBLANK()将""视为空并返回1。

其他回答

我去掉了单引号,这样+1-800-123-4567这样的电话号码列就不会产生计算结果并产生负数。 我尝试了一个黑客删除他们的空单元格,酒吧引用,然后击中这个问题也(列F)。它更容易只是在源单元格上调用文本,瞧!:

=IF(F2="'","",TEXT(F2,""))

这个答案并没有完全解决OP,但我已经有几次遇到类似的问题,并寻找答案。

如果您可以根据需要重新创建公式或数据(从您的描述中看起来似乎可以),那么当您准备好运行需要空白单元格实际为空的部分时,您可以选择该区域并运行以下vba宏。

Sub clearBlanks()
    Dim r As Range
    For Each r In Selection.Cells
        If Len(r.Text) = 0 Then
            r.Clear
        End If
    Next r
End Sub

这将清除当前显示“”或只有公式的任何单元格的内容

谷歌带着一个非常相似的问题来到这里,我终于找到了一个适合我需要的解决方案,它可能也会帮助其他人…

我用了这个公式:

=IFERROR(MID(Q2, FIND("{",Q2), FIND("}",Q2) - FIND("{",Q2) + 1), "")

Excel没有办法做到这一点。

Excel单元格中的公式的结果必须是数字、文本、逻辑(布尔)或错误。没有公式单元格值类型为“空”或“空白”。

我所看到的一个实践是使用NA()和ISNA(),但这可能也可能不能真正解决你的问题,因为其他函数处理NA()的方式有很大的不同(SUM(NA())是#N/ a,而SUM(A1)如果A1为空则为0)。

如果您正在使用HLOOKUP和VLOOKUP等查找函数将数据带入工作表,请将函数放在括号内,函数将返回一个空单元格而不是{0}。例如,

如果查找单元格为空,将返回零值:

    =HLOOKUP("Lookup Value",Array,ROW,FALSE)

如果查找单元格为空,则返回空单元格:

    =(HLOOKUP("Lookup Value",Array,ROW,FALSE))

我不知道这是否适用于其他功能……我还没试过。我使用Excel 2007来实现这一点。

Edit

为了让IF(A1="",,)返回为真,需要在同一个单元格中用&分隔两次查找。解决这个问题的简单方法是使第二个查找单元格位于行的末尾,并且始终为空。