在Excel中,我们可以通过TRIM和CLEAN这两个函数来清除数据单元格中多余的空格,但CLEAN函数也有其局限性,它只能清除ASCII代码列表中十进制代码的0-31所代表的字符。
但是对于十进制代码为160的字符,则是行不通的。
因此,我们另辟蹊径,先使用Substitute函数,其功能相当于查找并替换,例如,我们可以告知此函数要查找的字符并且替换掉这些字符。
先看一个简单的案例:在“Email”列中,有些数据有单个空格(因人名中的姓里有一个空格字符),我们如果要清理掉这些空格,使用TRIM函数是不行的,因为这些空格是单个空格字符。
我们使用Substitute函数来解决以上问题:双击H2单元格,在“=”后面输入Substitute函数,第一个参数为text(文本),即当前单元格中的文本,第二个参数为要替换掉的字符,此例中为空格,故双引号中输入一个空格,第三个参数为替换后的字符,此例为空,输入一个双引号即可,不用添加任何东西。
按Enter键并使用快速填充功能复制此函数公式于整列数据单元格中,那些没有多余空格的数据不变,但是原先有空格的数据,此时空格已经不存在了。
同理,我们将Substitute函数应用到“Events”列的数据中,不过这里又有另一个小问题,在给Substitute函数设定参数时,如果要替换的字符为空格,我们可以直接输入,但代码为160的字符,即“不换行空格(non-breaking space)”,则不容易直接进行输入,所以我们要用到另一个辅助函数UNICHAR。
UNICHAR函数用于将ASCII的十进制代码转换成实际的字符,如UNICHAR(160)返回的就是一个“不换行空格”,可将其看作是与UNICODE相对应的一个函数。
双击I2单元格,在“=”后输入Substitute函数,其中第二个参数为UNICHAR(160)。
通过Substitute和UNICHAR函数,我们已经将“Events”列中的“不换行空格”字符清除了,但数据中仍然有代码为32的空格字符,对此,我们使用TRIM函数即可。
在TRIM函数的作用下,我们看到数据的“Length”和“Code”现在已显示正确,唯一剩下的问题就是,“Events”中这些看似为“数字”的数据如何真的以数字型的数据显示。要完成这最后一步,我们会用到VALUE函数。
VALUE函数用于仅包含数字的文本,如果有其他的文本字符,则会返回错误。
在TRIM函数之前,输入VALUE函数;“Numeric”列全部显示为TRUE。
与“Events”关联的数据透视表,刷新之后,在进行合计运算时,就不再有问题了。
至此,关于在Excel中清理数据的这一主题,我们就暂告一段落,重点需要了解的是:
1. 在清理数据之前,复制一份原始数据专门用于数据的清理。
2. 了解并熟悉与数据清理相关的一系列函数:TRIM、CLEAN、ISNUMBER、LEN、UNICODE、SUBSTITUTE、UNICHAR、VALUE等。
网友评论