最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

精心整理Excel從單元格文本中提取文字、數(shù)字、字母的4種案例

2022-06-09 11:12 作者:以溪同學  | 我要投稿



「如何從Excel單元格中的文本值提取指定的數(shù)據(jù)出來?」

就比如做電商的同學可能經(jīng)常遇到收貨地址需要拆分成省市區(qū)的問題。

但是用戶提交的地址信息不一定規(guī)范,就導致拆分的時候需要人工一個一個識別。

本期內(nèi)容,以溪帶你看看工作中常見的文本拆分與提取的案例問題。

如果有你現(xiàn)在正在遇到的問題,可以直接套用。

關(guān)注以溪同學,收藏加星,get更多Excel知識技能!

「案例列表」

  1. mid\left\right文本提取函數(shù)使用

  2. 地址拆分省市區(qū)

  3. 提取指定字符-分隔的指定個數(shù)字符

  4. 只提取數(shù)字或者字母

1. mid\left\right文本提取函數(shù)使用

Excel中有專門的文本提取函數(shù),其中mid、left、right分別用于從中間、左側(cè)、右側(cè)提取文本中的指定長度內(nèi)容。

依次舉例說明:

函數(shù)參數(shù):

MID(text,start_num,num_chars)

第一個參數(shù)是待提取的文本字符串,第二個是開始提取的字符位置數(shù),第三個參數(shù)是從文本中提取的字符數(shù)

=MID(A2,3,2)



函數(shù)參數(shù):

LEFT(text, [num_chars])

第一個參數(shù)是待提取的文本字符串,第二個參數(shù)不填默認為1,代表提取的字符數(shù)。

=LEFT(A2,2)



函數(shù)參數(shù):

RIGHT(text, [num_chars])

第一個參數(shù)是待提取的文本字符串,第二個參數(shù)不填默認為1,代表提取的字符數(shù)。

=RIGHT(A2,2)



可以注意到,這三個參數(shù),都有幾個共同點。

  1. 要提供待提取的文本字符串。

  2. 要告訴函數(shù)從哪提取。

  3. 提取多少個字符。

理解了上面這個問題,那解決實際案例的所有「關(guān)鍵點」就在2、3兩點上了。

2. 地址拆分

如果地址數(shù)據(jù)的省市區(qū)之間有分隔符的,可以直接使用「數(shù)據(jù)-分列-按指定字符分列」即可完成拆分。

如果是像下圖這種沒有分隔符的地址,有兩種方法可以實現(xiàn)拆分。



通過上面的3個函數(shù),我們知道,想要拆分提取字符,必須要知道從哪提取,提取多少。

所以,第一步,我們需要知道在地址中,省這個字符的具體位置,以及省字符前面有多少字,就能直接提取出省這個字符串了。

在這里引入兩個函數(shù),一個是find,一個是len。

find函數(shù)

函數(shù)作用就是用于查找指定字符在字符串中的字符數(shù)位置,函數(shù)最終返回值是一個數(shù)字。 FIND(find_text,within_text,start_num)

find(要找哪個字符,在哪個字符串里找,從第幾個字符位置開始找)

len函數(shù)參數(shù)

len函數(shù)用于返回指定字符串一個有多少個字符數(shù)

LEN(text)

len(文本字符串)

除了查找和統(tǒng)計字符數(shù),Excel也提供findb與lenb函數(shù),函數(shù)核心功能與find和len都一樣。

唯一的區(qū)別就是,帶b的函數(shù),代表查找或計數(shù)的是字節(jié)數(shù),反之是字符數(shù)。

其中日語、中文(簡體)、中文(繁體)以及朝鮮語一個字符算2個字節(jié)數(shù)。參考下圖理解,find和findb用于查找同學位于以溪123同學中的位置。



回到拆分地址上,那第一個,就是查找省這個字位于地址中的位置。

=FIND("省",A2)



如此得到省的位置后,我們便可以通過left函數(shù),直接提取出省名稱。

=LEFT(A2,FIND("省",A2))



前面的是不是都很成功,但是最后一個自治區(qū),就識別不出來了。

主要是我國的行政區(qū)劃分,不是所有的省級行政區(qū)都是省結(jié)尾的,還包括有市、區(qū)。

所以這里,我們需要通過數(shù)組公式,來一次性提取出省、市、區(qū)這三個字在地址中的位置。

數(shù)組公式如下:

=FIND({"省","市","區(qū)"},A2)



「注意數(shù)組公式,需要按照數(shù)組公式輸入方法使用」

數(shù)組公式使用方法

  1. 需提前選中承接數(shù)組公式結(jié)果的單元格區(qū)域

  2. 再輸入數(shù)組公式

  3. 最后需要按數(shù)組確認鍵 CTRL+SHIFT+回車 確認公式

目前只是把地址中省市區(qū)出現(xiàn)的位置找到了,還需要對數(shù)字進行對比,最小的那個,代表最先出現(xiàn),也就是省級行政單位的位置。

所以我們使用min函數(shù)對其嵌套,得到最小位置數(shù),再使用left函數(shù)提取,就能正確獲得一級行政區(qū)名稱。

但是由于min函數(shù)不能統(tǒng)計包含#VALUE!的錯誤值數(shù)據(jù),所以我們在find公式中的地址參數(shù)那里,手動拼接一個省市區(qū)字符串,使其不管怎么樣,都不會返回錯誤值。確保min函數(shù)正確運行。

數(shù)組公式如下:

=LEFT(A2,MIN(FIND({"省","市","區(qū)"},A2&"省市區(qū)")))

至此第一個省級名稱,提取完畢。



如果將原地址中的省級名稱去除,那么剩下的地址中,就只包含地級和縣級行政區(qū)地址信息。

使用substitute函數(shù),就可以替換字符串中的指定字符為空,也就是替換為""。

函數(shù)公式如下:

=SUBSTITUTE(A2,B2,"")



我們借用了剛剛提取的省級名稱,生成了新的地址,基于這個地址我們采用同樣的方法提取地級行政區(qū)名稱。

只需要把省級行政區(qū)的公式中的地址A2全部替換成上面的subtitute函數(shù)公式,再把對應(yīng)的地級行政區(qū)的后綴,市、區(qū)、州、盟,全部修改,就可以了。

最終的數(shù)組公式如下:

=LEFT(SUBSTITUTE(A2,B2,"")&"市區(qū)州盟",MIN(FIND({"市","區(qū)","州","盟"},SUBSTITUTE(A2,B2,"")&"市區(qū)州盟")))



最后一個直接使用substitute函數(shù)替換即可。

數(shù)組公式如下:

=SUBSTITUTE(A2,B2&C2,"")



如果你不想用上面這么長的公式,又或者地址信息沒有這么完整,存在不清晰的問題?。?/p>

「那就使用方方格子插件來完成地址提取,速度飛快?!?/strong>

操作路徑:方方格子-高級文本處理更多-提取地址-選擇地址范圍-確定-點擊結(jié)果存放單元格-確認



最終結(jié)果如下圖,幾秒鐘就搞定了。



即使地址不是特別規(guī)范,也能大概匹配拆分出來。

當然,最終還需要仔細檢查一下是否存在拆分出錯的情況。

3. 提取指定字符-分隔的指定個數(shù)字符

如下圖數(shù)據(jù)所示:



文本中用-分隔各個信息,其中第二個是產(chǎn)品名稱,最后一個是核銷狀態(tài)。

如果是比較規(guī)范的數(shù)據(jù),就可以先手動提取一行,如下圖:



然后按快捷鍵CTRL+E,智能拆分提取,就能提取出對應(yīng)的數(shù)據(jù)。



但是,這個案例,CTRL+E沒法很好的拆分出來,比如產(chǎn)品名稱,此時可以選擇使用函數(shù)公式,將產(chǎn)品名稱和核銷狀態(tài)提取出來。

提取產(chǎn)品名稱:

=MID(A2,FIND("-",A2)+1,FIND("-",A2,????FIND("-",A2)+1)-FIND("-",A2)-1????)



提取最后一個核銷狀態(tài):

=TRIM(RIGHT(SUBSTITUTE(A2,"-",????REPT("?",LEN(A2))????),LEN(A2)))



「提取產(chǎn)品名稱公式原理解析:」

  1. 使用find函數(shù)找到第一個指定字符-的位置數(shù),此時find函數(shù)默認從字符串第一個字開始找。

  2. 然后接著繼續(xù)用find函數(shù)找指定字符-,但是此時,我們find函數(shù)的第三個參數(shù)就寫第一次find函數(shù)的結(jié)果值+1,也就是從第一個指定字符-的下一個字符位置開始查找,由此找到了第二個-的位置。

  3. 至此mid函數(shù)的2、3參數(shù)已經(jīng)完全找到了。

「提取最后一個核銷狀態(tài)公式原理解析」

  1. 使用substitute函數(shù),將所有的指定字符-替換為長度和字符串長度一致的空格。替換后圖片如下圖。



  1. 使用right函數(shù),從替換后的字符串右側(cè),提取長度為原本字符串長度的文本。此時的文本就是空格和最后一個核銷狀態(tài)數(shù)據(jù)

  2. 使用trim函數(shù),去除文本中的空格

ps. 需要注意第一步中,我們使用rept函數(shù),用來生成字符長度和原始字符串長度一致的空格

4. 只提取數(shù)字或者字母

如下圖所示,字母和數(shù)字在文本中的不同位置,現(xiàn)在想要將字母和數(shù)字全部提取。



從文本中提取字母和數(shù)字的公式如下:

=SUBSTITUTE(????MIDB(????????A2,????????SEARCHB("?",A2),????????2*LEN(A2)-LENB(A2)),????"-","")



「從字符串中提取字母數(shù)字公式原理解析:」

  1. 公式使用了字節(jié)和字符兩種不同的計算方法。使用minb函數(shù)提取指定字節(jié)數(shù)的數(shù)據(jù),lenb和len分別統(tǒng)計字節(jié)和字符數(shù)量。

  2. 由于字母數(shù)字和符號都是1個字節(jié),中文是2個字符,通過searchb查找任意1個字節(jié)在字符串中的出現(xiàn)位置,就能定位字符串中第一個字母數(shù)字或者符號出現(xiàn)位置,進而通過midb函數(shù)提取。

  3. 提取位數(shù)則通過len和lenb的計數(shù)來計算出來,lenb減去len得到的就是中文字符的數(shù)量也就是2,換算就是4個字節(jié),最后用lenb減去中文字符的字節(jié)數(shù),就得到字母數(shù)字和符號的字節(jié)數(shù)。

  4. 最終使用substitute函數(shù)去除指定的符號,就提取完成了。

如果只想提取字母或者數(shù)字,則使用下面的公式:

只提取大小寫字母的數(shù)組公式,請使用數(shù)組三鍵CTRL+SHIFT+回車確認公式:

=CONCAT(????IF(????????(????????????(CODE(MID(A2,ROW(INDIRECT("1:"&LEN(A2))),1))>=65)*(CODE(MID(A2,ROW(INDIRECT("1:"&LEN(A2))),1))<=90)????????????)+(????????????(CODE(MID(A2,ROW(INDIRECT("1:"&LEN(A2))),1))>=97)*(CODE(MID(A2,ROW(INDIRECT("1:"&LEN(A2))),1))<=122)),????????MID(A2,ROW(INDIRECT("1:"&LEN(A2))),1)????????,""??????)??????)

如果只提取數(shù)字,則數(shù)組公式如下:

=CONCAT(????IF(????????(CODE(MID(A2,ROW(INDIRECT("1:"&LEN(A2))),1))>=48)*(CODE(MID(A2,ROW(INDIRECT("1:"&LEN(A2))),1))<=57),??????MID(A2,ROW(INDIRECT("1:"&LEN(A2))),1)??????,""??????)??????)



「從字符串中單獨提取字母或數(shù)字公式原理解析:」

  1. 上面的提取字母和數(shù)字,都使用了相同的原理,那就是code函數(shù),對不同字符的對應(yīng)編碼,其中數(shù)字0到9,編碼為48到57,大寫字母A到Z,編碼為65到90,小寫字母a到z,編碼為97到122。

  2. 公式是數(shù)組公式,使用了mid將字符串拆分成單獨的字符,再通過code函數(shù)得到編碼,與對應(yīng)編碼對比,區(qū)分字母和數(shù)字,最終通過if函數(shù)判斷保留字母或數(shù)字,使用concat函數(shù)將保留的字符拼接在一起。

  3. 其中用到了sequence序列函數(shù)用法以及filter函數(shù)的多條件式判斷,建議在以溪主頁,查看對應(yīng)文章,深入了解。

如果用數(shù)組公式覺得太麻煩,也可以使用Excel插件來提取字符,如果你會編寫正則表達式,那無論是多奇怪的字符,都可以通過插件運行正則表達式提取指定的字符出來。

插件提取方法路徑如下:

方方格子-高級文本處理-更多



同時在提取更多里面,還支持提取鏈接以及之前說的拆分地址。



在高級提取功能里,支持額外4種提取需求,如圖所示。



以上,就是以溪總結(jié)的文本字符串提取的相關(guān)案例,如果你有實際需求沒有在以上案例,可以留言討論。




精心整理Excel從單元格文本中提取文字、數(shù)字、字母的4種案例的評論 (共 條)

分享到微博請遵守國家法律
庆阳市| 江津市| 永新县| 安多县| 桐庐县| 松江区| 太白县| 即墨市| 乌拉特前旗| 达拉特旗| 宽城| 玛纳斯县| 六枝特区| 静乐县| 牟定县| 五台县| 南木林县| 泗阳县| 安顺市| 平定县| 邹平县| 边坝县| 松桃| 富锦市| 北海市| 安阳市| 碌曲县| 荃湾区| 宁波市| 健康| 墨竹工卡县| 沁水县| 广河县| 桑日县| 蒙阴县| 隆子县| 乐陵市| 咸宁市| 什邡市| 衢州市| 虎林市|