二维码 购物车
部落窝在线教育欢迎您!

史上最全的文本函数典型用法盘点(第三期):如何精确的提取字符

 

作者:小可来源:部落窝教育发布时间:2021-07-14 11:03:05点击:2173

分享到:
0
收藏    收藏人气:0人
版权说明: 原创作品,禁止转载。

编按:

继前面两期的文本函数典型案例,我们已经和大家介绍了至少6个文本函数。今天,小E和大家继续系统的学习其他文本函数的用法:FIND函数的万能组合用法和百变神奇的REPT函数,用它们轻松提取文本数据中的字符!

 

 

“春眠不觉晓,我在做报表;夕阳无限好,还在做报表;举头望明月,通宵达旦做报表。害,洛阳亲友如相问,就说我在做报表……”

 

你还在为文本函数加班吗?你还在为提取字符烦恼吗?你还在为加班秃头吗……快来跟小编学习更多实用的文本函吧!!!



本期目录呈上~~~

一、FIND

1.1将第二个"/"后的内容提取出来

1.2统计每个人的得票数

解法一:SUM+FIND+ISNUMBER组合

解法二:COUNT+FIND组合

1.3提取出号码(数字前面有字母)

分离出主语(小试牛刀)

二、REPT

2.1提取字符串

2.2评星①

2.3评星②

 



一、FIND

 

1.1将第二个"/"后的内容提取出来

要求:将“部门名称”列(A列)第二个"/"后的内容提取到B列。

 

 

方法:在B3单元格输入公式:=MID(A3,FIND("/",A3,FIND("/",A3)+1)+1,9),向下复制填充公式。

解读:FIND函数的嵌套。

最里层的FIND函数找到第一个“/”在文本的位置,然后+1,即得到第一个“/”后第一个文本字符的位置;

② FIND("/",A3)+1)作为外层FIND函数的第三参数,这时的FIND("/",A3,FIND("/",A3)+1)就是在找第二个”/”在文本中的位置,再+1,即得出第二个“/”后的第一个文本字符的位置。

把②得出的位置作为MID函数开始提取的位置,提取长度为9的文本字符串(大于最后部门所有字符长度即可)。

 

1.2统计每个人的得票数

要求:D列是投票人,E列是投票人所投的对象。现在要统计出被选举人的得票数。

解法一:SUM+FIND+ISNUMBER组合

 

 

方法:在H2单元格输入公式:=SUM(--ISNUMBER(FIND(G2,$E$3:$E$10))),按三键结束,向下复制填充公式。
解读:以H2单元格(小顾)为例。

① FIND(G2,$E$3:$E$10)部分,用FIND查找小顾在$E$3:$E$10单元格中的位置,若能找到,会返回“小顾”在单元格中的位置数字,若找不到则返回“#VALUE!”,例如,“小顾”的结果返回内存数组{1;#VALUE!;1;#VALUE!;#VALUE!;1;1;#VALUE!}
然后用ISNUMBER将数值转为TRUE,错误值转为FALSE。用--减负运算将TURE转为1FALSE转为0

最后用SUM对数值求和,就得到了“小顾”的票数。

 

解法二:COUNT+FIND组合

 

 

方法:在I2单元格输入公式:=COUNT(FIND(G2,$E$3:$E$10))三键结束,向下复制填充公式。
解读:函数COUNT在计数时,如果参数是一个数组或引用,那么只统计数组或引用中的数字,数组中或引用的空单元格、逻辑值、文字或错误值都将忽略。因此,COUNT函数将统计FIND函数返回内存数组中的数值个数,个数和就是每个人的得票数。

 

1.3提取出号码(数字前面有字母)

要求:提取出“信息”列右侧的数字串。该案例的特殊性在于,数字的前面有字母,这说明不能用SEARCHB”?”,文本)来做题。

 

 

方法:在B15单元格输入公式:=MID(A15,MIN(FIND(ROW($1:$10)-1,A15&5/19)),99)三键结束,向下复制填充公式。
解读:

① 5/19=0.263157894736842,其中包含了1-9的所有数字。用A15连接5/19,其作用是避免FIND函数在查找时找不到0-9的数字时返回错误值“#VALUE!”。
② ROW($1:$10)-1
部分,返回内存数组{0;1;2;3;4;5;6;7;8;9},分别作为FIND函数的查找值,一次返回数字0-9A15&5/19中出现的起始位置。
③ 以B15单元格公式为例,FIND(ROW($1:$10)-1,A15&5/19)的计算结果为{9;10;8;11;13;7;17;21;22;23},然后用MIN函数得出数组中最小的值,这里结果为7,也就是在A15&5/19中首个数字在文本字符串中(“信息”列)的位置。
④ 最后用MID函数,从A15单元格中自第7个字符起开始提取字符,提取字符长度为99的字符串,即后面所有字符串。
小提示:“5/19”可以用“1/17”或者“123456789”代替。

 

小练习:分离出主语(小试牛刀)

要求:分离出句子中的主语。

 

 

参考1.3的案例哦~~~你一定能行!!!



二、REPT

 

2.1提取字符串

要求:A列是部门名称,现在要将A列最后一个部门提取出来到B列。

 

 

方法:在B3单元格输入公式:=TRIM(RIGHT(SUBSTITUTE(A3,"/",REPT(" ",99)),10)),再向下复制填充公式。

解读:

① SUBSTITUTE(A3,"/",REPT(" ",99))部分:将文本中所有“/”换为99“”(空格)

再用RIGHT函数从替换后的文本的右边开始,提取字符长度为99的文本串,提取出的文本既包含最后一个部门的字符也包含很多不需要的空格;

③ 最后用TRIM函数清除RIGHT函数提取出的多余的空格。

 

2.2评星①

 

要求:B列是同学的成绩,要求根据图下右边的评星规则(只有★),在C列对每个的成绩进行评分。

 

 

方法:在C13单元格输入公式:=IF(B13<60,"",REPT("",B13/10-5)),再向下填充复制公式。

解读:先搞清楚分数与★个数的关系。通过一番分析后发现,当分数<60时,就没有★,而当分数>=60时,★个数=分数/10-5(截断取整)。所以,利用IF函数,将60分作为临界点,大于60分数时,就用REPT函数重复“分数/10-5”个★~~~

 

注意:REPT函数会自动对小数参数作去尾处理,所以分数/10-5”后不必再对商取整(即不必使用INT等取整函数)

 

2.3评星②

 

要求:B列是同学的成绩,要求根据图下右边的评星规则(★+☆),在C列对每个的成绩进行评分。

 

 

方法:在C22单元格输入公式:=IF(B22<60,"",REPT("",B22/10-5))&REPT("",10-TRUNC(B22/10)),再向下填充复制公式。

解读:同2.2一样,★个数=B13/10-5截断取整);☆个数=10-TRUNC(B22/10)TRUNC函数截断取整,即直接去除小数部分)。所以用“&”连接★的个数和☆的个数就ok~


为什么★的个数可以不用TRUNC函数,而☆的个数需要用TRUNC函数呢,感兴趣的童鞋可以动手动脑试试哦!

 


 

文本函数今日分享就到这啦~你若还有什么问题或者想分享的,欢迎扫描下方二维码,到公众中留言哦~~~

 

本文配套的练习课件请加入QQ群:902294808下载。

Excel高手,快速提升工作效率,部落窝教育《一周Excel直通车》视频和《Excel极速贯通班直播课全心为你!

扫下方二维码关注公众号,可随时随地学习Excel

IMG_256

相关推荐:

史上最全的文本函数典型用法盘点(第一期)

史上最全的文本函数典型用法盘点(第二期)

Excel数字提取技巧:从无规律文本中提取手机号的5种方法

Excel实用案例:SUBSTITUTE嵌套函数对文本单元格的判断和计算

版权申明:

本文作者小可;同时部落窝教育享有专有使用权。若需转载请联系部落窝教育。