日常工作中,對數(shù)據(jù)的預(yù)處理往往花費很多的時候,本篇介紹從文本中提取出手機(jī)號的各種方法,建議收藏備用。
舉例:A列是雜亂的文本數(shù)據(jù),需要提取出手機(jī)號碼,得到B列的結(jié)果:
在B2單元格中輸入公式:
=MID(A2,FIND('1',A2),11)
或者將FIND函數(shù)改成SEARCH,也是一樣的效果:
=MID(A2,SEARCH('1',A2),11)
計算思路:
手機(jī)號碼都是從1開始的,所以首先用FIND('1',A2),找到1所在的位置,然后用MID函數(shù)取11位得到手機(jī)號。
從這個思路也知道,這個是有BUG的,當(dāng)前面的文本也出現(xiàn)了1的時候,該公式就不能使用了,如下所示:
在B2中輸入的公式是:
=MIN(IFERROR(--MID(A2&'自學(xué)成才',ROW($1:$100),11),'Excel'))
然后按CTRL SHIFT ENTER三鍵 計算
或者輸入的公式是:
=MAX(IFERROR(--MID(A2,ROW($1:$100),11),0))
按三鍵計算
計算思路
?用到數(shù)組從左至右一直提取11位字符,
?然后用--號來進(jìn)行兩次負(fù)數(shù)計算,是正常的數(shù)字的話,就會得到數(shù)字,如果有文本的話,就會出錯,
?然后用IFERROR來屏蔽錯誤值
?然后取最大值,或最小值來得到結(jié)果
下圖是MAX函數(shù)一步步拆分的過程
所以知道為什么用MIN求值的時候,要在原文本前面&一個任意的字符,如自學(xué)成才了吧。
在B2中輸入公式:
=-LOOKUP(,-MID(A2&'a',ROW($1:$100),11))
或者使用VLOOKUP函數(shù)公式:
=VLOOKUP(,MID(A2,ROW($1:$100),11)*{0,1},2,)
輸入完公式按CTLR SHIFT enter三鍵計算
計算思路:
?每隔11位拆分文本里面的字符
?lookup函數(shù)構(gòu)建了一列數(shù)據(jù),vlookup函數(shù)構(gòu)建了2列匹配的數(shù)據(jù)
?模糊查找匹配得到結(jié)果
大家可以根據(jù)思路同樣的畫出計算過程。
上述的函數(shù)公式方法都只能提取出一個手機(jī)號碼,如果一個列中有兩個手機(jī)號碼的話,它是沒有辦法全部查找出來的,有的方法可能找到的是前面一個,有的方法是找到的后面一個
如果需要全部找出來的話,就可以使用VBA的方法來完成了,我們直接說制作過程:
?按ALT F11,調(diào)出VBA編輯器,在空白處右鍵插入一個模塊
然后在模塊里面輸入代碼:
這樣就創(chuàng)建了一個自定義的函數(shù)sz()用來提取手機(jī)號,我們直接在公式里面輸入
=sz(A2)
不管是幾個手機(jī)號碼,都可以快速的將它提取出來。
你學(xué)會了么,自己動手試試吧~