在Excel中从公式返回空单元格


Answers

Excel没有办法做到这一点。

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

我之前看到的一种做法是使用NA()和ISNA(),但这可能会也可能不会真正解决您的问题,因为NA()被其他函数处理的方式存在很大差异(SUM(NA ))是#N / A,而如果A1为空,则SUM(A1)为0)。

Question

我需要从Excel公式中返回一个空单元格,但看起来Excel处理空字符串或对空单元格的引用与真空单元格不同。 所以基本上我需要类似的东西

=IF(some_condition,EMPTY(),some_value)

我试图做的事情如

=IF(some_condition,"",some_value)

=IF(some_condition,,some_value)

并假设B1是一个空单元格

=IF(some_condition,B1,some_value)

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

编辑:建议,我试图返回NA(),但为我的目的,这也没有工作。 有没有办法与VB做到这一点?

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




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

它使用ISBLANK函数来检查单元在IF语句中是否真空。 如果单元格中有任何内容,在本例中为A1 ,即使是SPACE字符, 那么单元格不是EMPTY ,将导致计算结果。 这将保持显示计算错误,直到您有数字处理。

如果单元格为EMPTY则计算单元格将不会显示计算中的错误。如果单元格NOT EMPTY的,则会显示计算结果。 如果你的数据不好,这会引发错误,可怕的#DIV/0

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

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




也许这是作弊,但它的作品!

我还需要一个表格,它是图表的来源,我不希望任何空白或零单元格在图表上产生一个点。 确实,您需要设置图形属性,选择数据,隐藏和空白单元格以“将空单元格显示为间隙”(单击单选按钮)。 这是第一步。

然后在可能以不需要绘制的结果为单位的单元格中,将公式放入IF语句中,并使用NA()结果,如=IF($A8>TODAY(),NA(), *formula to be plotted*)

当出现无效的单元格值时,这确实给出了没有点的所需图形。 当然这会让所有具有该无效值的单元格读取#N/A ,这很麻烦。

要清除它,请选择可能包含无效值的单元格,然后选择条件格式 - 新规则。 选择'仅格式化包含的单元格',并在规则描述下从下拉框中选择'错误'。 然后在格式中选择font - color - white(或任何背景颜色)。 单击各个按钮即可离开,您应该看到具有无效数据的单元格看起来是空白的(它们实际上包含#N/A但白色背景上的白色文本看起来是空白的。)然后链接图形也不显示无效值点。




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

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

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

这样Excel表格看起来很干净......




如此多的答案会返回一个值为空的值,但实际上并不像请求的单元格那样空。

根据要求,如果您确实需要一个返回空单元格的公式。 它可以通过VBA。 所以,这里的代码就是这么做的。 首先编写一个公式,在希望单元格为空的任何位置返回#N / A错误。 然后我的解决方案会自动清除所有包含#N / A错误的单元格。 当然,您可以修改代码以根据您喜欢的任何内容自动删除单元格的内容。

打开“视觉基本查看器”(Alt + F11)在项目浏览器中找到感兴趣的工作簿,并双击它(或右键单击并选择查看代码)。 这将打开“查看代码”窗口。 在(General)下拉菜单中选择“Workbook”,在(Declarations)下拉菜单中选择“SheetCalculate”。

将以下代码粘贴到Workbook_SheetCalculate函数中(基于JT Grimes的答案)

    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错误将不被删除




如果目标是当单元格实际上具有零值时能够将单元格显示为空,则不是使用导致空单元格或空单元格的公式(因为没有empty()函数),而是使用公式,

  • 你想要一个空白单元格,返回一个0而不是""然后

  • 设置像这样的单元格的数字格式,在那里你必须拿出你想要的正数和负数(前两项用分号分隔)。 就我而言,我的数字是0,1,2 ......而我想让0显示为空。 (我从来没有弄清楚是什么文本参数被用于,但它似乎是必需的)。

    0;0;"";"text"@
    



谷歌给我带来了一个非常类似的问题,我终于想出了一个适合我需求的解决方案,它可能也会帮助其他人......

我用这个公式:

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



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






Links