在使用EXCEL時,有時從外部匯入的資料,或者輸入時不規範,將數字與文字混合輸入在一個單元格中,給後續的統計運算帶來不便,為此需要將文字與數字分開,本篇介紹幾種將數字提取出來的方法。
1、首先要分析資料內容,根據不同的型別,使用不同的方法。
2、分析這個表格,可以發現,除了數字外,就是漢字,在雙位元組字元中,每個漢字算兩個位元組,利用此特點,可以算出有多少個漢字、多少個數字,單位元組字元數用LEN函式:=LEN(A2)。
3、雙位元組位元組數用LENB函式,注意下兩者的區分,單位元組指字元個數,雙位元組指位元組個數:=LENB(A2)。
4、二者相減,即可得到文字的個數:=LENB(A2)-LEN(A2)。
5、再用總字元數減去文字個數,即得到要提取出來的數字個數:=LEN(A2)-(LENB(A2)-LEN(A2)),去掉括號,合併起來,公式為:=LEN(A2)*2-LENB(A2)。
6、知道了數字個數,再知道數字開始的位置,就可以用MID函式將數字提取出來了,但是現在不知道數字是從什麼位置開始的,可以使用SEARCHB雙位元組查詢函式+萬用字元"?"來查詢單位元組出現的位置:=SEARCHB("?",A2)。
7、這樣提取公式就有了,提取函式:=MIDB(A2,SEARCHB("?",A2),LEN(A2)*2-LENB(A2)),如果用單位元組函式:=MID(A2,INT(SEARCHB("?",A2)/2)+1,LEN(A2)*2-LENB(A2))。
8、提取結果是文字格式,如果要轉為常規的數字格式,可以在公式前加上--,或者*1,來轉換:=--MIDB(A2,SEARCHB("?",A2),LEN(A2)*2-LENB(A2)),轉換格式後,可以進行下一步的統計運算。
9、如果文字中有空格,直接提取就會出去,需要對原來的內容進行去空格替換後,再提取:=MIDB(SUBSTITUTE(A2,",""),SEARCHB("?",SUBSTITUTE(A2,"","")),LEN(SUBSTITUTE(A2," ",""))*2-LENB(SUBSTITUTE(A2," ","")))。
10、但是上面的方法,只能用於除了數字就是文字的內容提取,如果除此之外,還有其它的字母、符號等單位元組字元,就會出錯。
11、對於這種不定型的,可以用陣列公式進行提取,從每個字元開始,取出1~若干個字元(比如10個),再加上運算子號進行判斷,取出的是不是數值,再用MAX函式從中取出是數值的最多數字:=MAX(IFERROR(--MID(A2,ROW($1:$30),COLUMN($A:$J)),)),在輸入陣列公式時,需要同時按住Ctrl+Shift+Enter結束公式編輯,公式會自動生成一對“{}”。
12、當然,也可以不用上面的陣列公式,利用LOOKUP函式的向後相容性,來提取出數字:=LOOKUP(1,MID(A2,MIN(FIND({0,1,2,3,4,5,6,7,8,9},A2&"0123456789")),ROW($1:$10))),此公式先判斷數字出現的最小位置,再從此位置開始依次取出若干個字元,最後用LOOKUP函式取出最長數字串的那個數字,即達目的,關於此函式的用法,可以參看“EXCEL中LOOKUP函式的高階應用”。
在使用EXCEL時,有時從外部匯入的資料,或者輸入時不規範,將數字與文字混合輸入在一個單元格中,給後續的統計運算帶來不便,為此需要將文字與數字分開,本篇介紹幾種將數字提取出來的方法。
工具/原料電腦EXCEL軟體方法/步驟1、首先要分析資料內容,根據不同的型別,使用不同的方法。
2、分析這個表格,可以發現,除了數字外,就是漢字,在雙位元組字元中,每個漢字算兩個位元組,利用此特點,可以算出有多少個漢字、多少個數字,單位元組字元數用LEN函式:=LEN(A2)。
3、雙位元組位元組數用LENB函式,注意下兩者的區分,單位元組指字元個數,雙位元組指位元組個數:=LENB(A2)。
4、二者相減,即可得到文字的個數:=LENB(A2)-LEN(A2)。
5、再用總字元數減去文字個數,即得到要提取出來的數字個數:=LEN(A2)-(LENB(A2)-LEN(A2)),去掉括號,合併起來,公式為:=LEN(A2)*2-LENB(A2)。
6、知道了數字個數,再知道數字開始的位置,就可以用MID函式將數字提取出來了,但是現在不知道數字是從什麼位置開始的,可以使用SEARCHB雙位元組查詢函式+萬用字元"?"來查詢單位元組出現的位置:=SEARCHB("?",A2)。
7、這樣提取公式就有了,提取函式:=MIDB(A2,SEARCHB("?",A2),LEN(A2)*2-LENB(A2)),如果用單位元組函式:=MID(A2,INT(SEARCHB("?",A2)/2)+1,LEN(A2)*2-LENB(A2))。
8、提取結果是文字格式,如果要轉為常規的數字格式,可以在公式前加上--,或者*1,來轉換:=--MIDB(A2,SEARCHB("?",A2),LEN(A2)*2-LENB(A2)),轉換格式後,可以進行下一步的統計運算。
9、如果文字中有空格,直接提取就會出去,需要對原來的內容進行去空格替換後,再提取:=MIDB(SUBSTITUTE(A2,",""),SEARCHB("?",SUBSTITUTE(A2,"","")),LEN(SUBSTITUTE(A2," ",""))*2-LENB(SUBSTITUTE(A2," ","")))。
10、但是上面的方法,只能用於除了數字就是文字的內容提取,如果除此之外,還有其它的字母、符號等單位元組字元,就會出錯。
11、對於這種不定型的,可以用陣列公式進行提取,從每個字元開始,取出1~若干個字元(比如10個),再加上運算子號進行判斷,取出的是不是數值,再用MAX函式從中取出是數值的最多數字:=MAX(IFERROR(--MID(A2,ROW($1:$30),COLUMN($A:$J)),)),在輸入陣列公式時,需要同時按住Ctrl+Shift+Enter結束公式編輯,公式會自動生成一對“{}”。
12、當然,也可以不用上面的陣列公式,利用LOOKUP函式的向後相容性,來提取出數字:=LOOKUP(1,MID(A2,MIN(FIND({0,1,2,3,4,5,6,7,8,9},A2&"0123456789")),ROW($1:$10))),此公式先判斷數字出現的最小位置,再從此位置開始依次取出若干個字元,最後用LOOKUP函式取出最長數字串的那個數字,即達目的,關於此函式的用法,可以參看“EXCEL中LOOKUP函式的高階應用”。