Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
楼主: willin2000

[通知] [练习题]数字字符串系列- 1.求不重复.

[复制链接]
发表于 2008-4-16 20:54 | 显示全部楼层

也不知道积分是什么东东,怎么连版主也没有,已解除,但未看清题意,也没什么可看的了。[em04]
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
回复

使用道具 举报

发表于 2008-4-16 21:01 | 显示全部楼层

<p>=LEFT(IF(LEFT(A1)="0",0,)&amp;SUM(MID(A1&amp;REPT(0,10),LARGE(FIND(ROW($1:$10)-1,A1&amp;1234567890),ROW($1:$10)),1)*10^ROW($1:$10)),COUNT(FIND(ROW($1:$10)-1,A1)))</p><p>学习大师的IF部分,省去2个字符。</p>
回复

使用道具 举报

发表于 2008-4-16 21:16 | 显示全部楼层

<br/>学习一下,减到149<br/>=LEFT(TEXT(SUM(MID(A1&amp;1234567890,LARGE(FIND(ROW($1:$10)-1,A1&amp;1234567890),ROW($1:$10)),1)*10^(ROW($1:$10))),REPT(0,11)),COUNT(FIND(ROW($1:$10)-1,A1)))<br/>
回复

使用道具 举报

 楼主| 发表于 2008-4-16 21:50 | 显示全部楼层

<div class="msgheader">QUOTE:</div><div class="msgborder"><b>以下是引用<i>Luckyguy2008</i>在2008-4-16 21:16:00的发言:</b><br/><br/>学习一下,减到149<br/>=LEFT(TEXT(SUM(MID(A1&amp;1234567890,LARGE(FIND(ROW($1:$10)-1,A1&amp;1234567890),ROW($1:$10)),1)*10^<font color="#ff0000">(</font>ROW($1:$10)<font color="#ff0000">)</font>),REPT(0,11)),COUNT(FIND(ROW($1:$10)-1,A1)))<br/></div><p></p><p>[em17]</p><p>=LEFT(TEXT(SUM(MID(A1&amp;1234567890,LARGE(FIND(ROW($1:$10)-1,A1&amp;1234567890),ROW($1:$10)),1)*10^ROW($1:$10)),REPT(0,11)),COUNT(FIND(ROW($1:$10)-1,A1)))<br/></p><p>147个字符.</p><p>受10^ROW($1:$10)启发,及也发现多了一对括号,公式长度还可以优化至144个字符. 请大家继续探讨.</p>
[此贴子已经被作者于2008-4-16 22:23:13编辑过]
回复

使用道具 举报

发表于 2008-4-16 22:25 | 显示全部楼层

<p>148字符</p><p>=LEFT(IF(LEFT(A1)="0",0,)&amp;SUM((0&amp;MID(A1,SMALL(FIND(ROW($1:$10)-1,A1&amp;1234567890),ROW($1:$10)),1))*10^(10-ROW($1:$10))),COUNT(FIND(ROW($1:$10)-1,A1)))</p>
回复

使用道具 举报

发表于 2008-4-16 22:30 | 显示全部楼层

<p>143字符</p><p>=LEFT(IF(LEFT(A1)="0",0,)&amp;SUM((0&amp;MID(A1,LARGE(FIND(ROW($1:$10)-1,A1&amp;1234567890),ROW($1:$10)),1))*10^ROW($1:$10)),COUNT(FIND(ROW($1:$10)-1,A1)))</p>
[此贴子已经被作者于2008-4-16 22:30:20编辑过]
回复

使用道具 举报

发表于 2008-4-16 22:52 | 显示全部楼层

<p>COUNT(FIND(ROW($1:$10)-1,A1))这部分动不了了。</p><p>不知道IF(LEFT(A1)="0",0,)这部分还有没有办法再优化一下了。</p>
回复

使用道具 举报

发表于 2008-4-16 22:53 | 显示全部楼层

<p>也发一个好长的:213字符</p><p>=IF(LEFT(A1)="0",0,"")&amp;SUM(MID(A1,SMALL(FIND(ROW($1:$10)-1,A1&amp;1234567890),ROW(INDIRECT("1:"&amp;COUNT(FIND(ROW($1:$10)-1,A1))))),1)*10^(COUNT(FIND(ROW($1:$10)-1,A1))-ROW(INDIRECT("1:"&amp;COUNT(FIND(ROW($1:$10)-1,A1))))))</p>
回复

使用道具 举报

 楼主| 发表于 2008-4-16 23:28 | 显示全部楼层

<div class="msgheader">QUOTE:</div><div class="msgborder"><b>以下是引用<i>明天不上网</i>在2008-4-16 22:30:00的发言:</b><br/><p>143字符</p><p>=LEFT(IF(LEFT(A1)="0",0,)&amp;SUM((0&amp;MID(A1,LARGE(FIND(ROW($1:$10)-1,A1&amp;1234567890),ROW($1:$10)),1))*10^ROW($1:$10)),COUNT(FIND(ROW($1:$10)-1,A1)))</p><br/></div><p>正向思路中0&amp;MID用的好! 终于使正向取数比反向取数方案占了上风,反向取数方案似乎最少也要144个字符(期待后面有人用同样思路作144个字符公式). </p><p>而正向思路利用0&amp;MID,可以做到140个字符,不知是否可以更少了?</p>
[此贴子已经被作者于2008-4-16 23:29:28编辑过]
回复

使用道具 举报

发表于 2008-4-17 00:34 | 显示全部楼层

<p>=IF(LEFT(A1)="0",0,)&amp;TEXT(SUM(MID(0&amp;A1,LARGE(IF(ISERR(FIND(ROW($1:$10)-1,A1)),1,FIND(ROW($1:$10)-1,A1)+1),ROW($1:$10)),1)*10^(ROW($1:$10)-1)),"[&gt;0];")</p><p>150</p>
[此贴子已经被作者于2008-4-17 0:34:53编辑过]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-5 18:28 , Processed in 0.213038 second(s), 4 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表