Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 3797|回复: 14

【竞赛题】——提取不存在的数字

[复制链接]
发表于 2013-4-3 16:55 | 显示全部楼层 |阅读模式
本帖最后由 JLxiangwei 于 2013-4-19 13:21 编辑

本题目根据论坛网友提问改编,原帖地址:http://www.excelpx.com/forum.php?mod=viewthread&tid=298395

【题目说明】:
     1、项目一和项目二为0-9的数字,数字个数不定(最多不超过10个),分别用逗号隔开;
     2、项目一和项目二中的数字不存在重复值,
           如:A2是“1,2,0,4,5,6”,里面数字唯一,不会出现两个或两个以上相同的数字;
     3、项目一中的数字在项目二中存在的,就剔除,如结果列所示
           如:A2中数字1和5在项目二中存在,所以剔除后的结果为:2,0,4,6
     4、项目一中的数字在项目2中至少有一个数字不存在;
     5、返回结果的数字顺序以项目一中数字出现的先后顺序排列,并以逗号分隔;
     6、请用函数作答,不用辅助列,不得定义名称,不得使用VBA.
【奖励规则】:
     1、答案正确的奖励20BB,20经验;
     2、解题思路巧妙的另外加10BB,10经验;
     3、字符最短的另外奖励30BB,30经验。
【答题时间】:
     2013年4月4日-2013年4月18日



感谢各位高手前来捧场,根据目前答题情况,说明一下,如果大家答题函数能通用就最好了
1、不同版本excel测试能通过。
2、函数能容错。
     a、考虑项目二如果为一个数字或者为空的时候;
     b、项目一中如果有0,0的位置不固定,可能在最前,中间,结尾都可以。

欢迎大家继续挑战,突破目前公式最短169字符。

================================================================
感谢各位参与,下面我把评分结果和答案汇总发上来,便于大家学习。
如对评分结果有异议,请联系我






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-4-3 18:49 | 显示全部楼层
本帖最后由 尛ぃ謉 于 2013-4-11 11:43 编辑

原公式没考虑空或没逗号的结果
加点字符
  1. =TEXT(SUM(IFERROR(MID(A2,LARGE(IF(ISERR(FIND(MID(A2,ROW($1:20),1),B2&",")),ROW($1:20)),ROW($1:20)),1)*10^ROW($1:20)/10,0)),REPT("0!,",SUM(--ISERR(FIND(MID(A2,ROW($1:20),1),B2&",")))-1)&0)
复制代码
  1. =TEXT(SUM(IFERROR(MID(A2,LARGE(IF(ISERR(FIND(MID(A2,ROW($1:20),1),B2&",")),ROW($1:20)),ROW(A:A)),1)*10^ROW(A:A)/10,)),REPT("0!,",19-COUNT(FIND(MID(A2,ROW($1:$20),1),B2&",")))&0)
复制代码
还是不想了   绕来绕去    又回原点

点评

很给力,但是版本不通用  发表于 2013-4-19 12:48

评分

参与人数 1 +25 金币 +25 收起 理由
JLxiangwei + 25 + 25

查看全部评分

回复

使用道具 举报

发表于 2013-4-3 20:07 | 显示全部楼层
本帖最后由 wlc52011300 于 2013-4-9 20:17 编辑

占个位置



超长的
1,=LEFT(TEXT(SUM(MID(A2,SMALL(IF(NOT(ISNUMBER(FIND(MID(A2,ROW($1:$10)*2-1,1),B2))),ROW($1:$10)*2-1,99),ROW(INDIRECT("1:"&(10-COUNT((FIND(MID(A2,ROW($1:$10)*2-1,1),B2))))))),1)*10^((10-COUNT((FIND(MID(A2,ROW($1:$10)*2-1,1),B2))))-ROW(INDIRECT("1:"&(10-COUNT((FIND(MID(A2,ROW($1:$10)*2-1,1),B2)))))))),REPT("0!,",(10-COUNT((FIND(MID(A2,ROW($1:$10)*2-1,1),B2)))))),(10-COUNT((FIND(MID(A2,ROW($1:$10)*2-1,1),B2))))*2-1)

2,=LEFT(RIGHT(TEXT(LEFT(SUM(--TEXT(MID(A2,SMALL(IF(NOT(ISNUMBER(FIND(MID(A2,ROW($1:$10)*2-1,1),B2))),ROW($1:$10)*2-1,99),ROW($1:$10)),1),"0;;0;!0")*10^(10-ROW($1:$10))),10-COUNT((FIND(MID(A2,ROW($1:$10)*2-1,1),B2)))),REPT("0!,",10)),(10-COUNT((FIND(MID(A2,ROW($1:$10)*2-1,1),B2))))*2),(10-COUNT((FIND(MID(A2,ROW($1:$10)*2-1,1),B2))))*2-1)

3,=SUBSTITUTE(TEXT(SUM(TEXT(MID(A2,SMALL(IF(ISERR(FIND(MID(A2,ROW($1:$10)*2-1,1),B2)),ROW($1:$10)*2-1,99),ROW($1:$10)),1),"0;;0;!0")*10^(10-ROW($1:$10))),REPT("0!,",10)),","&REPT("0,",COUNT(FIND(MID(A2,ROW($1:$10)*2-1,1),B2))),)

=TEXT(SUM(MID(A2&REPT(0,99),TEXT(SMALL(ISERR(FIND(MID(A2,ROW($1:$10)*2-1,1),B2))*(ROW($1:$10)*2-1),ROW($1:$10)),"0;0;99"),1)*10^(10-ROW($1:$10))),REPT("0!,",9-COUNT(FIND(MID(A2,ROW($1:$10)*2-1,1),B2)))&0)
数组

不包含“=”168字符
=TEXT(SUM(MID(0&A2,SMALL(ISERR(FIND(MID(A2,ROW($1:$20),1),B2))*ROW($1:$20),ROW($1:$20))+1,1)*10^(20-ROW($1:$20))),REPT("0!,",19-COUNT(FIND(MID(A2,ROW($1:$20),1),B2)))&0)
数组


点评

简化历程够艰辛的阿,前四个公式03版测试不通过,公式二当0为项目一的第一个数字时错误,公式三当0为项目一的最后一个数字时错误。公式五当项目二为一个数字和为空时错误  发表于 2013-4-19 12:55

评分

参与人数 2 +28 金币 +25 收起 理由
JLxiangwei + 25 + 25 很给力!
笨笨四 + 3 V587

查看全部评分

回复

使用道具 举报

发表于 2013-4-3 21:37 | 显示全部楼层
只会想比较复杂点的
  1. =RIGHT(TEXT(SUM(MID(0&A2,LARGE((1-COUNTIF(B2,"*"&MID(A2,ROW($1:19),1)&"*"))*ROW($1:19),ROW($1:9))+1,1)*10^ROW($2:10))%,REPT("\,0",9)),37-2*COUNT(FIND(MID(A2,ROW($1:$19),1),B2)))
复制代码

点评

当项目二为一个数字和为空时出现错误,评分在7楼  发表于 2013-4-19 12:56
回复

使用道具 举报

发表于 2013-4-3 21:51 | 显示全部楼层
  1. =TEXT(SUM(MID(0&A2,LARGE(ISERR(FIND(MID(A2,ROW($1:20),1),B2&","))*ROW($1:20)+1,ROW($1:20)),1)*10^ROW($2:21))%,REPT("0!,",19-COUNT(FIND(MID(A2,ROW($1:$20),1),B2&",")))&0)
复制代码

评分

参与人数 1 +60 金币 +60 收起 理由
过儿 + 60 + 60 很给力!

查看全部评分

回复

使用道具 举报

发表于 2013-4-3 22:07 | 显示全部楼层
人笨就勤快点   =MID(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(","&A2,MID(","&B2,1,2),),MID(B2,2,2),),MID(B2,4,2),),MID(B2,6,2),),MID(B2,8,2),),MID(B2,10,2),),MID(B2,12,2),),MID(B2,14,2),),MID(B2,16,2),),2,99)

点评

03测试不通过,当项目二为空时结果错误。9个SUBSTITUTE和MID组合,帅得掉渣  发表于 2013-4-19 12:59

评分

参与人数 1 +20 金币 +20 收起 理由
JLxiangwei + 20 + 20

查看全部评分

回复

使用道具 举报

发表于 2013-4-4 15:08 | 显示全部楼层
  1. =TEXT(SUM(MID(0&A2,LARGE((1-COUNTIF(B2,"*"&MID(A2,ROW($1:19),1)&"*"))*ROW($1:19),ROW($1:9))+1,1)*10^ROW($2:10))%,0&REPT("\,0",18-COUNT(FIND(MID(A2,ROW($1:$19),1),B2))))
复制代码
简化掉几个字母

评分

参与人数 1 +25 金币 +25 收起 理由
JLxiangwei + 25 + 25 很给力!

查看全部评分

回复

使用道具 举报

发表于 2013-4-5 08:17 | 显示全部楼层
本帖最后由 顺⑦.zì繎。 于 2013-4-10 07:12 编辑
  1. =TEXT(SUM(10^ROW($1:9)*RIGHT(SMALL(-IF(ISERR(FIND(MID(A2,2*ROW($1:9)-1,1),B2)),ROW($1:9)&MID(A2,2*ROW($1:9)-1,1)),ROW($1:9))))/10,REPT("0!,",8-COUNT(FIND(MID(A2,2*ROW($1:$9)-1,1),B2)))&0)
复制代码
实在想不出来了{:3712:}

点评

03版本测试不通过。  发表于 2013-4-19 13:01

评分

参与人数 1 +25 金币 +25 收起 理由
JLxiangwei + 25 + 25 很给力!

查看全部评分

回复

使用道具 举报

发表于 2013-4-10 22:44 | 显示全部楼层
先占位提交答案吧,190字符:
  1. =TEXT(SUM(MID(0&A2,LARGE((ROW($1:10)*2)^ISERR(0/FIND(MID(A2,ROW($1:10)*2-1,1),"@"&B2)>1),ROW($1:10)),1)*10^ROW($2:11))%,REPT("0!,",LEN(A2)/2-SUM(N(COUNTIF(A2:B2,"*"&ROW($1:10)-1&"*")=2)))&0)
复制代码

点评

当项目二为一个数字时出错  发表于 2013-4-19 13:03

评分

参与人数 1 +25 金币 +25 收起 理由
JLxiangwei + 25 + 25 很给力!

查看全部评分

回复

使用道具 举报

发表于 2013-4-11 10:23 | 显示全部楼层
本帖最后由 lisachen 于 2013-4-18 15:47 编辑
  1. =TEXT(MID(SUM(MID(A2&REPT("0",19),SMALL(IF(ISERR(FIND(MID(A2,ROW($1:19),1),B2&",")),ROW($1:19),20),ROW($1:10)),1)/10^(ROW($1:10)))&"00",3,SUM(--ISERR(FIND(MID(A2,ROW($1:10)*2-1,1),B2)))),REPT("0!,",SUM(--ISERR(FIND(MID(A2,ROW($1:10)*2-1,1),B2)))-1)&"0")
复制代码
滥竽充数来了

点评

03版测试不通过  发表于 2013-4-19 13:04

评分

参与人数 1 +20 金币 +20 收起 理由
JLxiangwei + 20 + 20

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-29 05:11 , Processed in 0.208644 second(s), 22 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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