三大文本截取函数语法:
1、LEFT函数用于从一个文本字符串的第一个字符开始返回指定个数的字符
语法:LEFT( string, n )
2、right函数:返回从字符串右边取出的指定数量的字符。
语法:Right(string, length)
3、MID函数:从一个字符串中截取出指定数量的字符
MID(text, start_num, num_chars)
text被截取的字符
start_num从左起第几位开始截取(用数字表达)
num_chars从左起向右截取的长度是多少(用数字表达)
一、 中文加数字的混合数据提取
上图为姓名与手机号码的混合数据,请将姓名和手机号码分离出来。
公式一:B2=LEFT(A2,LENB(A2)-LEN(A2))
公式解读:经观察,A列中的数据前几个字符都是中文字符,后几个是数字。我们可以用LENB函数和len函数综合使用来判断中文字符和数字的个数。
LENB函数语法:LENB函数的功能为返回文本字符串中用于代表字符的字节数。此函数用于双字节字符。
Lenb函数语法:= Lenb( 字符串 ),特别注意在LENB函数中,一个中文字符算2个字节,数字和英文字符算一个字节。
Len函数语法:Len():得到字符串的长度。语法Len (string)
参数string:string类型变量返回值Long。函数执行成功时返回字符串的长度,发生错误时返回-1。如果任何参数的值为NULL,则Len()函数返回NULL。
在len函数中,中文字符、英文字符、数字字符都算作一个字符,这和lenb函数是不同的,要特别注意。
LENB(A2)-LEN(A2)就能得出在A2中中文字符的个数,中文字符是连续的,且是从左边第一个字符开始的,因此我们用LEFT(A2,LENB(A2)-LEN(A2))就能提取出中文字符,也就是姓名。
公式二:C2=RIGHT(A2,2*LEN(A2)-LENB(A2))
经观察,数字字符是连续的,且在中文字符之后。
中文字符的个数=LENB(A2)-LEN(A2)
数字字符的个数= LEN(A2)-中文字符的个数
综合以上两个公式我们可以得出总公式:数字字符的个数=2*LEN(A2)-LENB(A2)
最后我们再嵌套right函数就能将数字分离出来。
因此总公式为:=RIGHT(A2,2*LEN(A2)-LENB(A2))
因为我们已经求出B2,其实C2也能利用B2来得出,公式为:C2=RIGHT(A2,LEN(A2)-LEN(B2))
Gif操作如下:
二、 中文、数字、英文混合数据提取出数字
公式:B2=-LOOKUP(1,-MID(A2,MIN(FIND({0;1;2;3;4;5;6;7;8;9},A2&1/17)),ROW($1:$15)))
公式解读:经观察,a列数据中既有文本,也有英文和数字字符,因此不能用lenb函数和len函数来截取数字。
公式中1/17约等于0.0588235294117647,包含0至9的所有数字,然后用A2&1/17是将文本和数字关联起来,再用FIND({0;1;2;3;4;5;6;7;8;9},A2&1/17)就能找出0、1、2、3、4、5、6、7、8、9每个数字所在的位置,再用min函数求出所在位置的最小值,也就是数字字符在原数据开始的位置。ROW($1:$15)是从1到15行,excel最大支持识别15位数字。ROW($1:$15)是一个从1到15的数组。MID(A2,MIN(FIND({0;1;2;3;4;5;6;7;8;9},A2&1/17)),ROW($1:$15))是将A2分别提取1位、2位、3位直到15位数据。Mid函数前面加一个负号是将文本转为数值。文本是没法计算的,除非转换成数值。我们再用lookup函数1来进行模糊查找,就能返回最小的数值。因为返回的数值是负数,我们最后在公式外围再加上负号,负负得正,就将数字提取出来了。本公式是常见的提取混乱数据中的数字的套路公式,有一定函数基础的读者会理解,对于新手还是先记住公式。拿来就用就好。
Gif操作如下: