從理論上來說,我們應當避免將數字和文字填寫在同一個單元格中,從而產生混合文本,影響進一步的數據處理和分析。但理想很豐滿,現實很骨感,由於慣例、系統設定或人員素質等諸多原因,混合文本不可避免。於是,混合文本提取數字,成了很多Excel用戶必須面對的問題。
解決這一問題的思路有很多,函數是最主要手段之一。而如何設置函數公式,往往取決於混合文本的特徵;觀察,是解決問題的最快路徑。下面,小花將和各位花瓣一起,邊觀察,邊解決。
PS:可由LEFT, RIGHT或MID直接截取的簡單問題,此處不再贅述。
2.數字統一位於文本最左側、最右側或中間固定起始位置。數字初始位置固定,可以直接用LEFT、 RIGHT或MID提取,無需確認起始位置。唯一需要計算的參數就是文本長度。這裡由於混合文本不含單字節字符(英文字符或半角符號),我們可以使用LEN和LENB來確定數字長度。其中,LEN計算總字符數,LENB計算總字節數,由於1個漢字=1個字符=2個字節,1個單字節字符=1個字符=1個字節,於是我們可以用2*LEN-LENB來計算數字的長度,從而完成提取。PS:2*LEN-LENB確定數字長度的數學邏輯類似雞兔同籠,小花瓣們可以參照理解。左側公式:=LEFT(D2,2*LEN(D2)-LENB(D2))右側公式:=RIGHT(A2,2*LEN(A2)-LENB(A2))中間公式:=MID(G2,3,2*LEN(G2)-LENB(G2))3.數字有特殊字符引導,且可能存在其他單字節字符。該情景雖然可以通過FIND函數鎖定特殊符號的初始位置,但卻因為其他單字節字符的存在,導致情景一中用2*LEN-LENB確認長度的方法無法使用,情景一公式在情景二中宣告失敗。正確的思路是,使用SUBSTITUTE函數
將指定符號替換為連續空格字符串(通過REPT函數構建),從而使數字處在足夠多個的連續空格之間。再通過MID函數截取「空格+數字+空格」這樣的字符串,最後使用TRIM去除多餘空值,實現對數字的提取。PS:數字99代表一個大於所有文本長度的字符數,不是固定值,可以根據實際情況修改。
該情景雖然可以通過LEFT或RIGHT函數從兩側提取數字,但同樣因存在其他單字節字符,無法使用2*LEN-LENB確認數字長度。同時,因為無固定引導符號,使用長空格的設想也就此落空。在這種情況下,我們可以使用數組的方法,依次提取每一個可能的結果值。如案例中的B2單元格,我們依次從「299.19公斤」中,從左提取1到100個字符,生成「2,29,299,299.,299.1,299.19,299.19公,299.19公斤,299.19公斤,299.19公斤.」等100個不同長度的字符串。由於數字總在混合文本兩側,所以,目標數字總是所有純數字的最後一個,例如例子B2中,299.19是最後一個純數字,也是目標數字。所以,我們使用LOOKUP查詢一個極大數字9^9來獲取最後一個純數字。PS:LEFT前的負號用於將文本型數字轉化為數字型數字,而LOOKUP前的數字則用於恢復數值原來的正負性。如果案例中的數字均為正數,我們還可以使用MAX法來解決問題。這是因為,經過LEFT提取後的一串不等長字符中,由於純數字都是正數,所以目標數字將同時滿足最長、最後且最大的特定,這一點小花瓣們可以通過公式求值進行驗證。所以,我們可以通過求最大值來鎖定目標值。特別提醒,該公式為數組公式,輸入後需按【Ctrl+Shift+Enter】才能正確運算。這裡需要注意的是,由於MAX函數不具備LOOKUP那樣剔除錯誤值的能力,所以我們需要使用IFERROR函數來賦予錯誤值(經過雙負號轉換後,文本均顯示錯誤#VALUE!)一個足夠小的數字,從而不會影響MAX鎖定最大正數。這裡我們可以明顯的看到B6單元格,當目標數字為負值時,公式出錯。這就是MAX法相較於LOOKUP的明顯劣勢,因此情景三,還是推薦使用LOOKUP法提取數字。以上,就是混合文本提取函數公式的三種進階情景應用。其中的公式均只能在特定條件下生效,缺點明顯,缺乏普適性,但簡單高效,也較易理解,在觀察到對應特徵時,小花推薦使用對應公式。在下篇文章中,小花將為大家介紹並詳細拆解提取數值萬能公式和提取數字字符串萬能公式,有興趣深入學習的小夥伴請務必吃透今日公式,通過點擊在看按鈕告訴小花你學會了,積累在看數,召喚新篇章。
點「在看」給我一朵小黃花