ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

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

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2006-6-11 22:46 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2006-6-12 02:10 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2006-6-12 05:11 | 显示全部楼层

TA的精华主题

TA的得分主题

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

老兄,能否帮忙给我的函数优化一下。

XWzYXAa7.rar (21.94 KB, 下载次数: 79)

TA的精华主题

TA的得分主题

发表于 2006-6-12 11:34 | 显示全部楼层

用Sumproduct的简化:

=SUMPRODUCT((Sheet1!$J$5:$J$10=$D5)*(Sheet1!$I$5:$I$10=$B$2)*(MONTH(Sheet1!$C$5:$C$10)&"月"=$B$3)*Sheet1!$H$5:$H$10)

用MMult多单元格数组公式的简化(选择E5:E362,输入下面公式并按下Ctrl+shift+enter结束)

=MMULT(--(TRANSPOSE(Sheet1!J5:J10)=D5:D362),(Sheet1!I5:I10=B2)*(MONTH(Sheet1!C5:C10)&"月"=B3)*Sheet1!$H$5:$H$10)

如果B3不是5月而是数字5,自定义格式为:0月,则MONTH(Sheet1!C5:C10)&"月"=B3可以改为MONTH(Sheet1!C5:C10)=B3——建议如此改动减少运算。

TA的精华主题

TA的得分主题

发表于 2006-6-12 11:42 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
不错的方法!!

TA的精华主题

TA的得分主题

发表于 2006-6-12 11:58 | 显示全部楼层

在四海兄这个帖子的挖掘下,不少MMULT的用法渐渐明朗了,不过有时也不要盲目地用,我就出了这个问题,舍近求远了。呵呵,给个链接让大家借鉴一下。

多条件求和SUMIF也可以的:

http://club.excelhome.net/viewthread.php?tid=171508&px=0

这个教训是——思路不能太过局限,不是一个好的方法在任何情况都能发挥最好。

另外,Sumif的多条件求和在开放式竞赛本人出过一题,可参考

http://club.excelhome.net/viewthread.php?tid=155770&px=0

或者多条件数组在Sumif、Countif中的应用

http://club.excelhome.net/viewthread.php?tid=155774&replyID=&skin=0

希望大家能区分实际情况来应用。

TA的精华主题

TA的得分主题

发表于 2006-6-12 20:34 | 显示全部楼层
回楼上,不错。很久没有用函数了。对它有很大的陌生了。希望有更多的原创的,新颖的东西。期待中,另:关于MMULT()我昨天说的。一时有些忘记。这个问题,MMULT(),陈军和AP是最拿手的。关于它的一些东西。还是让这两位老大来说吧:)

TA的精华主题

TA的得分主题

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

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

首先感谢四海兄的分享,确实MMULT函数有很多用法,但是对于楼主的问题,是对Sum(或Sumproduct)多条件求和的变形解法,想法不错,不过我对此有一点看法: 1、大家是否想过,对于这种问题用Mmult来解,有个共同点是有些列必须用Transpose来进行转置,楼主说MMULT速度会比SUMPRODUCT快,可能未必,因为这时公式中除了Mmult的造成矩阵运算外,无形中还加入了Transpose的运算(这个函数也是一个耗内存大户,很有可能造成内存不足); 我做了一个简单测试,在实例2中,将运算公式加大到2000行,对于明细数据增加到(1000行),使用Sumproduct运算了13秒;而用Mmult则运算了19秒;重新更新数据,明细数据增加到(3000行),,Sumproduct运算了65秒;而用Mmult则运算了78秒。 2、从原来介绍的Sumprodct((条件)*(条件),求和值)的公式中,我们可以对求和值中存在文本情况进行过滤,但用Mmult函数则不行,当然在这里我们谈速度,就不讨论这个问题了。 3、另外从Mmult函数本身来说,函数限制了矩阵尺寸大小,记得应该是32768行(具体值可能有误差),如果超出系统则出现错误,但不知在后面的Office2007是否有优化,但目前Sum(Sumproduct)函数应该没有这类限制。当然,如果数据已经达到上万行,我们也不可能再用Excel来进行运算了。 如果数据量小,我们是可以用Mmult来代替运算,也是一种解法,有兴趣的朋友可以具体做下大数据量的测试,大家共同讨论。谢谢!

TA的精华主题

TA的得分主题

发表于 2006-6-17 00:47 | 显示全部楼层

学习一下!

[em25][em26][em23][em22]
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

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

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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