各位朋友,你们好。

今天继续和大家分享这套函数(确实不知道该用哪个量词了,就觉得这个还算贴切点),主要是涉及文本的计数、截取、查找、替换等处理的。相信很多朋友都已经猜到了,那么再让这些函数来亮个相:

注意:由于内容较多,此文要分为几个部分讲解,今天讲解第二部分。

必备的文本处理函数公式 你收到一套函数(1)

一套16个函数


字符串长度(字符串的皮尺)

必备的文本处理函数公式 你收到一套函数(2)

字符串长度函数

上图是函数基础知识,我们可以怎么样用这个函数呢?接下来我举几个例说明:

一、检查数据中是否存在不可见字符

必备的文本处理函数公式 你收到一套函数(3)

检查不可见字符

注意:①最常见的不可见字符就是空格,所以此处以空格为例;但是除空格外,还有很多不可见字符,实际使用中需要注意;

②【'】单引号不会被统计,这个单引号有什么用呢?其作用是将输入的内容直接转换为文本格式,无论数值、函数、公式,输入的时候在最前面添加一个英文状态下的单引号,内容即转换为文本了。常用于:录入身份证号码、录入以0开始的数据、将单元内的公式展示出来等;

③强制换行符【Alt Enter】占一个字节,如上面例子中,先强制换行,显示时再取消自动换行,显示的结果和未换行一样,但是用LEN函数计算的结果却不一样,这一点很容易迷惑人。另外,用强制换符实现的换行和用系统自动换行实现的换行,其结果是不一样的(结果见下图)。

必备的文本处理函数公式 你收到一套函数(4)

强制换行和自动换行的效果及结果

④对不可见字符的处理,有以下几个函数:TRIM、SUBSTITUTE、CLEAN。TRIM函数可以清除字符串开始和末尾的空格,对中间的空无效;SUBSTITUTE函数可以清除所有的空格,包括前后和中间的;CLEAN函数可以清除字符串中不能打印的字符,比如换行符等,但是对空格无效。

二、检查数据是否正确

可用于检查固定长度的字符串,比如我们的身份证号码,都是18位的,所以我们可以用LEN(身份证号)是否等于18,来判断身份证号码是否正确(见下图)。

必备的文本处理函数公式 你收到一套函数(5)

判断身份证号码是否正确

三、计算字符串中汉字、数字(或字母)的个数

必备的文本处理函数公式 你收到一套函数(6)

计算汉字和数字的字数

计算汉字字数的公式:=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

四、来一个开脑洞的用法:根据月份计算这个月份所在的季度

必备的文本处理函数公式 你收到一套函数(7)

判断月份所在的季度

通过计算2^(1~12)的结果,然后用LEN函数判断计算结果的数字字符数,来计算季度(这是一个取巧的方法,也是一个开脑洞的方法,大家可以看看是否还有其他用法。


字符串截取(字符串的剪刀)

必备的文本处理函数公式 你收到一套函数(8)

字符串截取函数

上图是这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个函数都是文本函数,对数值进行截取后,得到的数值是文本格式的数值。

我们可以怎么样用这个函数呢?接下来我举几个例说明:

一、提取汉字、字母

必备的文本处理函数公式 你收到一套函数(9)

提取汉字和字母

如图所示,首先用LEN和LENB函数的组合,计算出汉字和字母的字数,然后分别用函数提取相应字符数的内容即可。用这种方式提取,要提取的内容必须连在一起,比如文字字母是分开的,不是交叉存在的。

二、从身份号码中提取信息

必备的文本处理函数公式 你收到一套函数(10)

从身份号码中提取信息

必备的文本处理函数公式 你收到一套函数(11)

身份号码信息组成

从上图中,我们可以分解出身份号码各个含义,通过这个信息,我们就可以根据我们的需要,从身份号码中提取我们所需要的信息。比如(身份号码所在的单元格为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号)继续更新。欢迎大家持续关注。

如果你喜欢我分享的内容,请点个赞支持下;

如果你觉得我分享的内容对你有帮助,可以关注我;

如果要看我以前分享过的好玩的内容,大家可以去我的主页查看历史文章。

,