Excel中的最强助攻——FIND函数
作者:壹仟伍佰万来源:部落窝教育发布时间:2019-12-31 17:21:21点击:10788
编按:
哈喽,大家好!今天是部落窝函数课堂的第7课,我们将一起来认识FIND函数!对于FIND函数,相信大家或多或少都会有一点印象,在之前的《3分钟,带你看懂提取手机号码的经典公式套路》和《用GET.WORKBOOK函数实现excel批量生成带超链接目录且自动更新》等教程中,都使用过它,今天我们就一起深入了解一下这个函数!
FIND函数用于返回字符串在另一个字符串中出现的起始位置<区分大小写>。
乍看似乎没有多厉害,其实它和MATCH函数有点类似,都属于辅助函数,就是单拎出来,不怎么厉害,但是很多大佬函数都要靠它,才能发挥出巨大的作用。
结构为:=FIND(要找什么,在哪里找,从字符串中的第几个位置处开始找)。
来几个栗子~
一、基本用法
1.找“窝”在A2单元格文本“部落窝教育”中的位置。
B2单元格公式:
=FIND("窝",A2)
当FIND函数的第一参数为文本时,需在其两端加上英文的双引号。当FIND函数的第三参数被省略时,默认参数值为1,即从字符串中的起始位置开始查找。
同时,第一参数也可引用单元格。
2.找“a”在A3单元格文本“AabBCC”中的位置。
B3单元格公式:
=FIND("a",A3)
FIND函数可以区分大小写,返回字母所在的具体位置。这一点与不区分大写查找字符串位置的SEARCH 和 SEARCHB 函数不同。
3.找“*”在A4单元格文本“部*落*窝*教*育”中的位置。
B4单元格公式:
=FIND("*",A4)
注意:由于FIND函数的第一参数不支持通配符“*”,所以这里只把“*”当成普通字符查找,返回2。(如果支持通配符的话,这里应该返回1,因为*代表任意多个字符串。)
4.当FIND的第一参数为空。
如果FIND函数的第一参数被省略或者为空文本(即""),并且省略第三参数时,FIND函数返回1;若存在第三参数,FIND函数会返回第三参数的值。
报错提示:
好了,看了这么多FIND函数的基础知识,相信大家已经开始摩拳擦掌了,下面我们就结合大佬函数,感受一下FIND函数的魅力!
二、扩展应用
1.通过简称找全称
相信很多小伙伴都遇到过这个问题,如下图所示,我们需要根据D2单元格中的公司简称,找到所对应的公司全称。
在E2单元格输入公式:
=LOOKUP(1,0/(FIND(D2,$A$2:$A$7)),$A$2:$A$7)
使用FIND函数查找D2单元格文本“护甲”在$A$2:$A$7中的每个单元格文本中出现的位置。包含“护甲”的单元格会返回一个数字,不包含“护甲”的单元格则会返回错误值#VALUE!。
再用0除以FIND函数的返回值,得到一组由一个0和多个#VALUE!组成新的查找区域。
由于LOOKUP的查找值1始终大于这组数据中的最大值0,即查找值大于查找区域中的值。根据二分法原理,LOOKUP函数将返回最接近查找值且小于查找值的数所对应的单元格,即A6单元格文本“深圳市护甲生物科技有限公司”。
对LOOKUP函数还不是很熟悉的小伙伴,可以查看往期教程《VLOOKUP&LOOKUP双雄战(一):VLOOKUP的漂亮开局》
2.提取姓名和电话号码
相信下面的数据源,小伙伴们在工作中应该都遇到过。由于数据源的不规范,对后期的数据整理,将造成极大的不便,这里我们需要分别提取出姓名和对应的电话号码。
每组电话号码和姓名的位置并非都是一样的,所以就不能用分列了,那应该怎么解决呢?
在C2单元格输入公式:
=MID(A2,MIN(FIND(ROW($1:$10)-1,A2&"0123456789")),11)
这是一个数组函数,输入公式后需要使用CTRL+SHIFT+ENTER三键结束。
ROW($1:$10)会得到{1;2;3;4;5;6;7;8;9;10},10个数字,而减去1,就会得到{0;1;2;3;4;5;6;7;8;9},刚好是阿拉伯数字的0-9。
A2&"0123456789"就是"尹流138000238320123456789"。FIND(ROW($1:$10)-1,A2&"0123456789")意思就是在"尹流138000238320123456789"中,分别找0-9这十个数字在其中的位置。因为位置序号最小的数字,即为号码字段开始的第一个字符。所以我们用min函数判断数字在字符串中最小的位置,即为数字开始的位置,作为MID函数的第二参数。最后再用MID函数提取出11位数字即为我们需要的电话号码。
说到这里,有的小伙伴可能会好奇,为什么要让A2连上数字"0123456789"?这是因为不可能所有的电话号码都完整的包含0-9这10个数字,当没有在A2单元格中找到对应数字时,FIND函数就会返回#VALUE!错误,整个公式就失去效用。所以为了避免这种情况,我们需要在A2后连上数字"0123456789"。
理解了这一点后,为了让公式更加简洁,我们还可以将公式变为:
=MID(A2,MIN(FIND(ROW($1:$10)-1,A2&5/19)),11)
这次A2后面连接的不是0-9的阿拉伯数字,而是简单的5/19。其实原理还是一样的,5/19=0.2631578947,这个结果刚好包含了0-9十个数字,以后我们简化公式,就可以这样写啦~
通过上一步的运算,我们已经提取出了完整的电话号码,接下来,只需要用SUBSTITUTE函数在数据区域中,将提取出的电话号码替换为空,就行了!
在B2单元格输入公式:
=SUBSTITUTE(A2,C2,"")
这样看来,FIND函数是不是显得格外重要呢?赶紧练习一下吧!
本文配套的练习课件请加入QQ群:747953401下载。
做Excel高手,快速提升工作效率,部落窝教育《一周Excel直通车》视频和《Excel极速贯通班》直播课全心为你!
扫下方二维码关注公众号,可随时随地学习Excel:
相关推荐: