判斷字符串中第一個漢字、數字、字母的位置?

今天和你們分享幾個字符串的處理方法,借判斷字母、數字和字母在字符串中的位置,展示幾個函數的妙用。


一、判斷字符串中第一個漢字的位置


判斷字符串中第一個漢字、數字、字母的位置?

判斷第一個漢字位置

<code>=MATCH(2,LENB(MID(A3,ROW($1:$99),1)),)/<code>

本例所用公式如上。這裡用得最妙的函數是:LENB。公式的詳細解釋如下:

①用MID函數分別從第1位、第2位、第3位……各截取一個字符;

②用LENB函數判斷字符的字節數(我們知道,漢字是雙字節,字母和數字是單字節)

③用Match函數按順序查找第一個2出現的位置,即為第一個漢字的位置。

擴展內容:

①由於漢字多達數萬個,要在字符串中判斷漢字,用常規的CODE函數的方法實現難度較大;

②相對於字母和數字,漢字是雙字節的,所以用LENB函數計算字符串中每個字符的字節數,字節數等於2的就是漢字(中文的各種符號也是雙字節的,如果有中文符號,會影響判斷);

③通過這個思路,我們可以計算字符串中漢字的個數,公式如下:

<code>=SUM(N(LENB(MID(A3,ROW(1:99),1))=2))/<code>
判斷字符串中第一個漢字、數字、字母的位置?

計算漢字字數的另一個思路


二、判斷字符串中第一個漢字的位置

判斷字符串中第一個漢字、數字、字母的位置?

判斷第一個字母位子

<code>=MIN(IFERROR(SEARCH(CHAR(ROW($65:$90)),A3),1=2))/<code>

本例所用公式如上。這裡用得最妙的函數是: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。好處有兩點:書寫簡單、節省公式字符數。


三、判斷字符串中第一個數字的位置

判斷字符串中第一個漢字、數字、字母的位置?

判斷第一個數字的位置

<code>=MIN(FIND(ROW(1:10)-1,A3&1/17))/<code>

本例所用公式如上。這裡用得最妙的函數是: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個字符;

④這裡再給大家分享另一組解此題的公式:

判斷字符串中第一個漢字、數字、字母的位置?

第二中計算嗎數字的方法

<code>=MATCH(,N(ISERR(1*MID(A3,ROW($1:$99),1))),)/<code>

這裡用得最妙的就是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),結果正確的是數字、錯誤的是漢字或字母。


我是上班下班,因為愛好辦公軟件、喜歡分享。所以來到這裡將我的學習心得和踩過的一些坑,和大家聊聊,希望大家學習我成功的經驗,避開我踩過的坑。我和你們一起進步。

好了,今天就聊到這裡,感謝各位朋友的關注和支持。

如果你喜歡我分享的內容,請點個贊支持下;

如果你覺得我分享的內容對你有幫助,可以關注我;

如果要看我以前分享過的好玩的內容,大家可以去我的主頁查看歷史文章。




分享到:


相關文章: