我需要从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公式不能返回“无值”,而只能返回一个值。返回零、空格甚至“”都是一个值。

因此,您必须返回一个“魔法值”,然后使用搜索和替换或使用VBA脚本将其替换为无值。虽然你可以使用空格或“”,但我的建议是使用一个明显的值,比如“NODATE”或“NONUMBER”或“XXXXX”,这样你就可以很容易地看到它出现在哪里——在电子表格中很难找到“”。

其他回答

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

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

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

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

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

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

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

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

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

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

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