只要方法对,一点也不累! 绝大部分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:
当你遇到这种问题时,针对不同的场景,可以采用下面两种方法。 场景1 如果所有其他的明确有值的单元格中都是数字 就像本文中某人遇到的情况, 这里,所有非空的地方都是数字,其他地方我们要求应该为空。这时就简单了。 按Ctrl+G打开定位,点击定位条件,选择常量,勾选文本: 点击确定: 此时,所有应该为空的单元格全部选中。按Delete键, 可以看到,无论是COUNTA公式,还是ISBLANK公式,结果都正确了。 场景2 如果区域中有值的单元格不仅仅是数字,还有文本,就不能用这个方法了。 这时,你可以选中这片区域, 实际上,你可以选中整个工作表 然后按Alt+F11,进入VBA编辑器 缺省应该就是这种状态。如果你有多个文件打开,就在左边点击数据所在的文件,并且双击Thisworkbook,然后在右下角的立即窗口中输入下面的代码: selection.value=selection.value 然后按回车执行这句代码,然后返回Excel: 结果正确了。 04 总结 在日常工作中,难免会遇到各种各样的问题,就像本文中的某人一样。这些问题一定会让你计划好的方法无法顺利执行,就像本例中的某人设计好的函数无法得到正确的结果。此时,一定有两个方法可以解决这个问题,一个是显而易见但是需要花费大量的时间,比如,每个单元格选中然后删除。另一个就是想本文后面介绍的这样的方法。你要做的就是,深吸一口气,然后调动你学过的Excel知识,找到类似于后一种的简单方法。如果你还找不到,就来到本公众号,可以在往期文章中搜索,也可以直接跟客服咨询。 还是那句话: 只要方法对,一点也不累! |
|