判断字符串中第一个汉字、数字、字母的位置?

今天和你们分享几个字符串的处理方法,借判断字母、数字和字母在字符串中的位置,展示几个函数的妙用。


一、判断字符串中第一个汉字的位置


判断字符串中第一个汉字、数字、字母的位置?

判断第一个汉字位置

<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),结果正确的是数字、错误的是汉字或字母。


我是上班下班,因为爱好办公软件、喜欢分享。所以来到这里将我的学习心得和踩过的一些坑,和大家聊聊,希望大家学习我成功的经验,避开我踩过的坑。我和你们一起进步。

好了,今天就聊到这里,感谢各位朋友的关注和支持。

如果你喜欢我分享的内容,请点个赞支持下;

如果你觉得我分享的内容对你有帮助,可以关注我;

如果要看我以前分享过的好玩的内容,大家可以去我的主页查看历史文章。




分享到:


相關文章: