你們好,我是星光。
數組
我們今天繼續聊聊VLOOKUP函數,有人問我爲啥這麼執迷於VLOOKUP函數,聊了一期又一期的。這個說來話就長了,這牽扯到俺的一點小隱私。和不少表親同樣,VLOOKUP是俺掌握的第一個查詢函數,可謂之爲初戀,嘿!那誰,您說,初戀怎麼可以忘記呢?ide
由於沒法忘記,因而反覆回憶,因此結果就成了這個樣子……。函數
說正事,別拍磚,快看題:spa
如上圖所示,是某小區多名業主的信息表。blog
如諸君所見,A列是業主的姓名,B列是一些雜亂的信息。圖片
要求在C列,提取出B列的手機號碼。內存
B列的信息真是奇葩,除了手機號碼,還有職業,有婚姻情況,有愛好,有雜感,有病情——ci
這是誰胡編亂造?也太有水平了,真是讓人不得不佩服……it
——暫停幾分鐘再向下看,請先使用VLOOKUP解題兒吧。class
暫停回來,我們看用到的公式:
=VLOOKUP(0,MID(B2,ROW($1:$99),11)*{0,1},2,0)
在C2單元格輸入上面的數組公式,按住Ctrl和Shift鍵不放,再按Enter鍵,向下複製公式。
簡單說下公式的含義和解題的思路:
咱們知道手機號碼是由11位數字構成的。
MID(B2,ROW($1:$99),11)部分,MID函數依次從B2的第一、二、三、4……直至99個位置,提取長度爲11位的字符,而後分別乘以0和1,即常量數組{0,1}。
以C2單元格中祝洪忠童鞋的信息爲例:
若是MID函數的結果爲文本,好比「愛吃魚刺不愛吃魚真傻」,那麼乘以{0,1}後,結果爲錯誤值{ #VALUE!, #VALUE!};
若是MID函數的結果爲數值,好比18359282475,結果爲{0,18359282475}。
由此創建了一個2列99行的內存數組,做爲VLOOKUP函數的查詢區域。
VLOOKUP用0做爲查找值,採用精確匹配的方式,在以上內存數組的第一列查詢首個0出現的位置,而且返回相對應的內存數組第二列的結果,因而便獲得了手機號碼。
結果以下:
公式多奇妙,試過才知道。有的小夥伴可能對計算過程仍是懵懵懂懂,這也不要緊,能夠先收藏一下,萬一哪天遇到了這樣奇葩的數據,就要拿出變態的方法來對付了。
好了,今天的內容就是這樣吧,祝各位一週好心情!