点击上面图标,免费参加今晚8点Excel直播学习
每天一点小技能
编按:继前面两期的文本函数典型案例,我们已经和大家介绍了至少6个文本函数。今天,小E和大家继续系统的学习其他文本函数的用法:FIND函数的万能组合用法和百变神奇的REPT函数,用它们轻松提取文本数据中的字符……
“春眠不觉晓,我在做报表;夕阳无限好,还在做报表;举头望明月,通宵达旦做报表。害,洛阳亲友如相问,就说我在做报表……”你还在为文本函数加班吗?你还在为提取字符烦恼吗?你还在为加班秃头吗……快来跟小编学习更多实用的文本函数吧!!!要求:将“部门名称”列(A列)第二个"/"后的内容提取到B列。
扫码微信群下载练习课件
方法:在B3单元格输入公式:=MID(A3,FIND("/",A3,FIND("/",A3)+1)+1,9),向下复制填充公式。① 最里层的FIND函数找到第一个“/”在文本的位置,然后+1,即得到第一个“/”后第一个文本字符的位置;② FIND("/",A3)+1)作为外层FIND函数的第三参数,这时的FIND("/",A3,FIND("/",A3)+1)就是在找第二个”/”在文本中的位置,再+1,即得出第二个“/”后的第一个文本字符的位置。③ 把②得出的位置作为MID函数开始提取的位置,提取长度为9的文本字符串(大于最后部门所有字符长度即可)。要求:D列是投票人,E列是投票人所投的对象。现在要统计出被选举人的得票数。方法:在H2单元格输入公式:=SUM(--ISNUMBER(FIND(G2,$E$3:$E$10))),按<Ctrl+Shif+Enter>三键结束,向下复制填充公式。解读:以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转为1,FALSE转为0。③ 最后用SUM对数值求和,就得到了“小顾”的票数。方法:在I2单元格输入公式:=COUNT(FIND(G2,$E$3:$E$10)),按<Ctrl+Shif+Enter>三键结束,向下复制填充公式。解读:函数COUNT在计数时,如果参数是一个数组或引用,那么只统计数组或引用中的数字,数组中或引用的空单元格、逻辑值、文字或错误值都将忽略。因此,COUNT函数将统计FIND函数返回内存数组中的数值个数,个数和就是每个人的得票数。要求:提取出“信息”列右侧的数字串。该案例的特殊性在于,数字的前面有字母,这说明不能用SEARCHB(”?”,文本)来做题。方法:在B15单元格输入公式:=MID(A15,MIN(FIND(ROW($1:$10)-1,A15&5/19)),99),按<Ctrl+Shif+Enter>三键结束,向下复制填充公式。解读:① 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-9在A15&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”代替。要求:A列是部门名称,现在要将A列最后一个部门提取出来到B列。方法:在B3单元格输入公式:=TRIM(RIGHT(SUBSTITUTE(A3,"/",REPT("",99)),10)),再向下复制填充公式。① SUBSTITUTE(A3,"/",REPT(" ",99))部分:将文本中所有“/”换为99个“”(空格);② 再用RIGHT函数从替换后的文本的右边开始,提取字符长度为99的文本串,提取出的文本既包含最后一个部门的字符也包含很多不需要的空格;③ 最后用TRIM函数清除RIGHT函数提取出的多余的空格。要求:B列是同学的成绩,要求根据图下右边的评星规则(只有★),在C列对每个的成绩进行评分。方法:在C13单元格输入公式:=IF(B13<60,"",REPT("★",B13/10-5)),再向下填充复制公式。解读:先搞清楚分数与★个数的关系。通过一番分析后发现,当分数<60时,就没有★,而当分数>=60时,★个数=分数/10-5(截断取整)。所以,利用IF函数,将60分作为临界点,大于60分数时,就用REPT函数重复“分数/10-5”个★~~~注意:REPT函数会自动对小数参数作去尾处理,所以“分数/10-5”后不必再对商取整(即不必使用INT等取整函数)要求: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函数呢,感兴趣的童鞋可以动手动脑试试哦!文本函数今日分享就到这啦~你若还有什么问题或者想分享的,欢迎留言哦~~~
想要全面系统学习Excel,不妨关注部落窝教育《一周Excel直通车》视频课或者《Excel极速贯通班》。
主讲老师:滴答