在编写公式时,不会总是一帆风顺,难免会发生错误。只要耐心调试,应该会实现所需要的结果。
在编写公式时,不会总是一帆风顺,难免会发生错误。只要耐心调试,应该会实现所需要的结果。
下面,让我们认识一下可能会发生的错误,方便在碰到时明白到底错在哪里或者从哪里查找错误,更好更快地调试好公式。
认识Excel显示的错误
通常,如果编写的公式不符合Excel规定要求,就会出现图1所列错误之一。
图1
错误值含义与错误处理
上图1标识了在编写Excel公式时可能显示的错误值及名称,下面分别介绍这些错误值的含义、发生的原理与处理方法。
#DIV/0!
这是由于公式中试图除以0导致的错误,可能是由于公式引用的单元格包含0值或者为空。
对于一些除法性质的函数,如果给某参数不合适地传递0,也会发生#DIV/0!错误,例如,如果MOD函数的第2个参数为0,将会返回错误值#DIV/0!。
可以使用IF函数先判断要作为除数的单元格值,如果其为空,则暂不计算,直至输入值后再进行计算。如图2示例。
图2
#N/A
意味着公式无法返回一个合法的值,通常是由于在函数中使用了不恰当的参数或者省略了必要的参数。我们常用的VLOOKUP函数就经常会出现这种错误,如果查找的值小于查找区域中的第1个值,就会返回#N/A。
如果出现此错误,那么可以查找下列因素:公式引用的单元格中是否有#N/A值,传递给公式中函数参数的数据类型是否有错误,是否缺少必要的参数。
#NAME?
当Excel无法识别公式中使用的名称时,或者Excel将公式中的某些文本理解为未定义的名称时,就会显示#NAME错误值。
如果出现此错误,就应该检查使用的名称是否拼写错误、是否使用了未定义的名称、是否函数名称拼写错误、是否包含函数的插件未安装、使用的字符串没有加上引号、是否单元格引用错误、是否对其他工作表引用时没有为工作表名添加单引号。
#NULL!
当对两个区域进行交叉运算,而这两个区域没有共同单元格时,会导致出现#NULL!。
此时,应检查这两个区域是否相交。
#NUM!
意味着公式中某个数值有问题,通常是数学函数中使用了非法的参数,例如SQRT函数使用负数作为参数。此时,着重检查为数学函数提供参数的单元格。另外,如果进行迭代运算,也可能导致出现#NUM!错误。
#REF!
这是由于公式中包含了一个非法的单元格引用。如果删除了公式引用的单元格,或者对公式使用的单元格进行了剪切和粘贴操作,或者引用了一个不存在的单元格地址,就会出现#REF!错误。
此时,应及时撤销所执行的操作,或者将单元格设置为正确的引用。
#VALUE!
意味着公式所使用的函数中使用了不适当的参数,通常是使用了错误的数据类型数据,例如,在需要使用数值时使用了字符串文本,或者需要引用一个单元格时引用了单元格区域。如果使用的值太大或者太小,超出了Excel的处理范围,也会出现这种错误。
此外,在输入数组公式时,忘记按Ctrl+Shift+Enter键,而直接按Enter键,也会出现#VALUE!错误。
其他错误
括号不匹配
在编写公式时,如果少输入了括号或者没有把括号放在正确的位置,当对公式确认时,就会显示如图3所示的提示信息。可以让Excel帮助你更正公式,也可以选择“否”后自已来更正公式。
图3
循环引用
当公式直接或间接引用自已所在的单元格时,就会发生循环引用,Excel会显示一个警告对话框。如果单击“确定”,就会显示一个跟踪箭头连接循环引用中涉及的单元格。此时,可以根据这些线索来纠正循环引用。
如果必须使用循环引用,可以选取“Excel选项”对话框“公式”选项卡下的“启用迭代计算”。
公式错误检查
单击错误值单元格左侧的黄色小图标,会出现一系列错误检查的方法,如图4所示,可以使用他们来检查公式错误。
图4
可以在如图5所示的“Excel选项”中设置公式错误检查规则,使Excel自动检查公式中的错误。
图5
使用“公式审核”中的“公式求值”功能,如图6所示,一步一步查看公式计算过程,看看公式是在哪步出错的,从而找出错误来源。这也是我经常使用的方法。
图6
处理或获取错误值的函数
下面列出了Excel中一些处理或获取错误值的函数。
ISNA(value)
如果参数value是错误值#N/A,返回TRUE。
NA()
返回值#N/A。
ISERR(value)
如果参数value为除#N/A之外的任何错误值,则返回TRUE。
ISERROR(value)
如果参数value为任何错误值,则返回TRUE。
ERROR.TYPE(error_val)
返回与错误值对应的编号数字。
结语
在编写公式的过程中,结果显示为错误值不一定是坏事情,这促使我们不断调试公式,从而更加熟练。特别值得一提的是,可以利用错误值来达到我们的目的,这将是在后面的文章中会介绍的技巧。