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