各位朋友,你们好。
今天继续和大家分享这套函数(确实不知道该用哪个量词了,就觉得这个还算贴切点),主要是涉及文本的计数、截取、查找、替换等处理的。相信很多朋友都已经猜到了,那么再让这些函数来亮个相:
注意:由于内容较多,此文要分为几个部分讲解,今天讲解第二部分。
字符串长度(字符串的皮尺)
上图是函数基础知识,我们可以怎么样用这个函数呢?接下来我举几个例说明:
一、检查数据中是否存在不可见字符
注意:①最常见的不可见字符就是空格,所以此处以空格为例;但是除空格外,还有很多不可见字符,实际使用中需要注意;
②【'】单引号不会被统计,这个单引号有什么用呢?其作用是将输入的内容直接转换为文本格式,无论数值、函数、公式,输入的时候在最前面添加一个英文状态下的单引号,内容即转换为文本了。常用于:录入身份证号码、录入以0开始的数据、将单元内的公式展示出来等;
③强制换行符【Alt+Enter】占一个字节,如上面例子中,先强制换行,显示时再取消自动换行,显示的结果和未换行一样,但是用LEN函数计算的结果却不一样,这一点很容易迷惑人。另外,用强制换符实现的换行和用系统自动换行实现的换行,其结果是不一样的(结果见下图)。
④对不可见字符的处理,有以下几个函数:TRIM、SUBSTITUTE、CLEAN。TRIM函数可以清除字符串开始和末尾的空格,对中间的空无效;SUBSTITUTE函数可以清除所有的空格,包括前后和中间的;CLEAN函数可以清除字符串中不能打印的字符,比如换行符等,但是对空格无效。
二、检查数据是否正确
可用于检查固定长度的字符串,比如我们的身份证号码,都是18位的,所以我们可以用LEN(身份证号)是否等于18,来判断身份证号码是否正确(见下图)。
三、计算字符串中汉字、数字(或字母)的个数
计算汉字字数的公式:=LENB(A2)-LEN(A2)
公式理解:LENB("今日头条")-LEN("今日头条")=8-4=4
LENB("2020")- LEN("2020")=4-4=0
计算数字字数的公式:=2*LEN(A2)-LENB(A2)
公式理解:2*LEN("今日头条")-LENB("今日头条")=8-8=0
2*LEN("2020")- LENB("2020")=8-4=4
四、来一个开脑洞的用法:根据月份计算这个月份所在的季度
通过计算2^(1~12)的结果,然后用LEN函数判断计算结果的数字字符数,来计算季度(这是一个取巧的方法,也是一个开脑洞的方法,大家可以看看是否还有其他用法。
字符串截取(字符串的剪刀)
上图是这6个函数基础知识,有几个地方需要 注意:
1、LEFTB函数对汉字取5个字节时,得到的结果是2个字(4个字节),说明这个函数遇到汉字时,函数不能提取半个汉字,因此会向下取整。MIDB、RIGHTB函数原理一样;
2、MID函数第二参数为1时,其效果和LEFT函数一样,且MID函数由于多一个参数,实际使用中会更加灵活,所以应用更广泛;
3、LEFT、LEFTB、RIGHT、RIGHTB函数可以省略第二参数,在省略第二参数时,默认取一个字符(字节);
4、函数的【截取长度】参数必须为大于等于0的数字(如果是小数,会向下取整);如果【截取长度】的值大于了字符串本身的字符(字节数),则会返回全部的字符串;
5、使用MIDB、LEFTB、RIGHTB函数时,函数截长度值也应该用字节长度;MIDB的第二参数的起始位置也应该用字节计数;
6、这6个函数都是文本函数,对数值进行截取后,得到的数值是文本格式的数值。
我们可以怎么样用这个函数呢?接下来我举几个例说明:
一、提取汉字、字母
如图所示,首先用LEN和LENB函数的组合,计算出汉字和字母的字数,然后分别用函数提取相应字符数的内容即可。用这种方式提取,要提取的内容必须连在一起,比如文字字母是分开的,不是交叉存在的。
二、从身份号码中提取信息
从上图中,我们可以分解出身份号码各个含义,通过这个信息,我们就可以根据我们的需要,从身份号码中提取我们所需要的信息。比如(身份号码所在的单元格为C46):
提取生日的公式:=TEXT(MID(C46,7,8),"#-00-00")*1
提取性别的公式:=IF(MOD(MID(C46,17,1),2),"男","女")
提取生肖的公式:=MID("鼠牛虎兔龙蛇马羊猴鸡狗猪",MOD(YEAR(C48)-4,12)+1,1)
所有鼠年年份除以12均余4。所以用年份减4再除以12,鼠年都会余0,然后在余数加1,得到1并后作为MID第2参数,从属相顺序中的第1位开始,提取1个字符;牛年就会是从第2位开始提取1个字符。
提取农历年份的天干:=MID("甲乙丙丁戊己庚辛壬癸",MOD(YEAR(C48)-4,10)+1,1)
提取农历年份的地支:=MID("子丑寅卯辰巳午未申酉戌亥",MOD(YEAR(C48)-4,12)+1,1)
所有甲子年年份除以12或10,均余4。所以用年份减4再除以,12或10,,甲子年都会余0,然后在余数加1,得到1后作为MID第2参数,从干支顺序中的第1位开始,提取1个字符;乙丑年就会是从第2位开始提取1个字符。
既然说到农历,那就顺便普及下在2007及更高版本的excel中,我们是如何来计算农历日期的:
Excel中,公历转农历的代码是:[$-130000],即:=TEXT(公历日期,”[$-130000]md")【m表示月,d表示日】
农历月份:=TEXT(C48,"[$-130000][DBNum1]m月")
农历日期:=TEXT(C48,LOOKUP(--TEXT(C48,"[$-130000]d"),{1,11},{"初",""})&"[$-130000][DBNum1]d")
农历日期,用=TEXT(C48,"[$-130000][DBNum1]d日"),但是农历的写法是日期小于等于10的,前面要加【初】,所以用LOOKUP函数判断计算的农历日,在根据结果确认是否在前面加【初】字。
重点注意:用微软提供的公历、农历转换代码,无法识别农历的闰月,使用的时候请小心,所以我后面会提供一个VBA做的自定义函数,请持续关注。
不知不觉又已经2500多字了。今天的内容就分享到这里,看完后,希望大家能有所收获。不可见字符的处理是否还有印象?字符串截取函数的注意事项是否还记得?身份号码提取信息、公历转农历的计算方式,是否好玩呢?是否还继续期待后续的更新呢?我们明天(3月4号)继续更新。欢迎大家持续关注。
如果你喜欢我分享的内容,请点个赞支持下;
如果你觉得我分享的内容对你有帮助,可以关注我;
如果要看我以前分享过的好玩的内容,大家可以去我的主页查看历史文章。