怎么调取cstring left函数_Excel基础知识-文本之长度函数和提取函数

在Excel的操作中,我们经常处理一些复杂的文本,文本可能包括数字,字母,汉字,标点符号,有时候需要从中提取一些数字,大写字母或者统计内容项,要完成这些功能,通常离不开两个函数一个LEN和LENB函数,我们就先来聊聊这两个函数用法和区别吧。

LEN和LENB

功能:统计参数的长度,参数可以为常量,表达式,名称,引用单元格;LEN返回是文本长度,有多少字符长度为几而LENB返回的是文本字节长度,比如一个中文字符包括标点符号都是两个字节,那么问题来了,为什么中文字符占两个字节?

我们知道日常在计算机中使用的所有数字,字母,符号,汉字都是用二进制的数字存储的,而计算机也是国外人设计的,他们在设计之初为了满足他们的语言特点就是规定了基础编码系统为ASCII编码,最初为7位数字和高位校验位来表示所有的大小字母数字以及常用符号,控制符,通信专用符(存储范围:0-127);后基于X86的系统支持8位ASCII,也就现在的1-255,一个字节为8二进制数(2的8次方减1),它们就有了统一的名称叫单字节字符;再存储其他的字符需要增加一个字节,所以其它的字符都叫双字节字符,比如汉字,全角下的标点符号,其他语言的文字字符。

下面我们一起看看这两个函数的简单用法,结构图如下:

71de98baf9f9209d7bb015cc3238faf6.png

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(文本),则返回整个文本;具体结构图如下:

36b355e0310268749ab27902f18ac830.png

LEFT函数和RIGHT函数的结构图

​至于MID函数在Excel基础知识-详解随机点名器​​​​有过详细介绍,这里就不过多赘述了!接下来就要看看LEFTB,MIDB,RIGHTB函数的情况,其他的功能上跟没有B的函数没有什么差别,主要的差别是在后面的“数字”部分,这里的参数的数字为字节数,因为单字节字符和双字节字符的区别,同样的参数截取的长度就有所不同,下面我们亲身验证一下这些细微的不同吧!

5b8ad4c7f13aafa5e48e5cd5c5eea502.png

leftb函数和rightb函数结构图

而MIDB函数只是参数跟上两个函数不同,所以单独拿出来说一下,先上结构图吧,

ecb411a206e31d5054f66987dd417f1f.png

MIDB函数的结构图

这里需要说明“开始字节”和“字节数”这两参数,由于是字节数,特别注意在填写参数要注意,填写不当,就会出现你意向不到的结果,下面就仔细确认一下之前,先对字符串的存储,其实字符串每个字符后面会跟一个分隔符,长度为一个字节,Excel为了对字符串的长度进行精准显示,都在程序处理中会过滤掉中间这些分隔符,而末尾的分隔符会被保留,这样话的实际每个双字符的字符占用三个字节,带着这个认识再看是不是就容易理解LEFTB函数和RIGHTB函数,文本参数是双字节时,我们输入3,实际匹配出1个汉字和一个分隔符,当输入4时,会自动过滤掉中间的占位符,就返回了2个汉字,输入5时,依然会匹配出2个汉字一个分隔符。

“分隔符”我怎么没有见过,你不会是骗人的吧?哪我就来证明一下,我说的你看不见的分隔符确实存在,为了方便检测结果,做了一个小的例子,使用的函数为MIDB,检测一下它的存在!数据单元格为A2,内容为:你没有说谎吗?,开始字节在B2单元格,字节数在C2单元格,D2=MIDB(A2,B2,C2)回车,为了让分隔符“显形”,我对D2单元格的文字设置了下划线,好了一起见证奇迹吧:效果图下:

5192c74280b07e098bf6c5ab6f978ecb.png

分隔符显示效果图

​你可以从图中看出分隔符的存在以及位置,是不是你平时都没有注意到这些呢?这些有用吗?如果你在使用MIDB函数截取文字的时候,就需要注意这个问题,如果你截取N个汉字,如果字节数填2×N就会出现少一汉字的情况,解决这类问题的方法就是截取字节数需2×N+1,就能截取完整的汉字啦,或首或尾都会保留一个分隔符(注:分隔符在字符紧跟其后,这也是为什么当开始字节数为1,不会出现分隔的原因!分隔符也不参与字符字节长度的计算)。

今天的文章就写到这儿了,希望你在读文的时候,有所收获!哪是我最开心的事,希望你有时间也要多多实践,如果发现文中的纰漏,也欢迎你指正,在进步的路上我们一起前行。时光流转,来日方长,期待与屏幕前的你下文再见!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值