本帖最后由 bajifeng 于 2015-12-29 16:25 编辑
这题出的好,很实用,但感觉好难。
新人第一次参加竞赛,花了一个星期研究,最后终于算出结果来了。
>>>>>>>>>>>>>>>>>>>>
第1版公式:
345字符
C2:
- =IF($C$1=1,A2,IF(OR(C2="",C2=0),"",IF(MIN(CODE(MID(C2,ROW(INDIRECT("1:"&LEN(C2))),1)))<MAX((B2={2;3})*{58;123}),SUBSTITUTE(C2,CHAR(MIN(CODE(MID(C2,ROW(INDIRECT("1:"&LEN(C2))),1)))),),IF(MAX(CODE(MID(C2,ROW(INDIRECT("1:"&LEN(C2))),1)))>MAX((B2={1;2;3})*{58;123;99999}),SUBSTITUTE(C2,CHAR(MAX(CODE(MID(C2,ROW(INDIRECT("1:"&LEN(C2))),1)))),),C2))))
复制代码
辅助单元格 C1: 0、1
公式使用 说明: | 1、C1为辅助单元格,其值输入1时刷新数据,其值输入0后并连续按F9迭代运算得到结果。 | 2、C2输入公式并按Ctrl+Shift+Enter结束,下拉至C31; | 3、A列、B列数据变化或答案区域C列为空时,在C1先输入1刷新数据后再输入0,连续按F9到最后出现结果。 | 4、此公式为数组公式并需要开启迭代计算。 | 第1版公式详见附件。
>>>>>>>>>>>>>>>>>>>>
第2版公式:
159字符
C2:
- =IF(C$1=0,"",IF(C$1>LEN(A2),C2,C2&IF(AND(CODE(MID(A2,C$1,1))<SUM((B2={1;2;3})*{58;123;99999}),CODE(MID(A2,C$1,1))>SUM((B2={2;3})*{58;123})),MID(A2,C$1,1),"")))
复制代码
辅助单元格 C1:
=IF(B2>0,IF(C1>99,C1,C1+1),0)
第2版公式详见附件。
>>>>>>>>>>>>>>>>>>>>
第3版公式:
157字符
C2:
- =IF(B$2,IF(C$1>LEN(A2),C2,C2&IF(AND(CODE(MID(A2,C$1,1))<SUM((B2={1;2;3})*{58;123;99999}),CODE(MID(A2,C$1,1))>SUM((B2={2;3})*{58;123})),MID(A2,C$1,1),"")),"")
复制代码
辅助单元格 C1:
=IF(B2,IF(C1>99,C1,C1+1),0)
第3版公式详见附件。
>>>>>>>>>>>>>>>>>>>> |