本帖最后由 nccuiyehua 于 2015-12-4 16:09 编辑
C1单元格C2单元格- =IF(IF(C$1>LEN(A2),3,IF(CODE(MID(A2,C$1,1))>42000,2,INT(CODE(MID(A2,C$1,1))/65)))<>(B2-1),SUBSTITUTE(IF(C$1=1,A2,C2),MID(A2,C$1,1),),IF(C$1=1,A2,C2))
复制代码 精简一下,130个字符,力争能多拿点分。- =SUBSTITUTE(IF(C$1=1,A2,C2),IF(IF(C$1>LEN(A2),,IF(CODE(MID(A2,C$1,1))>42000,3,INT(CODE(MID(A2,C$1,1))/65)+1))=B2,,MID(A2,C$1,1)),)
复制代码 用LOOKUP函数判断,再缩短些长度,117个字符- =SUBSTITUTE(IF(C$1=1,A2,C2),IF(IF(C$1>LEN(A2),4,LOOKUP(CODE(MID(A2,C$1,1)),{48,1;58,2;123,3}))=B2,"",MID(A2,C$1,1)),)
复制代码 思路:
1. 用lookup+CODE(MID(A2,C$1,1))判断字符类别,1为数字,2为字母,3为汉字
2. SUBSTITUTE( C2,MID(A2,C1,1),)来对不符合要求的字符进行替换
3. 利用C1进行循环引用并替换
4. 以上是用减法去除不符合要求的字符,还打算用加法,不断添加符合要求的字符。遇到问题是1不知道停止,每计算一次都重新增加一遍。2强制由0开始时又往往跳过第一个字符。没法得到正确的结果。
我已经完成的公式如下:=IF(C$1=1,"",C2&IF(IF(C$1>LEN(A2),4,LOOKUP(CODE(MID(A2,C$1,1)),{48,1;58,2;123,3}))=B2,MID(A2,C$1,1),"")) ,有兴趣的可以继续讨论研究。
首次参加技术竞赛,请版主老师点评!!
|