工作中我们经常会在Excel中遇到看上去一模一样的数据,但是在数据校验时却提示FALSE。这说明这些数据实际上是不同类型的数据。那么这些数据是怎么来的,又该怎样辨别和解决问题?下面笔者以Excel 2016为例,结合一些实例为大家介绍相应的解决方案。
文|俞木发
情况1:小数位数及浮点数不一致导致的
在日常使用SUM函数计算工资表总计数据的时候,统计员总是发现统计的总和数据和计算器统计的数字看上去一样(都是77898.65),但是使用公式“=I13=J13”验证时却提示FALSE,表示这两个数据其实是不一样的(图1)。对于财务人员来说,数据不一致就要重新仔细核查,无形中增加大量的工作量。
这个原因其实是由于浮点存在导致统计误差,解决这个问题方法是使用ROUND函数对数值进行四舍五入计算。在I15单元格中输入公式“=ROUND(I13,2)”,这样统计的数字就是正确的了(图2)。而将I13单元格的格式设置为“常规”,它的实际数字为77898.65333,所以和J13单元格是不相等的数字。
情况2:单元格类型不一致导致
在Excel中数据的类型有很多,比如文本、日期、数字等,因此在一些单元格中看上去一样的数据,由于类型的不同也会导致出错。比如在使用MID函数从A列文本中提取日期数据,从外观上看B、D列的日期数据是一样的,但是在C列使用“=B2=D2”核查,全部显示为FALSE,显然也不是同样的数据(图3)。
其实MID函数提取到的字符都是文本数据(只是看上去像是数字或者日期而已),而日期实际就是一种特殊的数字,因此B、D列是完全不同类型的两种数据。可以将D列数据类型设置为“常规”,这些日期实际为44836、44837⋯⋯的数据,它和B列显然是不同的(图4)。
解决方法是将文本型数据转化为日期,只要在原来B列的公式后添加“*1”(表示乘以1)即可。这样再核验就不会出错了。
情况3:显示格式导致的问题
在Excel中为了更方便显示数据形式,可以使用Text函数进行自定义格式显示,但是这样很容易误导我们的视觉。比如下面B列和C列的数据看上去是不是一模一样?但是使用公式检验后却显示FALSE(图5)。
定位到B2单元格可以看到,B列实际上是使用TEXT函数设置的日期文本格式,本质上是文本数据,它和C列日期数据不一样。解决方法同上,在公式后面添加“*1”即可让B、C列数据类型一致了。
情况4:数据包含空格
从一些系统中导出或者网上复制的数据,数据中间经常会包含空格,由于空格不会在单元格中显示出来,因此一些数据看上去一样,实际由于空格的存在,它们是两种完全不同的数据。这类错误经常出现在文本数据计算时,比如通过LEN函数计算字符长度,空格在Excel就相当于是一个字符,所以A2和C2的字符长度是不同的(图6)。对于空格的去除,可以使用TRIM函数,比如在E2单元格输入“=TRIM(C2)”,这样就可以将单元格中的空白字符删除了。
情况5:数据包含空值
在Excel中,空值("")和空其实是不同类型的字符,前者是一个字符(空值),后者则是全空没有任何内容。但是在Excel中,从外观看上去这两类字符的显示是一模一样的,这样在公式的引用中使用不当就会出现错误。
比如下表中的J7单元格使用了“=IFERROR(js,"")”公式,使用IFERROR函数将没有数据显示的赋值为“""”,在外观看上去和常见的空单元格并没有什么不同,但是这却导致M7单元格的公式出现错误(图7)。
M7单元格中的公式为“=J7-H7”,其中H7为空单元格,这样公式实际就是“=""-空单元格”,在Excel中空值无法和0(即空单元格)运算,最终导致M7单元格提示公式出错(图8)。
因此,在Excel的公式中,如果要让空值所在的列参与公式的运算,那么就需要将其显示为“0”值,这样参与运算才不会出现错误。解决的方法是将J7单元格的“=IFERROR(js,"")”公式更改为“=IFERROR(js,0)”,这样就不会出错了。大家在日常使用中需要注意这一点。 CF
原文刊登于2022 年 12月1 日出版《电脑爱好者》第 23 期
END
更多精彩,敬请期待……