Excel表格裡有文字有數字怎樣提取數字(電子表格如何提取字串中的數字)
昨天我們講了字串中數字在前面或在後面時的提取辦法,今天我們來看下若是數字在中間該怎麼辦?在解決問題之前我們先學習下會用到的另外兩個函式,ISNUMBER,MATCH。
1、ISNUMBER
ISNUMBER(value),檢測一個值是否為數字,是就返回TRUE,否則返回FALSE。
如下圖:
如果是巢狀使用時檢測一個陣列區域中是否有數字,結果將以陣列的形式輸出被引用。
2、MATCH
MATCH(lookup_value, lookup_array, [match_type])
返回該項在此區域中的相對位置,匹配方式分為1,0,-1,分別對應下列情況:
1或者是省略,MATCH 查詢小於或等於 lookup_value 的最大值;
0,MATCH 查詢完全等於 lookup_value 的第一個值;
-1,MATCH 查詢大於或等於 lookup_value 的最小值。lookup_array 引數中的值必須按降序排列,例如:TRUE, FALSE, Z-A, ...2, 1, 0, -1, -2, ... 等等。
例項如下圖:
3、數字提取
學習了上面的函式後,我們來解決下今天的問題。如下圖,提取數字。
我們先以不含小數點的數字提取為例。
思路:從字串中間開始提取字元用MID函式,所以我們只需確定從第幾位開始提取,一共提取幾位字元,只要確定了這兩個引數,問題就迎刃而解了。
從第幾位開始提取?昨天剛學習了lookup,他能找到字串中最後一個數字出現的位置,所以在B1中輸入:
=lookup(1,-mid(A1,ROW($1:$10),1),ROW($1:$10))
把A1中的字串拆解成{"你";"好";"4";"5";"m";"g";"";"";"";""},由於拆解出來的數字被當作了文字,前面加個負號就變成了{"你";"好";-4;-5;"m";"g";"";"";"";""},然後用lookup以1為查詢值就會查詢到-5,返回對應的行號即4,意思是字串中最後一個數字在第四位。
用count對字串中的數字進行計數
=COUNT(-MID(A1,ROW($1:$10),1)),返回2,代表字串中有兩個數字。
最後用mid函式
=mid(A1,4-2 1,2)即可得到想要的結果,中間引數的意思是最後一個數字的位置減去數字位數,然後加1,即得到了開始提取的位數,比如A1中,最後一個數字在第四位,有兩位數字,所以從4-2 1=3位開始提取。
公式整合到一起即:
=MID(A1,(LOOKUP(1,-MID(A1,ROW($1:$10),1),ROW($1:$10))-COUNT(-MID(A1,ROW($1:$10),1)) 1),COUNT(-MID(A1,ROW($1:$10),1)))
三鍵結束。
那找出從第幾位開始提取還有沒有好的辦法呢?
我們用今天學的函式來思考下,
用ISNUMBER來判斷A1中是否有數字
=ISNUMBER(-MID(A1,ROW($1:$10),1))返回
{FALSE;FALSE;TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE}
用MATCH來找到第一個TRUE的位置,即找到了第一位數字的位置
=MATCH(TRUE,ISNUMBER(1*MID(A1,ROW($1:$10),1)),0)
用COUNT計算出數字位數。
整合在一起即:
=MID(A1,MATCH(TRUE,ISNUMBER(1*MID(A1,ROW($1:$10),1)),0),COUNT(1*MID(A1,ROW($1:$10),1)))
三鍵結束
這個公式比上面的公式精煉點吧,但是其實本質是一樣,都是用MID函式實現提取。
那對於數字中有小數的該怎麼提取呢?
這個就不多介紹了,只需要用IF 做個判斷,用上面的方法就可以了。
當然如果你用的是16版的excel,那麼只需要CTRL E瞬間就可以實現了。
轉自:米巨集Office