Excel提取不規則單元格中的資料(從表格裡面提取符合條件的資料)
今天,有夥伴問了小編這樣一個問題,現有如下圖所示的源資料,現需要將姓名和電話號碼分別從源資料所在列提取出來:
看到這樣的資料,單純的提取函式肯定是沒有辦法了,之前分享的提取長度不一的提取函式 FIND的套路也無法使用了,那這樣的問題該怎麼解決呢?且看小編慢慢道來:
我們只需要在C2單元格內輸入公式:=MID(A2,MIN(FIND(ROW($1:$10)-1,A2&"0123456789")),11)
公式輸入完成之後,按Ctrl Shift 回車結束進行嘗試,此公式則變為陣列公式
函式解釋:
1. ROW($2:$14)會得到{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”就是”林明玉156958498650123456789”
2. FIND(ROW($1:$10)-1,A2&"0123456789")的意思就是在”林明玉156958498650123456789”中,分別找0-9這十個數字在其中的位置。
3. 因為位置序號最小的數字(即0-9中0所在的位置序號),即為號碼欄位開始的第一個字元。所以我們用MIN函式判斷出數字在字串中最小的位置,即為數字開始的位置,作為MID函式的第二引數。最後再用MID函式提取出11位數字即為需要的電話號碼
4. 看到這,有的小夥伴或許會發出屬於自己的聲音了,為什麼要讓A2連上數字”0123456789”?。小編告訴你,那是因為不可能所有電話號碼都會包含完整的0-9這10位數字,當沒有在A2單元格內找到對應數字時,FIND函式就是返回錯誤值,整個公式就會失去作用。所以為了避免這種情況,我們需要在A2後面臉上數字”0123456789”
當你可以理解上述原理之外,就可以在原公式的基礎上對公式進行簡化:
=MID(A2,MIN(FIND(ROW($1:$10)-1,A2&5/19)),11)
從上圖可以看出,這次 A2 後面連線的就不在是數字 ”0123456789” 了,而是看上去更簡單的 5/19 。其實原理和上面一樣, 5/19=0.2631578947 ,這個結果剛好包含了數字 0-9 ,和上面的直接連線 0-9 是一樣的效果
通過上一步驟,我們就可以提取出完整的電話號碼,接下來,就只需要用SUBSTITUTE函式在資料區域中,將提取出來的電話號碼替換為空,就可以了