更新於 2024/11/13閱讀時間約 7 分鐘

使用EXCEL函數擷取資料中的中文、英文、數字

職場中不免會遇到某些系統或某些人,在產出資料或輸入資料時,把各種資訊都擠在一起,其中一個很常見的就是要把資料中的,中文、英文、數字擷取出來。


其實要擷取這些資料,根據資料狀態的不同有不同的處理方式,今天來分享的是最嚴苛狀態,什麼分隔符號都沒有,那該怎麼樣擷取呢?

先打個預防針,這篇內容運用到陣列觀念,難度比較高,可能會有看沒有懂,如果真的看不懂也沒關係,可以將文章內的函數直接套用到你的資料上,馬上就會棒棒叫了😁



✨新版函數


此解法2019版本以上適用,較低版本往下有通用版本
請把函數中的"內容",改成實際參照即可使用
2019版本以下(含)輸入含數時,使用CTRL+SHIFT+ENTER取代ENTER輸入

📝數字

C3=CONCAT(IFERROR(--MID(內容,ROW($1:$99),1),""))

  1. --MID(內容,ROW($1:$99),1)
    🔑->利用MID把資料每一個字分別拆開,並加上兩個--把內容轉換成數字
  2. IFERROR(--MID(內容,ROW($1:$99),1),"")
    🔑->利用IFERROR把步驟1無法轉換成數字(文字加上--會變成#VALUE)的內容變成空格("")
  3. 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),""))

  1. MID(內容,ROW($1:$99),1)
    🔑->利用MID把資料每一個字分別拆開
  2. CODE(MID(內容,ROW($1:$99),1))
    🔑->利用CODE把步驟1的每一個字的轉換成代碼
  3. IFERROR(CODE(MID(內容,ROW($1:$99),1)),0)
    🔑->把步驟2無法轉換成代碼的內容,用IFERROR變成0
  4. IF(IFERROR(CODE(MID(內容,ROW($1:$99),1)),0)>90,MID(內容,ROW($1:$99),1),"")
    🔑->利用IF判斷步驟3的內容有沒有大於90(數字48~57、英文65~90),有大於的話顯示步驟1的結果,沒有大於顯示空格("")
  5. 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),""))

  1. MID(內容,ROW($1:$99),1)
    🔑->利用MID把資料每一個字分別拆開
  2. CODE(MID(內容,ROW($1:$99),1))
    🔑->利用CODE把步驟1的每一個字的轉換成代碼
  3. IFERROR(CODE(MID(內容,ROW($1:$99),1)),0)
    🔑->把步驟2無法轉換成代碼的內容,用IFERROR變成0
  4. --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產出的結果是文字)
  5. 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顯示空格
  6. =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設計新思維,學習更多更深更廣的職場技能

😎可以找到我的地方

  1. LINE社群
  2. IG
  3. FB粉絲團
  4. YOUTUBE
  5. TIKTOK
  6. DCARD



分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.