我需要从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来做这个吗?

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


当前回答

我使用了下面的工作使我的excel看起来更干净:

当你进行任何计算时,""会给你错误所以你想把它当作一个数字所以我使用了一个嵌套的if语句来返回0而不是""如果结果是0这个方程将返回""

=IF((IF(A5="",0,A5)+IF(B5="",0,B5)) = 0, "",(IF(A5="",0,A5)+IF(B5="",0,B5)))

这样excel表格看起来会很干净。

其他回答

到目前为止,这是我能想到的最好的。

它使用ISBLANK函数来检查if语句中的单元格是否真的为空。 如果单元格中有任何内容(本例中的A1),甚至是一个空格字符,则该单元格不为EMPTY,计算将得到结果。 这将防止计算错误显示,直到你有数字工作。

如果单元格为EMPTY,则计算单元格将不显示计算中的错误。如果单元格不为空,则将显示计算结果。 如果您的数据是坏的,这将抛出一个错误,可怕的#DIV/0!

=IF(ISBLANK(A1)," ",STDEV(B5:B14))

根据需要更改单元格引用和公式。

尝试使用LEN计算单元格。如果它包含公式,LEN将返回0。如果它包含文本,则返回大于0。

如此多的答案,返回一个值,看起来是空的,但实际上不是一个空的作为单元格请求…

如果您确实想要一个返回空单元格的公式。这是可能的通过VBA。这里是代码,可以做到这一点。首先编写一个公式,在您希望单元格为空的地方返回#N/ a错误。然后我的解决方案自动清除所有包含#N/A错误的单元格。当然,您可以根据自己的喜好修改代码以自动删除单元格的内容。

打开visual basic viewer (Alt + F11) 在项目资源管理器中找到感兴趣的工作簿并双击它(或右击并选择查看代码)。这将打开“视图代码”窗口。在(常规)下拉菜单中选择“工作簿”,在(声明)下拉菜单中选择“小型张计算”。

将以下代码(基于J.T. Grimes的回答)粘贴到Workbook_SheetCalculate函数中

    For Each cell In Sh.UsedRange.Cells
        If IsError(cell.Value) Then
            If (cell.Value = CVErr(xlErrNA)) Then cell.ClearContents
        End If
    Next

将文件保存为启用宏的工作簿

注:这个过程就像一把手术刀。它将删除任何计算为#N/A错误的单元格的全部内容,因此要注意。它们会消失,如果不重新输入它们曾经包含的公式,你就不能把它们拿回来。

NB2:很明显,当你打开文件时,你需要启用宏,否则它将无法工作,#N/A错误将保持未删除

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

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

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

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

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

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

Edit

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

我用的是一个小黑客。 我使用T(1),它返回一个空单元格。 T是excel中的一个函数,如果是字符串返回参数,否则返回空单元格。所以,你能做的是:

=IF(condition,T(1),value)