Excel数据清洗之四 清除错误值

错误值在Excel中非常常见。我们在以前的文章中给大家做过介绍(参见#Div/0! Excel中的那些错误值们!),这些错误值都是用公式计算时产生的,大家都司空见惯了。

正因为大家都习以为常了,所以错误值出现在源数据中时,大家都不在意。这些错误值在随后的一些统计分析中就会影响我们的计算。

最典型的影响就是无法得到准确的结果。例如,

只要数据区域包含错误值,对这个区域的求和就不成功!同样,SUMIFS也是这种情况。

错误值不仅仅影响到函数的使用,还影响到数据透视。

我们看下面的数据,

肉眼可见就有两个错误值,一个在分类列:Market,一个在数量列。通过筛选,我们还可以看到更多的错误值,

我们为这份数据插入一个数据透视表,

我们看到,在分类中的错误值使得报表中多了一个错误分类。而数量中的错误值使得整个分类的数量合计都出错了。同时,透视表的总计也没有办法正确计算。

错误值的清除

清除错误值很容易。但是更多的时候错误值代表的是之前的某一步操作有问题,我们要慎重对待。比如下面的场景:

产品大类中的#N/A

下图中的产品大类有#N/A,

产品大类中的#N/A往往是用VLOOKUP函数从销量表到产品清单表关联时没有找到正确的结果,我们的产品表如下图,

这时,我们往往要回到初始的销量表,和产品清单表,仔细检查到底是什么原因造成的VLOOKUP找不到匹配值,是因为产品清单不全呢?(例如Power Query从入门到精通)还是其他原因?(例如数据清洗服务)。找到原因后就需要分门别类的去进行处理。重新生成新的源数据。

同样,如果数据中包含#Div/0的错误值,一般表示这个值是两个数相除得到的,并且除数为0。比如根据销售额和销量算单价。这时就要去检查为什么销量为0,并采取相应的措施去处理。

一旦这些检查都完成了,仍然会有错误值得存在,一般来说我们就直接删除。有两种情况,

一种是直接删掉该行。

如果是产品销售记录表,如果关键信息比如销售额或销售量是错误值,或者产品名称是错误值。这一行往往就没有什么意义了,可以筛选错误值,然后将筛选出来得行直接删除。

另外一种是只清除该单元格。

例如产品销售表中得产品类别是错误值,并不影响该行产品得销售情况,我们可以直接将错误值清除掉。如果错误值很多,可以采用下面的方法,

首先,选中数据区域任意单元格,然后按CTRL+G,打开定位对话框,

点击定位条件,在对话框中点击“常量”,并去掉数字,文本,逻辑值前面的勾选,确保只有错误被勾选,

一般来说,我们应该保证源数据中没有公式,所以这里让大家选择常量。

点击确定,表格区域的所有错误值被选中了,

直接按Del键就可以了。

避免在公式计算时产生错误值

只要公式计算,就有可能产生错误值。这时一个正常的机制,错误值告诉我们遇到了问题,以便我们可以及时的发现问题并想办法解决。唯一的问题时在这些问题不可避免时怎么让数据中没有错误值,从而不影响我们的后续计算和分析。

有一个Excel函数可以帮助我们解决这个问题,IFERROR。

这个函数一般跟别的函数一起使用,例如,

=IFERROR(VLOOKUP(B3,$G$3:$H$6,2,0),"")

这个公式的意思是如果VLOOKUP公式返回错误值,那么整个公式就返回一个空字符串。其中的VLOOKUP公式可以换成任意可能返回错误值的公式。

一般我们不建议第二个参数千篇一律的使用""(空字符串)。因为你公式的返回值有可能是数值,返回空字符串会导致该列的数据类型不统一,此时可以将第二个参数设为0。也有可能根据业务要求,所有没有找到的产品类别都归为一个“外购”类型,所以,第二个参数设为“外购”。

一切还得根据具体业务仔细分析。

总结及其他

错误值的处理本身很简单。但是因为这些错误值的产生往往意味着之前的某步操作中的数据有问题,所以,我们需要回去处理之前的数据。(这也说明了先进行数据清洗的重要性。因为如果之前的数据都没有错误,一般来说,公式不应该产生错误值)。

正是这些需要不停的返工的操作,导致这些错误值的处理变得非常麻烦。如果你的数据比较复杂,这个任务可能会更加艰巨,你可以关注下面的公众号:ExcelEasy寻找更多方法和技巧。

(0)

相关推荐