统计单元格内的字母个数
在工作中,每个人的记录数据的方式都是不一样的,所以这就带来了不一样的问题需求,今天给大家展示的一个案例是统计单元格内的字母个数,蛮有实际应用意义。如下图,A2:A5单元格里面有的有英文,有的没有,现在要统计每个单元格里的英文字母个数:
解决这个问题,我想我们可以把它们先复制粘贴到Word文档里,然后利用Word强大的查找与替换功能把非英文字母字符去掉,最后再复制粘贴到Excel里面计算剩下来的英文字符长度。但如果你不想大费周折,直接在Excel里面完成的话,可以这样做:
1、在B1单元格中输入如下公式:
由于公式中含有数组故需要用三键(Ctrl+Shift+Enter)结束。
2、将B2单元格公式下拉到B5单元格即可得到结果:
好了,下面我们一起来一步一步剖析一下这个公式的本质原理,这里就以B2单元格公式为例子说明:= COUNT(N(INDIRECT(MID(A2,ROW($1:$30),1)&1)))
1、MID(A2,ROW($1:$30),1)&1
这一部分是把A2单元格里的内容分成一个一个的单个字符,ROW($1:$30)里的30是随便写的一个数,只要大于A2字符串长度就好,以确保能够把A2字符串能全部单个地提取出来。我们看一下提出的效果:
{"学";"好";"E";"x";"c";"e";"l";"和";"A";"c";"c";"e";"s";"s";",";"走";"遍";"天";"下";"都";"不";"怕";"";"";"";"";"";"";"";""}
我们看到从“怕”字之后就全部都是空字符串了,这里正好可以巩固一下MID函数的知识哦,让你知道这种提取超过源字符串长度的极端的情况会得到什么结果,不过这不是我们本次讲的重点。然后通过“&1”,MID(A2,ROW($1:$30),1)&1这部分的结果就会变成如下:
{"学1";"好1";"E1";"x1";"c1";"e1";"l1";"和1";"A1";"c1";"c1";"e1";"s1";"s1";",1";"走1";"遍1";"天1";"下1";"都1";"不1";"怕1";"1";"1";"1";"1";"1";"1";"1";"1"}
2、INDIRECT(MID(A2,ROW($1:$30),1)&1)
通过INDIRECT函数的进一步加工,这个式子的结果变成:
{#REF!;#REF!;0;0;0;0;0;#REF!;"原内容";0;0;0;0;0;#REF!;#REF!;#REF!;#REF!;#REF!;#REF!;#REF!;#REF!;#REF!;#REF!;#REF!;#REF!;#REF!;#REF!;#REF!;#REF!}
到了这里有很多人会问为啥变成这个鬼样,那我只能说你对INDIRECT函数的用法还不是很了解,这里可以参考一下小编之前讲解的函数课程里关于INDIRECT函数的介绍:
点击查看:【INDIRECT函数详解】
3、N(INDIRECT(MID(A2,ROW($1:$30),1)&1))
通过N函数的进一步转化,这个式子的结果变成:
{#REF!;#REF!;0;0;0;0;0;#REF!;0;0;0;0;0;0;#REF!;#REF!;#REF!;#REF!;#REF!;#REF!;#REF!;#REF!;#REF!;#REF!;#REF!;#REF!;#REF!;#REF!;#REF!;#REF!}
至于为什么,这是因为N函数可以把不同类型的数据转化为不同的结果,这里小编就不罗嗦了,可以参看一下N函数的用法:
点击查看:【N函数详解】
4、COUNT(N(INDIRECT(MID(A2,ROW($1:$30),1)&1)))
经过N(INDIRECT(MID(A2,ROW($1:$30),1)&1))的处理,源字符串中的英文字母现在都变为了数字,所以最后利用COUNT函数计算一下其中的数字个数就得到结果啦,你就说这个思维转换溜不溜吧~
总结:小编认为本案例的要点是理解INDIRECT函数的用法,其他的都很简单,最后最最重要的是希望朋友们好好想一想这个过程,这个解决问题的过程,我们是一步一步来达到目的的,所以在平时的工作中,有时候要学会巧妙转换,就像打人一样,有时候不能一拳把人击败,试着打打组合拳,over!