楼主 Zaezhong |
Q:A列是一个任意的两位数,B列是要求最后结果的位数,要求A列数据连接"0123456789",但是要保证没有重复的数字,后面连接上去的数字按照从小到大的顺序排列,如A4为66,组成7位数后的结果为6012345,如何生成结果?
A:此题可以取巧,下面的公式不使用,采用直接计算的方式:- =RIGHT(A2&MID(0&SUBSTITUTE(SUM(ISERR(FIND(ROW($1:$10)-1,A2))*(ROW($1:$10)-1)*10^(10-ROW($1:$10))),0,),(RIGHT(A2)="0")+1,B2-2+(MOD(A2,11)=0)),B2)
去重补齐位数.rar |
2楼 bluexuemei |
A列为45,结果应该为450123678才对呀.为什么是450123679? |
3楼 wjc2090742 |
2楼的兄弟看的真细,截图有点小误,附件是正确的。
取巧下,直接的思路,2位数适用。
- =LEFT(LEFT(A2,2-(MOD(A2,11)=0))&SUBSTITUTE(SUBSTITUTE("0123456789",LEFT(A2),),RIGHT(A2),),B2)
|
4楼 bluexuemei |
- =LEFT(A2,2-(MOD(A2,11)=0))&LEFT(SUBSTITUTE(SUBSTITUTE("0123456789",LEFT(A2),),RIGHT(A2),),B2-2+(MOD(A2,11)=0))
|
5楼 piny |
再簡 91字元- =LEFT(A2/(1+10*(MOD(A2,11)=0))&SUBSTITUTE(SUBSTITUTE(0&123456789,RIGHT(A2),),LEFT(A2),),B2)
90字元- =LEFT(IF(MOD(A2,11),A2,A2/11)&SUBSTITUTE(SUBSTITUTE(0&123456789,RIGHT(A2),),LEFT(A2),),B2)
|
6楼 wjc2090742 |
好久没有遇到piny兄了,什么时候来申请ET的版主啊? replace可以稍微少2个字符。- =LEFT(IF(MOD(A2,11),A2,A2/11)&SUBSTITUTE(REPLACE(0&123456789,A2/10+1,1,),RIGHT(A2),),B2)
再换个思路- =LEFT(SUBSTITUTE(SUBSTITUTE(A2&"0123456789",LEFT(A2),,2),RIGHT(A2),,2),B2)
要是位数多了,还是不好这么一层一层的substitute套下去的,影子版所写到底是比较通用的呢 |