分享

【解析】提取姓名的Excel公式详解!

 碧荷晨露 2016-07-25

先回顾一下昨天的题目:

截取字符串中的汉字部分,如下图所示


分析:截取汉字,我们只需要两个数字,一是第一个汉字的开始位置,二是汉字的总个数。

=MID(字符串,汉字开始位置截取总个数

从提交的答案来看,汉字总个数大家都是用lenb-len的方法获取的。

,LENB(A1)-LEN(A1)

所以,剩下的就是怎么判断汉字的开始位置。


有同学用code提取字符的数字代码然后对比

 MATCH(TRUE,CODE(MID(A1,ROW($1:$10),1))>10000,0)

也有和文本型数字9直接对比

MATCH(TRUE,MID(A1,ROW($1:$99),1)>'9',)

也有和汉字吖对比

MATCH(1=1,MID(A1,ROW($1:$15),1)>'吖',)

也有巧妙的用midb截取,然后用” “查找

MATCH(' ',MIDB(A1,ROW($1:$20),1),0)


兰色的参考答案是用Count判断

COUNT(-LEFT(A1,ROW($1:99)))+1


解析:

Left(a2,row($1:99)) 从左右分别截取1.2.3.4......99个字符,a2的值是12.55赵志东56,截取的结果是这样的

{'1';'12';'12.';'12.5';'12.55';'12.55赵';'12.55赵志';'12.55赵志东';'12.55赵志东5'.........

从上面的结果看,在第一个汉字前,都是文本型数字形式,后面全是非数字。前面加一个 - 号可以把文本全转换成数字,非数字转换成错误值


Count函数可以统计数字的个数,所以:

COUNT(-LEFT(A1,ROW($1:99))) 就可以统计出汉字前数字占多少位。

所以,完整的参考答案为:

=MID(A2,COUNT(-LEFT(A2,ROW($1:100)))+1,LENB(A2)-LEN(A2))


总结:

Count函数并不只是在单元格中统计数字个数,更深入的应用是它可以统计内存数组中数字的个数。更重要的是它可以忽略错误值


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多