▶▶▶点击右上角关注,获取更多EXCEL技巧◀◀◀
我们在工作中,有没有遇到过需要在一串有中文和数字组成的字符串,比如:曹操 13971403001,135711021131 马超。碰到从这种由姓名和电话号码组成的字符串中提取姓名或者提取电话号码,该怎么办呢?
像上图这样的情况还好说,我们可以直接使用Excel的自带功能“自动填充”搞定。
就像上图演示的这样,直接在旁边的单元格输入一个“示例”回车,再使用Ctrl E的组合键就可以完成“快速填充”。这种情况当然是最理想的,那如果遇到的是下图这样的情况呢:
毫无规律吧,有的中间有空格,有的没有,有的名字在前面,有的名字在后面,这种情况使用“快速填充”就不好使了。
上图就是使用“快速填充”后的结果,那遇到这样的情况该怎么办呢?
这就需要函数来帮忙了。这里我们会用到的函数有:IF、ISNUMBER、LEN、LENB、LEFT、RIGHT、TRIM、INT
- IF函数:强大的判断函数
- ISNUMBER:判断是否数值是否为数字
- INT:把能转换成数字的字符转换成数字格式
- LEN:计算字符串中字符的个数
- LENB:计算字符串的长度(用这个函数里每个汉字都占两个位置)
- LEFT:从字符串的左边开始提取字符
- RIGHT:从字符串的右边开始提取字符
- TRIM:去除字符串前后的空格
LEFT函数和RIGHT函数我在我的上一篇文章里已经讲过了,这里就不再重复了。想看的朋友可以点这个链接:文本截取函数
因为上图中,名字的位置不固定有时在前有时在后,所有需要使用IF函数配合ISNUMBER函数进行判断具体需要使用LEFT函数还是RIGHT函数来截取字符。
在上图中,公式“=ISNUMBER(INT(LEFT(E5,1)))”中,LERT函数负责提取E5单元格的第一个字符,然后用INT函数转换成数字(如果能转换成数字就转换成数字,不能则返回错误值),最后ISNUMBER函数判断是数字就返回TRUE,不是数字则返回FALSE.
如果ISNUMBER函数的返回值时TRUE时,在这里说明第一个字符是数字,名字在字符串的后面,我们就需要使用LEFT函数从字符串的最左边开始截取字符。如果返回的值未FALSE则使用RIGHT函数从最右边开始截取字符。
好啦,现在我们知道了该使用什么函数来截取字符,但是还不知道截取多长的字符(因为这里的号码都是手机号码,所以都是11位的,但是如果里面有座机号码就需要判断具体要截取多少个字符了),这就需要用到计算字符长度的函数LEN和LENB了。
在上图中,我们可以看到LENB函数提取的字符长度和LEN函数提取的字符串长度是不一样的,因为在计算机中,汉字都是占两个字节的,所在这里每个汉字都算两个字符,所以这里用“LENB(F2)-LEN(F2)”后得出的结果就刚好是汉字的个数。
这时我们就可以通过计算得出需要截取的字符串的长度了。
如上图中,我们可以用公式“=LEN(D2)”计算总的字符个数,然后减去公式“=LENB(D2)-LEN(D2)”计算出的汉字的个数,就得到了除汉字外的字符的格式(包含空格)。然后用RIGHT函数截取这一段字符串。
好啦,现在我们就可以把前面所有的知识点结合起来进行计算了。
上图中,我用多个函数进行嵌套使用组合成了下面的公式:“=TRIM(IF(ISNUMBER(INT(LEFT(D2,1))),LEFT(D2,LEN(D2)-(LENB(D2)-LEN(D2))),RIGHT(D2,LEN(D2)-(LENB(D2)-LEN(D2)))))”
好啦,今天就说到这里了,有什么疑问可以留言给我。
,