本期我们来聊聊Excel中如何准确判断字符的类型,有哪些函数可以帮助我们来判断。通过上一期的内容,我们知道可以使用TRIM和CLEAN这两个函数来解决数据中多余空格以及其他影响Excel运算的某些字符,但在使用这两个函数的过程中,主要是基于我们大致的猜测,而无法准确知道到底是哪种类型的字符影响了数据的运算。
在进入到工具的介绍之前,我们还是接着以数据透视表的应用案例先来说明所遇到的问题。
在数据透视表中,我们要根据“Organisation”这一项来统计对应“Events”的总数。
在数据透视表中,将“Events”拖至“值”字段区域,并设置“求和项”,但结果显示的均是“0”,说明统计的结果是有问题的。
回到数据表格中,我们观察到“Events”列中的数据看上去并没有大问题,然而在Excel中,默认情况下“数字”型的值一般在单元格中向右对齐,而此例中所有的数据在单元格中都向左对齐,其原因很可能是当前的数据为文本类型,而非数字。
这些看上去是“数字”的数据在Excel表格作为文本存放,原因可能有多种,或因其被转换成文本值,亦或这些单元格中有其他文本字符,但不轻易可见。因此,我们需要使用一些工具来对其进行科学准确地判定,然后再施以解决的方案。
01 ISNUMBER函数,判定是否为“数字”类型的值
第一个用来判断的函数是ISNUMBER,在J2单元格中输入ISNUMBER函数,参数为I2单元格中的数据,按Enter键后,返回的是FALSE,说明这不是一个数字型的数据。
通过快速填充功能复制此函数于该列的其他单元格,发现“Events”列中的所有数据均不是数字型。
与ISNUMBER函数类似的另一个用于判断的函数是ISTEXT,用于判定数据是否为文本类型的数据。
既然我们通过ISNUMBER函数判断出这些数据不是数字型,接下来的问题就是判断是否有其他的字符。
02 LEN函数,返回单元格所包含的字符数量
在K2单元格中输入LEN函数,参数为I2单元格,按Enter键后,返回的值为“1”,对应数据“3”,仅含有一个字符;但是当复制此函数判断其他的数据时,发现其他的数据并不仅仅只有“数字”本身所包含的字符数量,例如K3单元格返回的字符数为“2”,而对应I3单元格中我们所能看到的数字“2”为一个字符,说明此单元格中还有其他的不可见的字符。
如果字符数和“数字”本身所包含的字符数相同,我们可以直接将其转换成数字型的数据,而如果包含有其他字符,则需要先清理这些字符,例如在上一期我们所使用的CLEAN和TRIM函数。
虽然我们知道有其他多余的字符,那如何更准确地知道这些字符的类型呢?在介绍第三个工具之前,我们先来了解一下ASCII代码,在下图的表格中,是一个ASCII代码的对应列表。
计算机是以二进制(Binary)的方式来存储值的,例如“空格 Space”对应的二进制代码为“100000”。
不过,二进制的方式不易于工作,所以通常以与之对等的十进制方式来表示,例如“空格”所对应的十进制代码为32。再比如大写字母“A”,其十进制代码为65。
03 UNICODE函数,返回字符对应的十进制代码
在了解ASCII代码的基础上,我们便可以使用UNICODE函数来确定数据中多余的字符究竟是什么。
因“Events”列中的数据均在单元格中向右对齐,所以这些多余的字符不应在数据的左边,并且基本上可判断是在数据的右边,所以此例中会用到RIGHT函数来截取这些多余的字符。
在L2单元格中,输入函数公式“=UNICODE(RIGHT(I2,1))”,按Enter键后,复制函数公式快速填充。
I2单元格对应的代码为52,实际上就是数字“3”,I3和I4单元格对应的代码为32,所以多余字符为空格,而其下面的数据对应的代码为160,关于代码160的字符类型以及如何清除这类字符,我们会在下一期继续介绍,敬请期待!