轉轉大師PDF轉換器
支持40多種格式轉換,高效辦公
如何將文本中的數(shù)字提取出來呢?一個一個的復制粘貼太麻煩也不太顯示,如果文本多的話,今天小編就來給大家分享一個使用函數(shù)輕松將文本中的數(shù)字提取出來的方法。
基本思路和使用函數(shù)說明
要提取上圖A2單元格文本中的數(shù)字,如果能確定第一個數(shù)字出現(xiàn)的位置,然后確定數(shù)字的個數(shù),就可以用MID函數(shù)提取出來了。
本例解決方案用到的函數(shù)及目的主要如下:
1)MID和MIDB函數(shù),從第一個數(shù)字出現(xiàn)位置起取數(shù)字個數(shù)那么多位,以達到把數(shù)字提取出來的目的;
2)SEARCHB函數(shù),可以使用通配符查到第一個數(shù)字出現(xiàn)的位置;
3)FIND函數(shù),可以查找到第一個數(shù)字出現(xiàn)的位置;
4)COUNT函數(shù),“數(shù)”出文本中數(shù)字的個數(shù);
5)MAX和MIN函數(shù),提取相關數(shù)字。
2
查找第一個數(shù)字出現(xiàn)的位置
第一種方法:SEARCHB函數(shù),函數(shù)基本用法如下(第三參數(shù)忽略):
=SEARCHB(待查找的文本,包含待查找文本的目標文本)
SEARCHB函數(shù)用途是在第二參數(shù)中查找第一參數(shù)出現(xiàn)的位置,查找是按字節(jié)的,一個漢字占兩個字節(jié),普通數(shù)字和英文占一個字節(jié)。
并且,SEARCHB函數(shù)可以使用通配符,比如“?”就代替一個單字節(jié)字符。
如下圖,在B2輸入:
=SEARCHB("?",A2)
結果返回7,也就是第一個單字節(jié)字符(也就是第一個數(shù)字4)出現(xiàn)的位置是7,因為前面有“七連第”3個漢字,占6個字節(jié),所以“4”是第7個字節(jié)。
第二種方法:FIND函數(shù),函數(shù)基本用法如下(第三參數(shù)忽略):
=FIND(待查找的文本,包含待查找文本的目標文本)
和SEARCHB函數(shù)類似,F(xiàn)IND函數(shù)查找第一參數(shù)在第二參數(shù)中出現(xiàn)的位置。例如:
=FIND("中","我是中國人")=3,因為第一參數(shù)“中”在第二參數(shù)“我是中國人”里是第3個字符。
我們在B2輸入函數(shù)并按Ctrl+Shift+Enter運行:
=MIN(FIND(ROW(1:10)-1,A2&1/17))
結果返回4,也就是說A2文本中第一個數(shù)字出現(xiàn)的位置是4。
下面來簡單解釋一下函數(shù)的用法:
ROW(1:10)返回{1;2;3;4;5;6;7;8;9;10}這樣一個數(shù)組,由于我們要查找的是單個數(shù)字,所以需要再減去1,也就是:ROW(1:10)-1。ROW(1:10)-1返回{0;1;2;3;4;5;6;7;8;9},也即0~9的10個數(shù)字。
FIND(ROW(1:10)-1,A2),也就是FIND({0;1;2;3;4;5;6;7;8;9},A2)可以查找0~9在A2文本中分別出現(xiàn)的位置。
但是如果A2文本中沒有某個數(shù)字,比如說沒有7,F(xiàn)IND部分就會返回錯誤值。
為了避免這個問題,我們在A2文本后加上"0123456789",也就是A2&"0123456789",這樣,F(xiàn)IND函數(shù)不會返回錯誤值,因為即使A2文本中沒有某個數(shù)字,也能在A2&"0123456789"中查到。
上面的函數(shù)中實際輸入的是A2&1/17,為什么這樣呢,因為1/17=0.0588235294117647,這個小數(shù)中包含0~9的所有數(shù)字。
5^19也有相同作用。
FIND(ROW(1:10)-1,A2&1/17)返回:{9;21;15;16;4;5;24;23;13;6},也即0~9這10個數(shù)字分別在A2&1/17這個文本中出現(xiàn)的位置,我們?nèi)∽钚≈稻褪堑?個數(shù)字出現(xiàn)的位置即可,因此外層嵌套MIN函數(shù)。即:
=MIN(FIND(ROW(1:10)-1,A2&1/17))
判斷A2文本中數(shù)字的個數(shù)
第一種方法:COUNT函數(shù)。COUNT函數(shù)返回結果為其參數(shù)中的數(shù)字個數(shù)。
因此,我們輸入:
=COUNT(-MID(A2,ROW(1:99),1))
其中MID(A2,ROW(1:99),1)部分的意義是:
從A2文本中第1個,第2個……第99個字符開始,分別取1個字符,也就是將A2單元格按單個字符拆分,返回:
={"七";"連";"第";"4";"5";"9";"個";"兵";……;""}
我們加上一個減號,就將文本數(shù)字轉化成數(shù)值,文本轉化成錯誤值,
-MID(A2,ROW(1:99),1)返回:
{#VALUE!;#VALUE!;#VALUE!;-4;-5;-9;#VALUE!;……;#VALUE!}
然后用COUNT({#VALUE!;#VALUE!;#VALUE!;-4;-5;-9;#VALUE!;……;#VALUE!} )數(shù)出一共有3個數(shù)字,也就是A2文本中數(shù)字的個數(shù)。
第二種方法:LEN和LENB函數(shù)方法。
LEN和LENB函數(shù)都返回參數(shù)字符長度,但是LENB按單字節(jié)個數(shù)計,LEN不區(qū)分。
例如:
=LEN("中國1汽")=4
=LENB("中國1汽")=7
我們輸入下面公式獲得A2單元格文本中數(shù)字個數(shù):
=2*LEN(A2)-LENB(A2)
原理:假設A2文本中的數(shù)字都是雙字節(jié),那么2*LEN(A2)=LENB(A2),但是數(shù)字實際上是單字節(jié)的,那么2*LEN(A2)比LENB(A2)大幾就是有幾個單字節(jié)的字符(本例中就是數(shù)字)。
4
組合上述函數(shù),提取數(shù)字
根據(jù)最初的思路分析,將上面的數(shù)字出現(xiàn)位置和數(shù)字個數(shù)函數(shù)組合一下,就得到:
=MIDB(A2,SEARCHB("?",A2),2*LEN(A2)-LENB(A2))
=MID(A2,MIN(FIND(ROW(1:10)-1,A2&1/17)),2*LEN(A2)-LENB(A2))
=MID(A2,MIN(FIND(ROW(1:10)-1,A2&1/17)),COUNT(-MID(A2,ROW(1:99),1)))
=MIDB(A2,SEARCHB("?",A2),COUNT(-MID(A2,ROW(1:99),1)))
5
補充一個方法
單純就本例數(shù)據(jù)而言,輸入下面公式,然后按Ctrl+Shift+Enter也可以返回正確結果:
=MAX(IFERROR(--MID(A2,ROW(1:99),COLUMN(A:Z)),))
以上就是今天給大家分享的關于如何使用函數(shù)輕松將文本中的數(shù)字提取出來的操作方法,有需要的小伙伴們可以根據(jù)以上步驟進行操作,如果需要pdf轉txt可以使用w大師pdf轉換器。