先回顾一下昨天的题目: 截取字符串中的汉字部分,如下图所示 分析:截取汉字,我们只需要两个数字,一是第一个汉字的开始位置,二是汉字的总个数。 =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函数并不只是在单元格中统计数字个数,更深入的应用是它可以统计内存数组中数字的个数。更重要的是它可以忽略错误值。 |
|