有讀者留言希望能夠整理一期內(nèi)容,講解從數(shù)字、漢字中提取漢字或者數(shù)字的方法,本文將對比較常見的幾類提取情況進行講解。使用公式提取單元格內(nèi)的數(shù)字,要根據(jù)具體的數(shù)據(jù)結(jié)構(gòu)找到某種規(guī)律從而設(shè)計出對應(yīng)的公式。當(dāng)然也有所謂的萬能提取公式,不過非常復(fù)雜并且計算量大,因此只在文末簡單說明。 第一類情況:數(shù)字在左側(cè)
在這個例子中,數(shù)據(jù)非常有規(guī)律,數(shù)字都在左邊的三位,要想將學(xué)號單獨提取出來,只需要使用left函數(shù)即可:=LEFT(A2,3) 公式也非常簡單,第一個參數(shù)是要提取數(shù)字的單元格,第二個參數(shù)是要提取幾位(從左邊算起)。對于例一的這一類數(shù)據(jù),使用的時候根據(jù)數(shù)字的長度修改第二參數(shù)即可。
如果數(shù)字長度不是固定的三位,使用之前的方法就不行了,如下圖。這時就需要找到數(shù)據(jù)源的規(guī)律,再利用規(guī)律進行操作。當(dāng)前的數(shù)據(jù)統(tǒng)一存在一個"-"號,可以根據(jù)"-"號的位置來確定數(shù)字的長度,再用left提取。 對于這種情況需要用到另一個函數(shù)來幫忙,那就是find函數(shù)。 利用公式=FIND("-",A2,1)可以確定"-"的位置。 find函數(shù)有三個參數(shù),第一個參數(shù)是要找什么內(nèi)容,第二個參數(shù)是從哪里找,第三個參數(shù)是從第幾個字開始找(從左邊算起)。 =FIND("-",A2,1) 意思是在A2單元格找“-”,從開始位置找(左邊第一位)。公式的結(jié)果是數(shù)字,代表“-”在單元格的位置(第幾個字符),此時我們需要提取的數(shù)字長度就是find的結(jié)果減1,因此方法就有了:=LEFT(A2,FIND("-",A2,1)-1) 這個方法的適用范圍也比較廣泛,只要可以發(fā)現(xiàn)比較明顯的分隔符號(可以是符號,漢字,字母等等內(nèi)容),都可以使用這個方法。
如果數(shù)據(jù)是這種情況,那么前面的方法都不能用了,數(shù)字長度不確定,也沒分隔符號,唯一的規(guī)律就是數(shù)據(jù)里只有數(shù)字和漢字(沒有字母以及其他符號)。 在Excel中,字符的長度有兩種,半角字符(數(shù)字,字母以及英文方式下輸入的符號)長度為1,而全角字符(漢字和中文符號等)長度為2??梢酝ㄟ^一個實例來了解這一點: len函數(shù)是一個專門計算單元格內(nèi)容長度的函數(shù),不區(qū)分全角半角,其長度與我們平時理解的一致,相當(dāng)于字符的“個數(shù)”。下面再來看看區(qū)分全角和半角的情況: lenb函數(shù)的作用于len函數(shù)一致,區(qū)別就是計算內(nèi)容的長度時會區(qū)分半角全角,從結(jié)果可以看出明顯的差異。其中文字按全角計算的長度是不區(qū)分全半角的2倍,而數(shù)字、字母在兩種情況下則完全一致。 對于例三的情況,就需要使用len與lenb來確定數(shù)字的長度,再用left提取。 利用公式=LEN(A2)*2-LENB(A2)可以確定數(shù)字的長度,如下圖所示。 為什么len*2-lenb就會得到數(shù)字的長度呢? 根據(jù)前面兩種情況下的對比結(jié)果,lenb統(tǒng)計長度,文字長度是len統(tǒng)計值的兩倍,而數(shù)字長度與len統(tǒng)計值一致,所以公式len*2-lenb就可以計算出數(shù)字的長度了。 數(shù)字的長度統(tǒng)計出來以后,解決方法顯而易見:=LEFT(A2,LEN(A2)*2-LENB(A2)) 例三這種情況同樣比較典型,只要記住是len*2-lenb就可以了,如果確實記不住,那么遇到問題的時候可以單獨算一算,先把數(shù)字的長度算出來,再組合left就行了。
這種情況很復(fù)雜,唯一的規(guī)律就是數(shù)字在左邊。來看看如何解決吧。 可以利用公式:=-LOOKUP(1,-LEFT(A2,ROW($1:$9)))。 關(guān)于這個公式,要解釋的話估計還得五千字,所以各位只需要記得套路即可,唯一有可能修改的就是最后面那個9,當(dāng)最長的數(shù)字超過9位時,就要修改這個9,可以直接用99來完成。 最后,這個公式適用于任何數(shù)字在左邊的情況。 第二類情況:數(shù)字在右邊 數(shù)字在右邊的情況與數(shù)字在左邊非常類似,以下僅做簡單說明: 數(shù)字位數(shù)固定的直接用right提?。?/p> 數(shù)字位數(shù)不固定但有分隔符號的使用find函數(shù)配合mid函數(shù) 完成提取:=MID(A2,FIND("-",A2,1)+1,9) (注:公式中最后一個參數(shù)值“9”需要根據(jù)數(shù)字的最大位數(shù)修改,譬如提取的數(shù)字最大位數(shù)是10,則需要寫成10或者大于10的數(shù)字。) 數(shù)字位數(shù)不固定同時沒有分隔符的還是可以使用len和lenb的組合:=RIGHT(A2,LEN(A2)*2-LENB(A2)) 什么規(guī)律都沒有的繼續(xù)讓lookup發(fā)大招:=-LOOKUP(1,-RIGHT(A2,ROW($1:$9))) 第三類情況:數(shù)字在中間 數(shù)字在中間這種非常特殊,比較規(guī)范的數(shù)據(jù)源中一般不會出現(xiàn)這樣的情況,舉一個例子吧: 例如圖中這種數(shù)據(jù),如果數(shù)字前面或者后面的長度固定,可以先用函數(shù)將內(nèi)容變成前面討論過的情況再去處理: 公式比較簡單,不做解釋了,至于后面一步怎么做,根據(jù)前面的學(xué)習(xí)你已經(jīng)會了吧? 下面要說的這個方法就是一種比較通用的方法了,有人稱其為萬能提取公式: =-LOOKUP(0,-MID(A1,MIN(FIND(ROW($1:$10)-1,A1&1/17)),ROW($1:$9))) 數(shù)組公式,需要按三鍵“Ctrl+shift+回車”結(jié)束。 小結(jié) 關(guān)于如何使用公式提取單元格內(nèi)的數(shù)字,以上將絕大多數(shù)情況都進行了說明,當(dāng)然不是全部,例如含有小數(shù)的情況,因為有了小數(shù)點,就更加特殊了。 最后的那個數(shù)組公式可以算是一個比較通用的公式了。需要強調(diào)的是:大部分的問題之所以變得非常麻煩,就是因為不規(guī)范的數(shù)據(jù)源導(dǎo)致的,因此養(yǎng)成好的習(xí)慣,一個單元格只存放一種屬性的數(shù)據(jù),例如把名稱與數(shù)量、價格等信息分開存放,這樣就會大大地提高統(tǒng)計效率。 當(dāng)然站在提高公式運用能力的角度來說,數(shù)字提取這一類問題也是函數(shù)練習(xí)的好題目。希望大家能夠結(jié)合以前學(xué)過的函數(shù),思考出更多的公式來實現(xiàn)數(shù)字的提取。 來源:部落窩教育 作者:老菜鳥 |
|