在Excel的操作中,我们经常处理一些复杂的文字,文字可能包括数字,字母,汉字,标点符号,有时候需要从中提取一些数字,大写字母或者统计内容项,要完成这些功能,通常离不开两个函式一个LEN和LENB函式,我们就先来聊聊这两个函式用法和区别吧。
LEN和LENB
功能:统计引数的长度,引数可以为常量,表示式,名称,引用单元格;LEN返回是文字长度,有多少字元长度为几而LENB返回的是文字字节长度,比如一个中文字元包括标点符号都是两个字节,那么问题来了,为什么中文字元占两个字节?
我们知道日常在计算机中使用的所有数字,字母,符号,汉字都是用二进位制的数字储存的,而计算机也是国外人设计的,他们在设计之初为了满足他们的语言特点就是规定了基础编码系统为ASCII编码,最初为7位数字和高位校验位来表示所有的大小字母数字以及常用符号,控制符,通讯专用符(储存范围:0-127);后基于X86的系统支援8位ASCII,也就现在的1-255,一个字节为8二进位制数(2的8次方减1),它们就有了统一的名称叫单字节字元;再储存其他的字元需要增加一个字节,所以其它的字元都叫双字节字元,比如汉字,全形下的标点符号,其他语言的文字字元。
下面我们一起看看这两个函式的简单用法,结构图如下:
LEN和LENB函式的结构图示意图看完结构图是不是觉得,你还是说说怎么用吧?好的,我的问题是“我很loveyou”中,如果用上面的两个函式计算出英文的长度是几?汉字的长度是几?你要是直接数数那就赖皮啦,我们一起看看用计算机的方式来得出结果吧!其实就是简答的数学题,我们转化一下条件:假设汉字有X个,英文为Y个,我们可以得出两个等式分别为 X+Y=len("我很loveyou"),2X+Y=lenb("我很loveyou");X=lenb("我很loveyou")-len("我很loveyou"),Y=2*len("我很loveyou")-lenb("我很loveyou");有了公式,假设“我很loveyou”在单元格A1中,统计汉字个数公式:=lenb(A1)-len(A1)等于2;统计英文字母个数的公式:=2*len(A1)-lenb(A1)是不是等于7呢?
提取函式
说到文字的提取函式,应该有六个,分为三对,分别为LEFT,MID,RIGHT,LEFTB,MIDB,RIGHTB;
LEFT函式和RIGHT函式结构比较接近,两者不同的就是方向的差异,LEFT是从左1位开始向后撷取为第二引数长度的字串,而RIGHT则是从右末开始向前撷取长度为第二引数的长度的字串;需注2点:1.文字引数为错误码时会直接返回错误码(文字为引用单元格或函式时,处理需注意考虑错误编码的情况);2.数字引数在不输入情况下,预设为1,如引数>len(文字),则返回整个文字;
具体结构图如下:
LEFT函式和RIGHT函式的结构图至于MID函式在Excel基础知识-详解随机点名器 有过详细介绍,这里就不过多赘述了!接下来就要看看LEFTB,MIDB,RIGHTB函式的情况,其他的功能上跟没有B的函式没有什么差别,主要的差别是在后面的“数字”部分,这里的引数的数字为字节数,因为单字节字元和双字节字元的区别,同样的引数撷取的长度就有所不同,下面我们亲身验证一下这些细微的不同吧!
leftb函式和rightb函式结构图而MIDB函式只是引数跟上两个函式不同,所以单独拿出来说一下,先上结构图吧,
MIDB函式的结构图这里需要说明“开始字节”和“字节数”这两引数,由于是字节数,特别注意在填写引数要注意,填写不当,就会出现你意向不到的结果,下面就仔细确认一下之前,先对字串的储存,其实字串每个字元后面会跟一个分隔符,长度为一个字节,Excel为了对字串的长度进行精准显示,都在程式处理中会过滤掉中间这些分隔符,而末尾的分隔符会被保留,这样话的实际每个双字元的字元占用三个字节,带着这个认识再看是不是就容易理解LEFTB函式和RIGHTB函式,文字引数是双字节时,我们输入3,实际匹配出1个汉字和一个分隔符,当输入4时,会自动过滤掉中间的占位符,就返回了2个汉字,输入5时,依然会匹配出2个汉字一个分隔符。
“分隔符”我怎么没有见过,你不会是骗人的吧?哪我就来证明一下,我说的你看不见的分隔符确实存在,为了方便检测结果,做了一个小的例子,使用的函式为MIDB,检测一下它的存在!资料单元格为A2,内容为:你没有说谎吗?,开始字节在B2单元格,字节数在C2单元格,D2=MIDB(A2,B2,C2)回车,为了让分隔符“显形”,我对D2单元格的文字设定了下划线,好了一起见证奇迹吧:效果图下:
分隔符显示效果图你可以从图中看出分隔符的存在以及位置,是不是你平时都没有注意到这些呢?这些有用吗?如果你在使用MIDB函式撷取文字的时候,就需要注意这个问题,如果你撷取N个汉字,如果字节数填2×N就会出现少一汉字的情况,解决这类问题的方法就是撷取字节数需2×N+1,就能撷取完整的汉字啦,或首或尾都会保留一个分隔符(注:分隔符在字元紧跟其后,这也是为什么当开始字节数为1,不会出现分隔的原因!分隔符也不参与字元字节长度的计算)。
今天的文章就写到这儿了,希望你在读文的时候,有所收获!哪是我最开心的事,希望你有时间也要多多实践,如果发现文中的纰漏,也欢迎你指正,在进步的路上我们一起前行。时光流转,来日方长,期待与屏幕前的你下文再见!
本文为一点号作者原创,未经授权不得转载





























