这个问题太讨厌了,不知你有没有遇到过——空单元格吗?不空怎么办?

只要方法对,一点也不累!

绝大部分Excel工作都很简单。根据我们的经验,绝大部分人的Excel工作都可以控制在每天5分钟之内。之所以还有很多人在Excel上花费太多时间,甚至需要天天加班,是因为没找到/不知道正确的方法。

这个正确的方法有时就是一个小技巧而已。

今天我们介绍的就是这样一种情况。

01

问题

有一天,某人遇到了这么一个问题。大概背景是这样的:

某人当时拿到了从数据库中导出的数据:每个门店的各项指标。然后需要给每个门店打分。每个门店要打几十个不同的项目分数,这些打分公式已经设计好了。其中很多公式用到了一个函数:

COUNTA。

计算很简单,只要将设计好的公式往下拖拽就好了。

某人一眼就发现了问题:结果不对。

简单来说(为了简单,就截取其中的一部分数据吧):

这个COUNTA的结果是90,从图上看明显就是错误的。

仔细检查那些空白单元格,没有发现任何问题:

从编辑栏上看,这个单元格是空的

用LEN函数来看,长度为0

用ISBLANK函数来看,发现了问题:这个单元格并不是空的。

所以,我们现在面临的情况是:

这些看上去是空白的单元格,实际上并不空。

处理也简单,选中这个“奇怪”的单元格,然后按Delete就可以了。

问题是怎么能够批量清空这些单元格呢?

02

徒劳无功的尝试

这个情况看上去很简单。但是处理起来却跟想象的不一样。

第一个想法是替换,

在查找内容框中什么也不输入,替换为中也保持为空,点击全部替换。

什么反应也没有。

在查找内容中输入:"",这是空字符串的标准输入方式,替换为继续保持为空:

点击全部替换,

什么也没有发生!

既然此路不通,试试定位怎么样?

选中整个区域,按Ctrl+G,调出定位对话框,选择定位条件,然后选中空值,

点击确定,

再次失败。

TRIM函数行吗?CLEAN呢?你试试看,不起作用!

各种方法都试过了,都不行。

怎么办?只能一个一个单元格删除了。有十几万行呢!!!

03

问题分析及解决

这实际上是Excel中的“零长字符串”问题,英文叫“zero length string”,简称zls。

实际上,我们经常使用这种字符串,比如,下面的公式:

=IF(A1>10,A1,"")

或者公式:

=IFERROR(VLOOKUP(B2,F2:G30,2,0),"")

都可能会返回"",这就是零长字符串。

当然,如果是公式产生的ZLS,选中单元格后,在编辑栏中可以看到公式。但是,如果我们通过复制-选择性粘贴-数值,将单元格从公式粘贴为数值后,就会出现某人遇到的情况:编辑栏中什么都没有,但是单元格非空。

除了公式外,还有其他方式也可以产生ZLS:

  • 在单元格中输入:'。这种方式产生的ZLS在编辑栏中可以看到这个英文单引号,但是结果跟前面产生的方式一模一样。

  • 从某些支持零长度字符串的数据库系统中导出到Excel。本文中某人遇到的就是这种情况。

当你遇到这种问题时,针对不同的场景,可以采用下面两种方法。

场景1 如果所有其他的明确有值的单元格中都是数字

就像本文中某人遇到的情况,

这里,所有非空的地方都是数字,其他地方我们要求应该为空。这时就简单了。

按Ctrl+G打开定位,点击定位条件,选择常量,勾选文本:

点击确定:

此时,所有应该为空的单元格全部选中。按Delete键,

可以看到,无论是COUNTA公式,还是ISBLANK公式,结果都正确了。

场景2    如果区域中有值的单元格不仅仅是数字,还有文本,就不能用这个方法了。

这时,你可以选中这片区域,

实际上,你可以选中整个工作表

然后按Alt+F11,进入VBA编辑器

缺省应该就是这种状态。如果你有多个文件打开,就在左边点击数据所在的文件,并且双击Thisworkbook,然后在右下角的立即窗口中输入下面的代码:

selection.value=selection.value

然后按回车执行这句代码,然后返回Excel:

结果正确了。

04

总结

在日常工作中,难免会遇到各种各样的问题,就像本文中的某人一样。这些问题一定会让你计划好的方法无法顺利执行,就像本例中的某人设计好的函数无法得到正确的结果。此时,一定有两个方法可以解决这个问题,一个是显而易见但是需要花费大量的时间,比如,每个单元格选中然后删除。另一个就是想本文后面介绍的这样的方法。你要做的就是,深吸一口气,然后调动你学过的Excel知识,找到类似于后一种的简单方法。如果你还找不到,就来到本公众号,可以在往期文章中搜索,也可以直接跟客服咨询。

还是那句话:

只要方法对,一点也不累!

(0)

相关推荐