職場中不免會遇到某些系統或某些人,在產出資料或輸入資料時,把各種資訊都擠在一起,其中一個很常見的就是要把資料中的,中文、英文、數字擷取出來。
其實要擷取這些資料,根據資料狀態的不同有不同的處理方式,今天來分享的是最嚴苛狀態,什麼分隔符號都沒有,那該怎麼樣擷取呢?
先打個預防針,這篇內容運用到陣列觀念,難度比較高,可能會有看沒有懂,如果真的看不懂也沒關係,可以將文章內的函數直接套用到你的資料上,馬上就會棒棒叫了😁
✨新版函數
此解法2019版本以上適用,較低版本往下有通用版本
請把函數中的"內容",改成實際參照即可使用
2019版本以下(含)輸入含數時,使用CTRL+SHIFT+ENTER取代ENTER輸入
📝數字
C3=CONCAT(IFERROR(--MID(內容,ROW($1:$99),1),""))
- --MID(內容,ROW($1:$99),1)
🔑->利用MID把資料每一個字分別拆開,並加上兩個--把內容轉換成數字 - IFERROR(--MID(內容,ROW($1:$99),1),"")
🔑->利用IFERROR把步驟1無法轉換成數字(文字加上--會變成#VALUE)的內容變成空格("") - CONCAT(IFERROR(--MID(內容,ROW($1:$99),1),""))
🔑->📋把步驟2所有的內容合併在一起
📝中文
C3=CONCAT(IF(IFERROR(CODE(MID(內容,ROW($1:$99),1)),0)>90,MID(內容,ROW($1:$99),1),""))
- MID(內容,ROW($1:$99),1)
🔑->利用MID把資料每一個字分別拆開 - CODE(MID(內容,ROW($1:$99),1))
🔑->利用CODE把步驟1的每一個字的轉換成代碼 - IFERROR(CODE(MID(內容,ROW($1:$99),1)),0)
🔑->把步驟2無法轉換成代碼的內容,用IFERROR變成0 - IF(IFERROR(CODE(MID(內容,ROW($1:$99),1)),0)>90,MID(內容,ROW($1:$99),1),"")
🔑->利用IF判斷步驟3的內容有沒有大於90(數字48~57、英文65~90),有大於的話顯示步驟1的結果,沒有大於顯示空格("") - CONCAT(IF(IFERROR(CODE(MID(內容,ROW($1:$99),1)),0)>90,MID(內容,ROW($1:$99),1),""))
🔑->利用CONCAT將步驟4的內容合併
📝英文
C3=CONCAT(IF(--TEXT(IFERROR(CODE(MID(內容,ROW($1:$99),1)),0),"[<65]\0;[>90]\0;1"),MID(內容,ROW($1:$99),1),""))
- MID(內容,ROW($1:$99),1)
🔑->利用MID把資料每一個字分別拆開 - CODE(MID(內容,ROW($1:$99),1))
🔑->利用CODE把步驟1的每一個字的轉換成代碼 - IFERROR(CODE(MID(內容,ROW($1:$99),1)),0)
🔑->把步驟2無法轉換成代碼的內容,用IFERROR變成0 - --TEXT(IFERROR(CODE(MID(內容,ROW($1:$99),1)),0),"[<65]\0;[>90]\0;1")
🔑->利用TEXT判斷,如果步驟3的數值小於65與大於90都強制顯示0(A-Z的代碼分別是65~90),其他的顯示1,再加上兩個--把0跟1轉變成數值(TEXT產出的結果是文字) - IF(--TEXT(IFERROR(CODE(MID(內容,ROW($1:$99),1)),0),"[<65]\0;[>90]\0;1"),MID(內容,ROW($1:$99),1),"")
🔑->利用IF判斷步驟4的結果,如果結果為1就顯示步驟1的結果,如果結果為0顯示空格 - =CONCAT(IF(--TEXT(IFERROR(CODE(MID(內容,ROW($1:$99),1)),0),"[<65]\0;[>90]\0;1"),MID(內容,ROW($1:$99),1),""))
🔑->利用CONCAT將步驟5的內容合併
✨通用版函數
📝數字
C3=MIN(IF(ISNUMBER(--MID(內容,ROW($1:$99),1)),ROW($1:$99)))
🔑->找出第一個數字是在資料中的第幾個字
D3=MAX(IF(ISNUMBER(--MID(內容,ROW($1:$99),1)),ROW($1:$99)))
🔑->找出最後一個數字是在資料中的第幾個字
E3=MID(內容,C3,D3-C3+1)
🔑->用MID擷取資料中第一個數字(C3的結果)到最後一個數字(D3的結果),種樹理論要記得+1
📝中文
C3=MIN(IF((IFERROR(CODE(MID(內容,ROW($1:$99),1)),0)>90)=TRUE,ROW($1:$99)))
🔑->找出第一個數字是在資料中的第幾個字
D3=MAX(IF((IFERROR(CODE(MID(內容,ROW($1:$99),1)),0)>90)=TRUE,ROW($1:$99)))
🔑->找出最後一個數字是在資料中的第幾個字
E3=MID(內容,C3,D3-C3+1)
🔑->用MID擷取資料中第一個數字(C3的結果)到最後一個數字(D3的結果),種樹理論要記得+1
📝英文
C3=MIN(IF(--TEXT(IFERROR(CODE(MID(內容,ROW($1:$99),1)),0),"[>90]2;[<65]2;1")=1,ROW($1:$99)))
🔑->找出第一個數字是在資料中的第幾個字
D3=MAX(IF(--TEXT(IFERROR(CODE(MID(內容,ROW($1:$99),1)),0),"[>90]2;[<65]2;1")=1,ROW($1:$99)))
🔑->找出最後一個數字是在資料中的第幾個字
E3=MID(內容,C3,D3-C3+1)
🔑->用MID擷取資料中第一個數字(C3的結果)到最後一個數字(D3的結果),種樹理論要記得+1
- 👍喜歡的話可以幫忙案個讚、分享來幫助更多人或是右下珍藏起來哦
- 💭留言回復「職場生存讚」讓我知道你把這個小技巧學起來了
- ❤️追蹤我的方格子,學習更多職場小技巧
- ☕請我喝杯咖啡,鼓勵我更有動力分享更多優質內容
- 📈訂閱EXCEL設計新思維,學習更多更深更廣的職場技能
😎可以找到我的地方
- LINE社群
- IG
- FB粉絲團
- YOUTUBE
- TIKTOK
- DCARD