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

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


当前回答

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

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

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

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

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

其他回答

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="",,)返回为真,需要在同一个单元格中用&分隔两次查找。解决这个问题的简单方法是使第二个查找单元格位于行的末尾,并且始终为空。

哇,很多人误解了这个问题。很容易让一个单元看起来是空的。问题是,如果您需要单元格为空,Excel公式不能返回“无值”,而只能返回一个值。返回零、空格甚至“”都是一个值。

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

这可以在Excel中完成,而不需要使用新的图表功能将#N/A设置为间隔。但它很精细。假设你想在XY图上画一条线。然后: 第一行,第1点 第二行,第2点 第三行:硬空 第四行,第二点 第五行,第3点 第6行:硬空 第七行,第3点 第八行,第4点 第9行:硬空 等

结果是有很多独立的行。这些点的公式可以控制是否被#N/ a省略。通常将公式中的点INDEX()放入另一个范围。

那么你必须使用VBA了。您将遍历范围内的单元格,测试条件,并删除匹配的内容。

喜欢的东西:

For Each cell in SomeRange
  If (cell.value = SomeTest) Then cell.ClearContents
Next