我在 Excel 2003 中运行一个复杂的 IF 方程(是的,办公室里的电脑也这么旧了),对于这个方程来说,空白单元格的值设为零很重要,据我所知,这就是 Excel 读取空白单元格的方式。有问题的单元格的格式为日期(*9/10/2014)。
这个等式运行正常,除了一个单元格(留空)没有在等式中注册为零,因此我得到了一个错误值,而它应该是正确的。我检查了格式,它(据我所知)与周围的单元格相同。
我可以通过剪切并粘贴上面的空白单元格来更正此问题,但我不知道为什么这样做有效。我需要知道原因,以便在使用方程式时更正它,以确保我没有得到错误值。
答案1
在 Excel 中,空白单元格与零不同。Excel 将空白识别为空,而不是值。如果您需要在公式中将空白单元格视为零,请执行以下操作(在此示例中,我将使用 A1 作为引用单元格):
if(isblank(a1),0,a1)
用它代替公式中的 a1。
编辑:您收到了几个答案。两个答案都提到了“如何修复”,但都没有真正解决您问题的第二部分。
Excel 确实能识别显式零值与无值之间的差异。在某些情况下,公式中缺失值的含义不会产生影响。3 + 0 等于 3 + 无。当计算中没有逻辑差异时,Excel 会将空单元格视为包含零。
如果您希望这样做,那就没问题。但是,如果单元格表示数据,您通常需要区分输入为 0 的值和缺失值(应该是其他值或应该排除的值)。这就是为什么最好不要依赖 Excel 来猜测您想如何使用单元格,而是将其明确化。
在编辑此内容时,有几种建议将空白强制为零。一种简单的方法:在单元格引用前加上一对减号:
--a1
双减号将保持数值不变,如果为空则返回零,如果是其他内容(例如空格字符),则返回错误。
至于为什么您的单元格行为异常,可能有多种原因。我们必须查看电子表格以及您如何使用有问题的单元格。但是,它可能不是格式化。至少在更高版本的 Excel 中,即使单元格被格式化为文本之类的格式,如果它是空的,它将被视为零进行计算。更可能的原因是单元格实际上不是空的,而是包含空格字符之类的内容。如果是这样,建议的所有修复方法都不起作用(空格不是空白或数字)。尝试删除单元格,这将删除任何不可见的内容。
如果您对内容感到好奇,请使用字符串函数查看它是什么。Len(a1) 将告诉您它是否为空。
答案2
公式:
=VALUE(...)
此公式对于空白的计算结果为 0,有效值不会改变。
答案3
我遇到了同样的问题,并找到了原因:单元格看似为空,但实际上并非如此 - 单元格中有空格(虽然很难看到)。因此,只需删除空格(CTRL R:将“ ”替换为空白)即可解决问题。
答案4
这似乎是 Excel 2013 的一个错误。
可能会遇到单元格看似为空的问题。引用时报告它不是数字、不是零、不是空白、不是空。但无论你如何引用单元格,都找不到它包含的内容。
这些是我尝试引用单元格或查看其内容时得到的结果:
• =IF(ISBLANK(a1),1,2) ==> 返回 2。(即单元格不为空白)。
• =IF(A1=0,0,1) ==> 返回 1。(即单元格不包含零)。
• =A1*2 ==> 返回 #VALUE!(即单元格不包含数字)。
• =IF((A1)>1,1,0) ==> 返回 1(即,单元格包含大于 1 的数字!)。
• =IF(A+>9.99999999999999E+307,1,0) ==> 返回 1。(即,单元格包含一个非常大的数字)。
• ="X"&A1&"X" ==> 返回“XX”。(即单元格 A1 实际上是空的。)
• =CELL("format",A1) ==> 返回“G”。(即,单元格的数字格式为常规)。
• =CELL("prefix",A1) ==> 返回“^”。(即,单元格以文本和数字为中心格式化)。
• =CELL("type",A1) ==> 返回“I”。(即单元格包含文本!)。
• =VALUE(A1) ==> 返回 #VALUE!(即,调用不包含看起来像数字的文本字符串)。
• =LEN(A1) ==> 返回 0。(即任何字符串的长度为零)。
• =T(A1) ==> 不返回任何内容(即返回长度为零的文本字符串)。
• =UNICODE(A1) ==> 返回 #VALUE!(即单元格不包含字符串)。
对我来说,当我从其他应用程序导入数据时,就会发生这种情况。(我的情况是 Telekurs Infinacials)。函数 =If(A1=0,0,1) 报告单元格 a1 不为零。函数 =A1+1 产生 #VALUE! 错误。对空单元格进行其他几种数学运算会产生 #VALUE! 结果。
逻辑结论是单元格不包含数字。然而,这与公式 =if(A1>99,1,1) 相矛盾,该公式暗示单元格包含一个较大的数字。
我已经排除了单元格内容被隐藏或者单元格包含空格的可能性。
(您可以通过输入类似 ="X"&A1&""X" 的公式来测试这一点,其中 A1 是您怀疑不为空的单元格。如果公式返回“XX”,则该单元格不包含任何数字,也不包含任何文本。否则,两个“X”之间会有空格、数字或文本。)
该单元格似乎也不为空白,因为如果使用公式 =IF(ISBLANK(a1),1,2),它会返回 2。
所以问题是 Excel 将单元格记录为非空白、非零,但不包含数字或字符。
将单元格重新格式化为数字格式或文本不会改变任何内容。将 a1 放在括号中 (a1) 不会返回任何值(既不是零,也不是空白,也不是任何字符或空格)。
唯一的解决方案是单击单元格,然后单击输入栏并按回车键。问题消失,它变为一个空白单元格,并返回零值。
如果您只需要处理一个单元格,此解决方案还算不错,但如果您有一个包含数千个此类单元格的电子表格,则会出现问题。因此,在包含数字的电子表格中,如果您希望将“明显”为空的单元格计算为零,则需要使用 iferror 函数,如下所示:
旧公式:=A1*2
新公式:=IFERROR((A1*1),0)*2