如何從中文和數(shù)字混合的文本中,提取部分數(shù)字?


昨天在中國移動培訓結束后,學員小K咨詢到:有什么方法可以從中文和數(shù)字混合的文本中,提取部分數(shù)字?

小K的問題是這樣的,她想從下圖所示的套餐分類的數(shù)據(jù)中提取金額。

如果金額的數(shù)字長度是一致的,我們可以先用FIND函數(shù)查詢“元”字的位置,再用MID函數(shù)截取我們想要的數(shù)字??蓡栴}就在于數(shù)字的長度是不一樣的,有1位的、2位的、3位的,最多不超過3位的數(shù)字。

當我們在函數(shù)運用的過程中卡殼了,覺得寫不下去了,不用著急,一步一步來。所以,我還是按照剛剛的思路,用FIND函數(shù)查詢出“元”字的位置,再用左取字符的LEFT函數(shù)取出“元”字左側的所有字符,公式如下:

=LEFT(A2,FIND("元",A2)-1)

接著就要想一想如何從右往左取出長短不一的1-3位的數(shù)字。首先我用RIGHT函數(shù)從右往左取1-3位的數(shù)字,公式如下:

=RIGHT(B2,ROW($1:$3))

ROW函數(shù)用于返回行號,ROW($1:$3)返回的就是1、2、3三個數(shù)字,意味著分別從右往左取1個字符、2個字符、3個字符,以B2單元格的內(nèi)容為例,就會形成這樣的結果:{"8";"58";"惠58"}

接著在RIGHT函數(shù)的結果前面添加負號,公式如下:

=-RIGHT(B2,ROW($1:$3))

添加負號的作用是將數(shù)值轉(zhuǎn)換為負數(shù),含有文本字符的字符串則變成錯誤值:{-8;-58;#VALUE!}。

最后用LOOKUP函數(shù),使用1作為查詢值,在由負數(shù)、0和錯誤值構成的數(shù)組中,忽略錯誤值提取最后一個等于或小于1的數(shù)值。最后再使用負號,將提取出的負數(shù)轉(zhuǎn)為正數(shù)。

=-LOOKUP(1,-RIGHT(B2,ROW($1:$3)))

到這個步驟,我們就實現(xiàn)了從中文和數(shù)字混合的文本中,提取出部分數(shù)字。這是函數(shù)的運行結果:

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容