2021年最有钱途的函数!一个“?”就让不加班不熬夜还有时间搞副业
★
编按
★
大家好,这里是小E。我们处理数据时总免不了要查找并且提取一些重要的数据,如何在上千甚至上万行的数据中快速准确的进行查找和提取?小可老师给我们介绍了两个利器:SEARCHB函数和Mid函数,对于文本的查找提取它们是专业的!理论+案例,小可老师在线手把手教学。
哈喽,大家好吖~今天小可给大家带来的干货是SEARCHB(”?”,文本)小妙招与MID函数的实用案例!我们一起去学习吧~~~
本期目录先奉上
一、SEARCH和SEARCHB
1.1统计以“182”开头“6”结尾的号码个数
1.2提取数字
1.3提取数字(文字与数字混合排列)
二、MID
2.1提取身份证号码中的出生年月日
2.2分列显示年、月、日
2.3将一串数字拆分成单个数字并求和
2.4用MID函数判断等级
↑扫码下载教程配套练习文件↑
一、SEARCH和SEARCHB
【知识乐园】
SEARCH和SEARCHB函数查找不区分大小写,而且可以使用通配符查找。
通配符:"?"匹配任意单个字符;"*"匹配任意一串字符。
若要查找实际的问号或星号,请在该字符前键入波形符(~)。
1.1统计以“182”开头“6”结束的号码个数
【要求】A列是号码,要求在B列统计以“182”开头、“6”结尾的号码个数。
【方法】在B4单元格输入公式:=COUNT(SEARCH("182???????6",A3:A10)),按<Ctrl+Shift+Enter>三键结束。
【解读】公式为嵌套函数,内层是SEARCH函数,外层是COUNT函数。
①SEARCH函数在号码中查找出以“182”开头、“6”结尾,文本长度为11的号码,查找结果以内存数组的形式保存在公式中,结果如下:{1;#VALUE!;#VALUE!;#VALUE!;#VALUE!;1;#VALUE!;#VALUE!};
②外层用COUNT函数对数字数据进行统计(COUNT函数对于空单元格、逻辑值或者文本数据都不计数)。
【小提醒】若在B3单元格输入公式:=COUNT(SEARCH("182*6",A3:A10)),按<Ctrl+Shift+Enter>三键结束,结果却是3个。这是为啥呢??!
因为,虽然"182*6"也表示“182”开头、以“6”结尾,但不代表文本长度为11,所以图中的A6单元格的“18275698657”也被统计入结果了。
1.2提取数字
【要求】提取出“信息列”右侧的连续数字。
【方法】在G3单元格输入公式:=MIDB(F3,SEARCHB("?",F3),99),向下复制填充公式。
【解读】SEARCHB和MID函数的嵌套使用。
①SEARCHB("?",文本)可以查找到文本中首个单字节字符的位置;
②再利用MID函数从首个单字节字符的位置开始,提取出后面的99个字符(即所有字符)。
【小提示】输入公式:=RIGHT(F3,2*LEN(F3)-LENB(F3))也可以得出一样的结果。
1.3提取数字(文字与数字混合排列)
【要求】如图,A列是文字与连续数字混合排列的句子,现需要单独提取出句子中的数字到B列。
【方法】在B15单元格输入公式:=MIDB(A15,SEARCHB("?",A15),2*LEN(A15)-LENB(A15)),向下复制填充公式。
【解读】三个函数组合的嵌套。
①SEARCHB("?",A15)部分:查找出首个单字节字符的位置;
②2*LEN(A15)-LENB(A15)部分:得出单字节字符的长度(关于LEN函数更详细的解释可以康康第一期的2.1、2.2哦~);
③最后利用MIDB函数,从首个单字节字符的位置起,提取出单字节字符长度的文本串字符。
二、Mind
2.1提取身份证号码中的出生年月日
【要求】B列为身份证号码信息,要求提取出每个人的出生年月日并以“1988-07-18”的格式保存在C列。
【方法】在C3单元格输入公式:=TEXT(MID(B3,7,8),"0-00-00"),向下复制填充公式。
【解读】MID和TEXT函数的嵌套使用。
①使用MID函数从身份证的第7位数起提取8个字符串;
②再借助TEXT函数将格式转换为"0-00-00"。
2.2分列显示年、月、日
【要求】将E列的年月日按年、月、日的顺序分别提取放置到F、G、H列。
【方法】同时选中F3:H3单元格区域,输入数组公式:=MID(E3,{1,5,7},{4,2,2}),按<Ctrl+Shift+Enter>三键结束公式编辑,再将公式向下复制到F11:H11单元格区域。
【解读】MID函数的第二参数和第三参数都运用了常量数组形式。为提取年月日,应该根据数组组成特点,分别从E列数组中的第1、5、7位分别提取4、2、2个字符串,结果存放在F3:H3单元格中。
悄悄说一句:文本函数的参数用对了数组将会非常方便~~~
2.3将一串数字拆分成单个数字并求和
【要求】将下列图表中的“数字串”的每个数拆分后求和,例如将“89652”拆分后求和等于“8+9+6+5+2=30”。
【方法】在B16单元格输入公式:
=SUM(--(0&MID(A16,ROW($1:$9),1))),
按<Ctrl+Shift+Enter>三键结束公式编辑,向下复制填充公式。
【解读】以“89652”为例作分析。
①MID(A16,ROW($1:$9),1)部分:利用MID函数把文本的前九个字符串分别提取出来,以内存数组的形式保存在公式中,结果如下:{"8";"9";"6";"5";"2";"";"";"";""};
②0&MID(A16,ROW($1:$9),1)部分:虽然空文本""在有时候等价于数值0,但是并不等于数值0,为了避免下一步减负运算因为空文本而出现“#VALVE!”,所以前面用0连接上提取出的9个字符,结果如下:{"08";"09";"06";"05";"02";"0";"0";"0";"0"};
③--(0&MID(A16,ROW($1:$9),1))部分:将文本型数字转换为数值型数字,结果如下:{8;9;6;5;2;0;0;0;0};
④最后用SUM函数对内存数组数值进行求和。
2.4用MID函数判断等级
【要求】根据图中的评级规则对A列同学的成绩进行评级,评级结果依次展示在C列。
【方法】在C25单元格输入公式:=MID($A$41,B25/10+1,1),向下复制填充公式。
【解读】MID函数和数学计算结合。
①辅助列中,上行的分数与下行的评级一一对应。例如0对差、10对差、20对差、30对差……90对优、100对优;
②第二参数,因MID函数会自动对小数参数作去尾处理,所以“/10”后不必再对商取整(即不必使用INT等取整函数);
③B25/10+1作为在“差差差差差差中中良优优”(有11个汉字,不是10个)字符串中开始提取的位置。以C25单元格的88分为例,第二参数88/10去掉小数点后的数值结果为8,则在“差差差差差差中中良优优”的第8+1=9个字符起提取1个字符串,即“良”。
今日分享就到这啦,下次见!