ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: wkbu

[讨论]谁的代码最短

[复制链接]

TA的精华主题

TA的得分主题

发表于 2008-9-18 21:27 | 显示全部楼层

试了下chrisfang  27楼的公式,去掉"&0"好象也正确:(54字符)

=MID(A1,ABS(SUM(MOD(LEFT(A1,{1,2,3}),2)*{5,2,1})-4),1)

TA的精华主题

TA的得分主题

发表于 2008-9-18 23:56 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
QUOTE:
以下是引用kartbird在2008-9-18 21:27:00的发言:

试了下chrisfang  27楼的公式,去掉"&0"好象也正确:(54字符)

=MID(A1,ABS(SUM(MOD(LEFT(A1,{1,2,3}),2)*{5,2,1})-4),1)

牛,顶一下,再献花.

*{5,2,1}的思路还没真正明白,请详细解释一下.

[em23][em23][em23][em23]

TA的精华主题

TA的得分主题

发表于 2008-9-19 00:00 | 显示全部楼层
QUOTE:
以下是引用kartbird在2008-9-18 21:27:00的发言:

试了下chrisfang  27楼的公式,去掉"&0"好象也正确:(54字符)

=MID(A1,ABS(SUM(MOD(LEFT(A1,{1,2,3}),2)*{5,2,1})-4),1)

去掉0 空白单元格出错。

TA的精华主题

TA的得分主题

发表于 2008-9-19 09:52 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
QUOTE:
以下是引用kartbird在2008-9-18 21:27:00的发言:

试了下chrisfang  27楼的公式,去掉"&0"好象也正确:(54字符)

=MID(A1,ABS(SUM(MOD(LEFT(A1,{1,2,3}),2)*{5,2,1})-4),1)

“&0”是为了适应A列为空白单元格的情况,15楼以后的公式都是以此为讨论基础。简化公式应以理解公式为前提。

TA的精华主题

TA的得分主题

发表于 2008-9-19 10:01 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
QUOTE:
以下是引用wshcw在2008-9-18 23:56:00的发言:

*{5,2,1}的思路还没真正明白,请详细解释一下.

*{4,2,1}是借用了2进制的做法,000~111可分别转化为0~7。

wddn用的*{3,2,1}是2进制的思路演进变形,000~111转换后为0~6,其中以3为绝对值的转换点,缩减掉了原公式中3.5的小数部分。

我最后的公式用*{5,2,1}实质上也是这种演进变形的一种方式,1、2、5这三个数字很眼熟是吧?钞票一般都只有这三种面额,这就是这3个数字的神奇之处。000~111转换后为0~8,其中包含了断点4,可以直接减4取绝对值,不再需要对mid的第二参数做进位调整,因此再省下两个字符。

TA的精华主题

TA的得分主题

发表于 2008-9-19 10:40 | 显示全部楼层

昨天看了版主19楼的公式,在一片惊叹声中,以为不可能再砍了,临近下班时,看出了一点端倪,匆忙修改后,不及全面测试就发了上来,准备晚饭后再看看。

没有想到,修改是成功了,可版主另有高招,又砍去了2个字符,第一才子果然技高一筹,佩服!

TA的精华主题

TA的得分主题

发表于 2008-9-19 14:28 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
QUOTE:
以下是引用fdd在2008-9-18 20:40:00的发言:
短有何用?高效即可!

说得好。“短”不是目的,而是手段。

评价公式质量的标准可能有很多,“高效”肯定是其中重要的一种评价标准。但函数公式的“效率”在很多时候很难用常规的方法得以具体衡量。就好比减肥,真正成功的减肥应该是该大的地方大,该小的地方小,减成柴火棍的模样肯定不会有人喜欢,但事实上,这样的形态标准不方便实际来衡量,因此大多数情况下还是用减轻的体重量来作为减肥质量的评价标准。现在作为函数公式也存在相同的问题,效率当然很重要,但很难实际衡量,而公式长短一眼就能看出来,因此现在常常被拿来作为比较对象。

记得我刚来论坛一个星期的时候,参与了第一道竞赛题http://club.excelhome.net/dispbbs.asp?boardid=102&replyid=341289&id=155737&page=1&skin=0&Star=1(这道题也是吸引我来EH注册的主要原因之一),拿到了来此论坛的最初几分。记得那道题的出题者要求——“使用最少的判断次数”,这也是一种评价公式的方式之一。那道题也引出关于评价公式优劣的一段讨论,当时我写下了这么一句话:

公式的优劣并不完全在于公式的长短或是使用判断的多少,而是在于含义结构的清晰、对问题分析归纳的彻底以及对现有函数尽可能简单的应用。

当时写下这句话的时候可能我对函数公式的认识还是比较有限,但到今天来看,这句话还是有一定积极意义的。但是这句话中所提到的几个评价标准也很难实际来考量,因此从目前的手段来看,看公式长度也是一种不错的方法之一。也许在将来,我们大伙也可以找到其他更好的判别手段来。

这是其一。

其二,缩短公式、简化公式主要锻炼的是使用者的解题思路。

对于精简公式来说,使用相关的函数技巧例如省略函数参数、把*100用/1%来代替、能够相对引用就不使用绝对引用等等只是其中相对比较简单的手段之一,而真正能起大作用的是解题的思路,精简公式能够丰富和锻炼公式编写者的解题思路,也特别考验编写者的思路和想法。

从这道题来说,不同的思路也许只是120个字符和60个字符的区别,但是对于其他的某个题目来说,不同的思路也许就是有解和无解的分界点。说到底,写函数公式确实需要你对某一个或很多个函数用法有清楚的了解,但更重要的是你对整个题目有战略高度的思路认识。真正对函数公式开窍的人,不会去做函数公式的收集者,不会看到问题就想着怎么才能解答,而是应该看到问题就想到了无数条通往胜利之门的道路,有选择其中最理想道路的能力或者有一一去尝试每条道路的能力。

积分榜暂时第一并不能说明什么问题,第一名永远只是未达到的目标,这里有许多人的技能和水平令我景仰值得我学习,更何况天外还有天。函数公式学习需要不断实践努力,不进则退。写书那段时间很少做题,脑袋马上就僵化了。以上这些心得体会希望能与大家分享。

 

这道题中所用的二进制转换思路我在以前也用过,是给公司内部同事做的一个文件,有兴趣的可以看一下:

izXGjgOl.rar (8.5 KB, 下载次数: 26)

TA的精华主题

TA的得分主题

发表于 2008-9-19 17:26 | 显示全部楼层
QUOTE:
以下是引用chrisfang在2008-9-19 14:28:00的发言:

说得好。“短”不是目的,而是手段。

评价公式质量的标准可能有很多,“高效”肯定是其中重要的一种评价标准。但函数公式的“效率”在很多时候很难用常规的方法得以具体衡量。就好比减肥,真正成功的减肥应该是该大的地方大,该小的地方小,减成柴火棍的模样肯定不会有人喜欢,但事实上,这样的形态标准不方便实际来衡量,因此大多数情况下还是用减轻的体重量来作为减肥质量的评价标准。现在作为函数公式也存在相同的问题,效率当然很重要,但很难实际衡量,而公式长短一眼就能看出来,因此现在常常被拿来作为比较对象。

很感谢你的赐教!其实很赞同你的观点!

之前写下:短有何用,高效即可!实在是看帖子时有感而发。我是一个新手,也就是今年的暑假才进入这个论坛;关于EXCEL函数的使用,不是我的职业,纯属爱好!进入论坛,我就发现:……公式,……个字符!……蔚然成风!其实我明白,作为训练和练习,以“最少字符写公式……”确是一个不错的方法,本人也是在论坛上“竞赛题”(因为竞赛题老是以“字符”多少作为衡量的重要指标)上收获很多。时常惊叹高手们的巧妙构思和渊博的知识。虽然自己依然是一个新手!

那天看到此贴的跟贴里(其实我根本就没仔细看,题目的内容我都没看)在为着共同的目的:减少字符而忙碌着!我知道这里的跟贴里有些是“令人惊叹”的!(因为思路的改变,公式变得更加精炼简短)我打心眼里佩服!如果没记错的话,前段时间出现帖子:文本中提取金额。chrisfang兄的公式就令人惊叹,至今难忘啊!但我也发现,有些公式的精简就显得毫无价值:字符虽然减少了,但它的功能和效率却并没有因此增加或提高!这样的公式精简,个人觉得价值真的不大;如果更是以字符长短为终极目标,尤其不可取!那天想到这儿,就写下那句话,并无其它意思!不记得哪天曾经看到版主 山菊花 有一段话,原话不记得了,大概是:训练题目要与实际相结合!我非常赞同这样的观点!

这个论坛真的非常不错,人人都乐于帮助别人!我甚至幻想:要是我们的社会中人与人的关系都是这样,那就太美好了(我知道纯属幻想)!来到这样,我才明白以前我是多么的孤陋寡闻、知识浅薄!感谢这个论坛给我的进步!

严重声明:“ 精简公式,减少字符”这种方式并非完全不可取,我只是觉得不要以此为目标,而应以此为手段,找出巧妙的思路、高效的运算和一些机敏的设计而已!

[此贴子已经被作者于2008-9-19 18:54:24编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-9-19 20:52 | 显示全部楼层
看了上面的贴子受益颇丰,除了函数的认识之外又增加了对函数之外一些理念的认识。感谢EXCELhome这个平台,也感谢各位同仁,到了这里感觉学习也成了乐趣,到了这里会时时感受着互相帮助,感受着像师长、兄弟般浓浓的深情,代码之外是朴实无华的奉献。这个论坛既是新人的摇篮,也是老同志的充电站,经常“回家”看看的感觉总是不错,同时我也在思考一个问题,不一定非要局限在解决某个问题才来上边求教,我感觉有时提出几个有创意的问题对提高函数运用技能和函数深层次的理解也是一种促进,发此小贴,与各位共勉。

TA的精华主题

TA的得分主题

发表于 2008-9-20 22:04 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

感觉学到的已经超出了EXCEL,谢谢各位

常回家看看,回家看看。。。。。。。

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

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-12-4 16:35 , Processed in 0.060308 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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