Excel精英培训网

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

[字符争霸第五期]求各行各任意数字间最小间距[已开贴]

[复制链接]
发表于 2014-1-16 09:30 | 显示全部楼层 |阅读模式
本帖最后由 笨笨四 于 2014-1-27 10:09 编辑

您还在抱怨论坛的竞赛之题太少吗?
你还在惆怅自己的功力不能展示吗?
来参加字符争霸吧!
秀出你的高端!秀出你的大气!
展示你的奢华!再现你的魅力!
Let’s go!

字符争霸第5期:求各行各任意数字间最小间距
要求:
1.A2:G11区域为0~100的随机整数。
2.求各行各任意单元格之间数字的最小间距。
3.各行数据至少有1个,最多有7个
4.纯函数,I列为示例结果。 
5.答题截止时间:2014.1.26 18:00
字符争霸第4期链接:http://www.excelpx.com/thread-315623-1-3.html

总结贴:电梯直达38楼!
本期霸主:35楼笨熊猫,字符长度44
      榜眼:5楼CheryBTL、18楼vadera :字符长度46
    探花:
34楼suye1010 :字符长度47

本帖子中包含更多资源

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

x
发表于 2014-1-16 09:52 | 显示全部楼层
本帖最后由 1091126096 于 2014-1-19 08:18 编辑

沙发。先来一个
  1. =MIN(ABS(IF(ROW($1:$7)-COLUMN(A:G),IF(A2:G2<>"",TRANSPOSE(A2:G2)-A2:G2,9),9)))
复制代码
如果要考虑题中没有出现的其它数据,公式更长了:96字符,题目规定数据不大于100,也可精简为为82字符
  1. =MIN(ABS(IF(ROW($1:$7)-COLUMN(A:G),IF(A2:G2<>"",TRANSPOSE(A2:G2)-A2:G2,MAX(A2:G2)),MAX(A2:G2))))
  2. =MIN(ABS(IF(ROW($1:$7)-COLUMN(A:G),IF(A2:G2<>"",TRANSPOSE(A2:G2)-A2:G2,100),100)))
复制代码
65字符
  1. =SMALL(ABS(TRANSPOSE(A2:G2)-A2:G2)*(A2:G2<>""),50-6*COUNT(A2:G2))
复制代码

点评

公式有误,请参见38楼总结贴附件测试,感谢参与!  发表于 2014-1-27 09:16

评分

参与人数 1金币 +5 收起 理由
笨笨四 + 5 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2014-1-16 10:14 | 显示全部楼层
咨询版主,
空格算0吗?

点评

空格表示没有数字。  发表于 2014-1-16 10:17
回复

使用道具 举报

发表于 2014-1-16 10:16 | 显示全部楼层
  1. =MIN(FREQUENCY(ROW($1:$100),A2:G2))
复制代码
下拉完成

点评

公式有误,请参见38楼总结贴附件测试,感谢参与!  发表于 2014-1-27 09:16

评分

参与人数 1金币 +5 收起 理由
笨笨四 + 5 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2014-1-16 10:16 | 显示全部楼层
本帖最后由 CheryBTL 于 2014-1-20 14:46 编辑

重在参与
最简单的思路:
  1. =MIN(IF((ROW($1:$7)>COLUMN(A:G))*(A2:G2<>""),ABS(A2:G2-TRANSPOSE(A2:G2))))
复制代码
55字符:
  1. =MIN(FREQUENCY(ROW(A:A)-100,A2:G2))-(COUNT(A2:G2)=1)/1%
复制代码
46字符:
  1. =MIN(FREQUENCY(ROW(A:A)-100,A2:G2),SUM(A2:G2))
复制代码
引用整列,需要开启迭代,44字符:
  1. =MIN(FREQUENCY(ROW(A:A)-100,A2:G2),MAX(2:2))
复制代码

点评

BB25+JY25  发表于 2014-1-27 09:19
恭喜46字符通过测试。  发表于 2014-1-27 09:18
不支持迭代计算。  发表于 2014-1-22 07:48

评分

参与人数 3 +46 金币 +25 收起 理由
huangcaiguang + 15 很给力!
笨熊猫 + 6 赞一个!
顺⑦.zì繎。 + 25 + 25 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2014-1-16 10:20 | 显示全部楼层
本帖最后由 cleverzhzhf 于 2014-1-16 15:13 编辑

占位,先写一个,回头再优化,72字符:
  1. =IF(COUNTIF(A2:G2,0)>1,,MIN(--TEXT(A2:G2-TRANSPOSE(A2:G2),"0;111;111")))
复制代码
——————————分割线——————————————
之前的不严谨,换一下,91字符。
  1. =IF(OR(COUNTIF(A2:G2,A2:G2)>1,SUM(A2:G2)=0),,MIN(--TEXT(A2:G2-TRANSPOSE(A2:G2),"0;0;111")))
复制代码
这里text中,之所以用111不用99,是因为怕出现“0,100,空,空,空,空,空”的极端情况。
其他的任意三位数也都可以,只是如果使用100这种带有0的数字,容易出现歧义。
SUM(A2:G2)=0,是为了解决“0,空,空,空,空,空,空”的极端情况。

——————————分割线——————————————

用BOOL函数思想代替IF,精简一些,85字符。
  1. =AND(COUNTIF(A2:G2,A2:G2)<2,SUM(A2:G2))*MIN(--TEXT(A2:G2-TRANSPOSE(A2:G2),"0;0;111"))
复制代码

点评

公式有误,请参见38楼总结贴附件测试,感谢参与!  发表于 2014-1-27 09:21

评分

参与人数 1金币 +5 收起 理由
笨笨四 + 5 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2014-1-16 10:21 | 显示全部楼层
本帖最后由 wp8680 于 2014-1-16 10:49 编辑

不取巧的加二个字符。
  1. =MIN(FREQUENCY(ROW($1:$101)-1,A2:G2))
复制代码
也不对,好像,你们别看了,无可取处。

点评

公式有误,请参见38楼总结贴附件测试,感谢参与! 多楼层,BB已择优加。  发表于 2014-1-27 09:22
回复

使用道具 举报

发表于 2014-1-16 10:32 | 显示全部楼层
本帖最后由 xdragon 于 2014-1-16 11:37 编辑
  1. =MIN(ABS(IF(ROW($1:$7)<=TRANSPOSE(ROW($1:$7)),999,IF(A11:G11="",999,A11:G11-TRANSPOSE(A11:G11)))))
复制代码
参与一下

点评

公式有误,请参见38楼总结贴附件测试,感谢参与!  发表于 2014-1-27 09:22

评分

参与人数 1金币 +5 收起 理由
笨笨四 + 5 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2014-1-16 10:52 | 显示全部楼层
=IF(COUNTA(A2:G2)=1,MIN(A2:G2),IFERROR(MIN(IFERROR(SMALL($A2:$G2,ROW($1:$6)+1)-SMALL($A2:$G2,ROW($1:$6)),"")),MIN(A2:G2)))

点评

恭喜通过测试,公式正确。  发表于 2014-1-27 09:23

评分

参与人数 1金币 +10 收起 理由
笨笨四 + 10 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2014-1-16 10:58 | 显示全部楼层
本帖最后由 as0810114 于 2014-1-16 11:11 编辑

69的凑个热闹先
  1. =SMALL(ABS(A2:G2-TRANSPOSE(A2:G2)),50+COUNT(A2:G2)^2-13*COUNT(A2:G2))
复制代码

点评

公式有误,请参见38楼总结贴附件测试,感谢参与!  发表于 2014-1-27 09:23

评分

参与人数 1金币 +5 收起 理由
笨笨四 + 5 赞一个!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-19 06:38 , Processed in 0.360734 second(s), 21 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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