excel函數組合技巧:最強助攻FIND函數的輔助應用

2020-01-07     部落窩教育h

編按:哈嘍,大家好!今天是部落窩函數課堂的第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函數是不是顯得格外重要呢?趕緊練習一下吧!


****部落窩教育-FIND函數的輔助功能****

原創:壹仟伍佰萬/部落窩教育(未經同意,請勿轉載)

更多教程:部落窩教育(www.itblw.com)

微信公眾號:exceljiaocheng

文章來源: https://twgreatdaily.com/34HAiG8BMH2_cNUgojjI.html