各位朋友,你們好。
今天和你們分享幾個字符串的處理方法,借判斷字母、數字和字母在字符串中的位置,展示幾個函數的妙用。
一、判斷字符串中第一個漢字的位置
判斷第一個漢字位置
=MATCH(2,LENB(MID(A3,ROW($1:$99),1)),)
本例所用公式如上。這裡用得最妙的函數是:LENB。公式的詳細解釋如下:
用MID函數分別從第1位、第2位、第3位……各截取一個字符;
用LENB函數判斷字符的位元組數(我們知道,漢字是雙位元組,字母和數字是單位元組)
用Match函數按順序查找第一個2出現的位置,即為第一個漢字的位置。
擴展內容:
由於漢字多達數萬個,要在字符串中判斷漢字,用常規的CODE函數的方法實現難度較大;
相對於字母和數字,漢字是雙位元組的,所以用LENB函數計算字符串中每個字符的位元組數,位元組數等於2的就是漢字(中文的各種符號也是雙位元組的,如果有中文符號,會影響判斷);
通過這個思路,我們可以計算字符串中漢字的個數,公式如下:
=SUM(N(LENB(MID(A3,ROW(1:99),1))=2))
計算漢字字數的另一個思路
二、判斷字符串中第一個漢字的位置
判斷第一個字母位子
=MIN(IFERROR(SEARCH(CHAR(ROW($65:$90)),A3),1=2))
本例所用公式如上。這裡用得最妙的函數是:Search和1=2。公式的詳細解釋如下:
利用CHAR(ROW($65:$90),生成【A~Z】的26個大寫英文字母;
用Search函數在字符串中查找【A~Z】,但是由於有些 字母在字符串中沒有,查找結果會出現錯誤值;
用IFERROR函數進行錯誤值處理,當Search函數能查詢到結果時,顯示結果;當查詢不到結果時,返回FALSE(1=2結果為False);
用MIN函數判斷Search查找結果的最小值,就是第一個字母出現的位置。
擴展內容:
這裡為什麼用Search函數?
答:因為Search函數不區分大小寫,用大寫字母A可以查找到大寫字母A,也可以查找到小寫字母a。所以就用Search函數查找全部大寫字母就可以了;
為什麼用CHAR函數生成大寫字母,而不是小寫字母呢?
答:大寫字母的CODE值範圍為65~90,小寫字母的CODE值範圍為97~122。如果要生成小寫字母,需要用如下CHAR(ROW($97:$:122)),大家可以發現,用大寫字母寫法可以使公式少一個字符;
1=2是什麼意思?
答:在excel中,有時候我們需要用到TRUE或者FALSE邏輯函數,這時我們可以用1=1來表示TRUE,用1=2(或者其他的1>1等)來表示FALSE。好處有兩點:書寫簡單、節省公式字符數。
三、判斷字符串中第一個數字的位置
判斷第一個數字的位置
=MIN(FIND(ROW(1:10)-1,A3&1/17))
本例所用公式如上。這裡用得最妙的函數是:1/17。公式的詳細解釋如下:
Row(1-10)-1,可以生成【0~9】10個數字;
【A3&1/17】:對查找字符串進行處理,這裡1/17=0.0588235294117647(這裡面包含0~9所有數字)
用FIND函數在字符串中查找0~9的位置(由於對A3的字符串做了第步中的處理,所以不會出現錯誤值;
用MIN函數判斷Fnd查找結果的最小值,就是第一個數字出現的位置。
擴展內容:
這裡,我們也可以用判斷第一個字母的公式套路,直接把ROW(65:90)換成ROW(1:10)-1就可以了。但是如果這裡重複上一個公式,就很沒意義了;
1/17,這個數的結果中包含了0~9的所有數字,就可以保證FIND函數全部都能查找到內容,就可以不用容錯函數了;
這裡可以用SEARCH函數嗎?可以,只是用 FIND函數可以使公式少2個字符;
這裡再給大家分享另一組解此題的公式:
第二中計算嗎數字的方法
=MATCH(,N(ISERR(1*MID(A3,ROW($1:$99),1))),)
這裡用得最妙的就是N函數,公式解釋如下:
MID(A3,ROW($1:$99),1):用MID函數將字符串中每個字符提取出來;
用【1*每個字符】,如果字符為數字,計算結果會是具體的數值;如果字符為漢字或字母,計算結果就會是錯誤值;
用ISERR函數對結果進行處理,如果第部的結果是錯誤值,那麼ISERR函數的結果就是TRUE;如果第步中結果為數值,ISERR函數的結果就會是FALSE;
用N函數對True和False進行處理,True=1,False=0;
用Match函數在結果中查找0,第一個0的位置,就是第一個數字的位置。
小結:
今天和你們分享的是字符串處理中的幾個思路,知識點如下:
1、用LENB函數對字符計算,結果為2的就是漢字;
2、在寫公式時,可以用1=1表示TRUE,用1=2表示FALSE;
3、Search函數在查找時,不區分大小寫,可以一次找到所有的字母;
4、【1/17】的結果包含【0~9】所有數字,把1/17合併到字符串後面,即可以使查找結果不出錯,還不會對查找結果造成影響;
5、在判斷數字時,我們可以用數字能計算的特點,讓提取出來的字符進行計算(×1),結果正確的是數字、錯誤的是漢字或字母。
我是上班下班,因為愛好辦公軟體、喜歡分享。所以來到這裡將我的學習心得和踩過的一些坑,和大家聊聊,希望大家學習我成功的經驗,避開我踩過的坑。我和你們一起進步。
好了,今天就聊到這裡,感謝各位朋友的關注和支持。
如果你喜歡我分享的內容,請點個贊支持下;
如果你覺得我分享的內容對你有幫助,可以關注我;
如果要看我以前分享過的好玩的內容,大家可以去我的主頁查看歷史文章。