|
If的第一部分MAX(MMULT(-ISERR(FIND(ROW($2:$9)-{2,1,0},A1)),{1;1;1})),用来判断是否有连续数,完整写法是MAX(MMULT(-ISERR(FIND(ROW($2:$9)-{2,1,0},A1)),{1;1;1}))=0
第二部分是在此基础上,利用替换方法,如果有重复出现的数,就替换掉,没有的话,用-1替换,就是空替换。一个数如果是连续的话,就是要么出现比他小1的数,要么出现大1的数,比如1,则必须有2或0出现,就用0至9,-1至8,1至10,检查是否出现这些数,不过10这个数有点麻烦,就用-1代替,就构造了,MOD(ROW($2:$11)-{1,2,0},11)-1,再用len函数判断长度。SUBSTITUTE(A1,MOD(ROW($2:$11)-{1,2,0},11)-1,)),{9;1;1},这里的{9;1;1}改为{10;1;1}更合理,当初为了少个字符。首先保证这个数存在,与9相乘的数要么3,要么2,要是3的话,说明这个数前后孤立,前后长度相加是6,9*3+4+4=35,要是2的话,说明至少前后连续一个数,9*2+3+4=24,9*2+3+3=24,总共这三种情况,穷举法,判断好这些数之后,就替换了。
从小作文不好,写得可能不清楚,大家见谅。 |
|