ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 请大家帮我把此公式简化一下。谢谢。

[复制链接]

TA的精华主题

TA的得分主题

发表于 2010-9-19 09:02 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
《长公式是怎样炼成的》作者:xw8858

TA的精华主题

TA的得分主题

发表于 2010-9-19 14:08 | 显示全部楼层
闲来无事,我试着优化了下,最后的公式长度是147字符(大头老师说的,公式超过150字符就失败了)
D33=MOD(SUMPRODUCT(COUNTIF(D$9:D$30,INDIRECT(D$7&"!1:1"))*OFFSET(INDIRECT(D$7&"!1:1"),MATCH($C33,INDIRECT(D$7&"!A:A"),)-1,))+E$8-1,IF(D$1="杀码",49,12))+1

[ 本帖最后由 amarantine 于 2010-9-19 14:10 编辑 ]

TA的精华主题

TA的得分主题

发表于 2010-9-19 14:20 | 显示全部楼层
第二步是优化大公式里面的第二个IF,IF(D$1="杀码",MOD(小小公式,49),MOD(小小公式,12)),当D$1等于"杀码"是,返回小小公式除以49的余数,否则返回小小公式除以12的余数。配合我说的第一步这里可以优化成=MOD(小小公式-1,IF(D$1="杀码",49,12))+1

TA的精华主题

TA的得分主题

发表于 2010-9-19 14:15 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
下面是优化过程:
首先大公式是个简单IF判断语句,D33大公式=IF(MOD(小公式,49)=0,49,MOD(小公式,49)),意思就是当小公式能被49整除的话,返回49,否则返回小公式除以49的余数。这里可以简化成=MOD(小公式-1,49)+1,公式直接砍掉一半长度。

[ 本帖最后由 amarantine 于 2010-9-19 14:28 编辑 ]

TA的精华主题

TA的得分主题

发表于 2010-9-19 14:27 | 显示全部楼层
第三步就是优化小小公式了,这里的小小公式本身很好理解,就是返回每期每个条件的值的和,这里有多达22个条件,楼主这里是一个一个去计算然后相加。用了22个OFFSET+MATCH组合,所以公式超长。多条件求和用SUMPRODUCT就可以解决:SUMPRODUCT(COUNTIF(D$9:D$30,INDIRECT(D$7&"!1:1"))*OFFSET(INDIRECT(D$7&"!1:1"),MATCH($C33,INDIRECT(D$7&"!A:A"),)-1,))。最后得到D33=MOD(SUMPRODUCT(COUNTIF(D$9:D$30,INDIRECT(D$7&"!1:1"))*OFFSET(INDIRECT(D$7&"!1:1"),MATCH($C33,INDIRECT(D$7&"!A:A"),)-1,))+E$8-1,IF(D$1="杀码",49,12))+1
红色是第一步说的优化,蓝色是第二步,绿色是第三步

[ 本帖最后由 amarantine 于 2010-9-19 15:18 编辑 ]

TA的精华主题

TA的得分主题

发表于 2010-9-19 15:09 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

回复 35楼 amarantine 的帖子

你太强大了,7000多字符,看都懒得看啊! 佩服佩服!

TA的精华主题

TA的得分主题

发表于 2010-9-19 15:10 | 显示全部楼层
观止矣,若有他“式”,吾不敢请已。

TA的精华主题

TA的得分主题

发表于 2010-9-19 15:29 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
原帖由 piny 于 2010-9-19 15:25 发表
佩服不已 毅力可嘉 ^^

周末上班无事打发下时间。上午做那个正式竞赛题(时间之差)搞得我头大,做了一上午还是220字符,郁闷!

TA的精华主题

TA的得分主题

发表于 2010-9-19 15:25 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

回复 35楼 amarantine 的帖子

佩服不已 毅力可嘉 ^^

TA的精华主题

TA的得分主题

发表于 2010-9-19 16:59 | 显示全部楼层
再减2字符,146字符
D33=MOD(SUMPRODUCT(COUNTIF(D$9:D$30,INDIRECT(D$7&"!1:1"))*OFFSET(INDIRECT(D$7&"!1:1"),MATCH($C33,INDIRECT(D$7&"!A:A"),)-1,))+E$8-1,(D$1="杀码")*37+12)+1
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-22 03:58 , Processed in 0.045429 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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