ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[推荐] [推荐]多条件求和的新方法

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2006-6-17 06:27 | 显示全部楼层

狗尾草糍粑斑竹:把多条件求和收集、整理一下,让我们大家学习。非常有用。可否,请批复。

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-6-17 09:05 | 显示全部楼层

以下是引用[I]gdliyy[/I]在2006-6-17 0:17:23的发言:

1、大家是否想过,对于这种问题用Mmult来解,有个共同点是有些列必须用Transpose来进行转置,楼主说MMULT速度会比SUMPRODUCT快,可能未必,因为这时公式中除了Mmult的造成矩阵运算外,无形中还加入了Transpose的运算(这个函数也是一个耗内存大户,很有可能造成内存不足);
我做了一个简单测试,在实例2中,将运算公式加大到2000行,对于明细数据增加到(1000行),使用Sumproduct运算了13秒;而用Mmult则运算了19秒;重新更新数据,明细数据增加到(3000行),,Sumproduct运算了65秒;而用Mmult则运算了78秒。

       我接触MMULT时间不长,还不大熟悉。感谢gdliyy版主的指点!

       用MMULT能否在大量公式的情况下取代SUMPRODUCT,确实还是一个值得讨论的问题,或者换句话说,现在还不能下定论。

       同意版主关于多了一个TRANSPOSE函数要多费时间的说法。

       但是在我发这个帖子之前,我已经做过了一些简单的测试,也在实际工作中所使用的表格上作了测试,总的结论如我在帖子中表达的那样:公式越多,速度的优势明显。这点和版主的测试结论不相同。同样是我帖子中的实例2,我的测试结果是在公式2000行,明细数据1000行的情况下,SUMPRODUCT:3.6秒;MMULT:1.3秒。我不知道为什么正好与版主数据相反。

       我想,TRANSPOSE虽然耗时间和内存,只要不出现内存不足的情况,在大量公式的情况下,其总的计算量应该是比SUMPRODUCT要小的。这是多单元格数组公式的特性使然。而在公式数量少的情况下,使用MMULT就远不如SUMPRODUCT了。比如,数据1000行,如果公式只有20行,则SUMPRODUCT时间为0.05秒,而MMULT公式还是1.3秒。

       再补充一个刚才的测试结果:对于顶楼帖子中的实例3,SUMPRODUCT的运行时间是1.5秒,而使用MMULT的时间是0.08秒。【SUMPRODUCT公式参见原帖,顶楼实例3中已给出链接】

       关于MMULT的限制,我找到了chenjun的一个帖子,里面有这个说法:

以下是引用[I]chenjun[/I]在2004-10-6 23:41:00的发言:
TRANSPOSE和MMULT函数对参数行的限制在2000版中是5461。

原帖链接:
http://club.excelhome.net/dispbbs.asp?boardid=1&replyid=276203&id=59645&page=1&skin=0&Star=4
      

我测试了一下,在XP版本中,TRSPOSE没有限制,也就是说可以用到65536。按理说,2003版应该也是这样吧?

[此贴子已经被czzqb于2007-10-6 11:02:03编辑过]

TA的精华主题

TA的得分主题

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

四海兄:你用的什么软件可以得到测试时间?我一直对速度觉得挺模糊的。

to 873721:多条件求和目前无外乎这几种: 1、sum(sumif)数组——多个条件在同一字段名的情况,请看:http://club.excelhome.net/dispbbs.asp?boardID=3&ID=171508&page=1&px=0或者其它帖子 2、sumif+&辅助列——用&将多个条件对应字段合并作辅助列,形成新的单字段条件求和,这个也挺常见的 3、sum(条件1*条件2*……*求和区域)数组或sumproduct普通公式,常见。 4、本帖的MMULT法。
[此贴子已经被作者于2006-6-18 10:08:57编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-6-18 10:16 | 显示全部楼层
测速度用VBA,论坛上有很多,我也不会写,就照搬。我这次用的是最近gvntw版主作的:http://club.excelhome.net/viewthread.php?tid=172101&replyID=&skin=0

TA的精华主题

TA的得分主题

发表于 2006-7-5 14:09 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2006-9-5 16:59 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2007-10-7 05:09 | 显示全部楼层

来这里主要是学习,所以看的多,回的少。各位老师见谅。

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

TA的精华主题

TA的得分主题

发表于 2007-10-7 17:11 | 显示全部楼层

[讨论]

太感谢了,太感谢了,这份快乐比啥都好!

TA的精华主题

TA的得分主题

发表于 2007-10-7 20:38 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
又学了一招,谢谢

TA的精华主题

TA的得分主题

发表于 2007-10-12 12:31 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-23 01:34 , Processed in 0.033090 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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