excel數據提取:查找批量訂單中的手機號碼

2019-11-29     部落窩教育h

編按:哈嘍,大家好!如何在excel中快速的提取手機號碼,已經是一個老生常談的話題了。在CTRL+E問世後,關於提取數據的問題都變得簡單了很多,不得不承認,它的確是一個相當優秀的功能。但是它並不是萬能的,仍然有一些提取數據的問題需要公式才能解決。接下來就由老菜鳥為大家講解在excel中提取手機號碼的常見公式套路,帶領大家深度解析公式,趕緊來看看吧~


雙11之後,大家都在忙著折騰自己的訂單,在收穫大把訂單的同時,客服部妹子的工作量也大了很多,尤其是在一些比較麻煩的數據中提取客戶手機號的工作,就更是讓人頭疼,例如下面這個表格:

(訂單信息內容系模擬數據)

遇到這樣的數據,一邊吐槽系統的不合理,一邊還得想辦法把手機號提取出來,這可是上千行數據啊……

聽說好像有個叫Ctrl+E的快捷鍵可以提取電話號碼,趕緊試試:

看來遇上這麼複雜的數據,號稱智能填充的Ctrl+E大法也失靈了,怎麼辦?

VBA……

完全不會呀,那麼還有救麼?

其實還真有一個公式可以解決這個問題,公式為:

=LOOKUP(9E+307,--MID(LEFT(A2,FIND("收貨人",A2)),ROW($1:$99),11))

結果如圖所示:

公式看起來不是很長,但卻使用了五個函數進行組合,下面就來破解這個公式的原理。

要解決問題首先要找到規律,手機號的一個特點就是長度為11位,並且全部都是數字,因此可以利用提取數字的套路來解決問題。

與通常提取數字的問題不同之處在於,在這些訂單信息中,手機號碼出現的位置不固定,並且會有其他的數字干擾,唯一可以利用的就是11位的數字這一點。

這就需要用到MID函數,格式為:MID(A2,1,11),意思是從A2單元格中的第一個字開始,截取11個字,公式結果為:

這一點很好理解,由於不確定手機號的開始位置,用一個常用的套路,就是將MID函數的第二參數使用ROW來實現多次提取的效果,為了便於理解,先用ROW(1:10)作說明。

來看看公式=MID(A2,ROW(1:10),11)的效果:

這樣看著沒什麼區別,但是通過F9功能查看後就會發現,得到了10個截取後的內容:

這個公式相當於MID(A2,1,11)、MID(A2,2,11)……MID(A2,10,11)的效果。

為了能夠提取出手機號,我們必須將MID的第二參數繼續放大,習慣上都使用ROW(1:99)這種寫法,再來看看效果:

可以看到手機號確實在這一大串字符中。

到這一步,手機號成功的被截取出來了,接下來就是如何從這一組字符串中得到需要的手機號。

這時候就需要LOOKUP上場了,原本公式應該寫成:=LOOKUP(9E307,--MID(A2,ROW($1:$99),11))。

9E307表示一個非常大的數字,在MID前加「--」表示將截取的內容轉為數字,這個公式的原理在之前的教程中也多次做過講解。

可是公式得到的結果卻讓人大跌眼鏡:

這是因為LOOKUP函數得到的是最後位置出現的數字,在案例中的數據中,除了手機號,後面還出現了訂單時間,因此要想得到最終結果,還需要最後一個步驟,縮小LOOKUP處理的範圍。

再次觀察數據源,可以發現一個規律,手機號都是在「收貨人」之前的位置,因此只需要把收貨人前面的字符串提取出來,再用剛才的公式就能得到結果。

這個很容易實現,利用LEFT+FIND組合就能完成,公式為:=LEFT(A2,FIND("收貨人",A2)),結果如圖所示:

關於LEFT+FIND組合比較好理解,如果有問題可以留言,我們會將類似的幾個常用組合整理一篇教程。

現在將縮小範圍後的結果代入之前的公式,就有了最終的公式:=LOOKUP(9E+307,--MID(LEFT(A2,FIND("收貨人",A2)),ROW($1:$99),11))

結果出現錯誤值說明訂單信息中沒有手機號碼。

總結:關於這個公式的原理為大家進行了分析,從今天這個案例中,可以了解到如何拆分一個看上去很複雜的問題,方法就是一點一點找規律,規律性越強,解決思路就越多。

其實這個問題還有另外一個思路,就是用公式:

=MAX(IFERROR(--MID(LEFT(A2,FIND("收",A2)),ROW($1:$99),11),0))來完成。

有興趣的夥伴可以試試自己分析一下公式的原理,當然也可以留言,看大家的需要,就這個公式再講一次。


****部落窩教育-excel文本中提取手機號碼****

原創:老菜鳥/部落窩教育(未經同意,請勿轉載)

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

微信公眾號:exceljiaocheng

文章來源: https://twgreatdaily.com/zh-hk/9yfZvW4BMH2_cNUgoGjB.html