ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

EH搜索     
EH云课堂-专业的职场技能充电站 Excel转在线管理系统,怎么做看这里 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
Excel不给力? 何不试试FoxTable! Excel 2016函数公式学习大典 高效办公必会的Office实战技巧 免费下载Excel行业应用视频
300集Office 2010微视频教程 Tableau-数据可视化工具 精品推荐-800套精选PPT模板,点击获取 ExcelHome出品 - VBA代码宝免费下载
你的Excel 2010实战技巧学习锦囊 欲罢不能, 过目难忘的 Office 新界面 Excel VBA经典代码实践指南
查看: 100045|回复: 292

[原创]关于用SUMPRODUCT取代SUM数组公式的想法

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2004-3-11 19:22 | 显示全部楼层 |阅读模式
本帖已被收录到知识树中,索引项:SUMPRODUCT

大家用过数组公式的都可能知道,对于多条件求和或计数,我们一般都采用这种数组公式来计算。如:
对于1个明细数据(见例),我们需要求该班男、女生各科成绩大于各科平均分的人数,这个问题不难,大家一般都会用sum()来多条件求值就行了(注:数组公式):
=SUM(($C$3:$C$428=$K3)*(D$3:D$428>=AVERAGE(D$3:D$428)))

确实这是解决问题的一种方法,但往往对于初用数组公式的朋友常常会遗忘(或不知道)用(Ctrl+shift+Enter)组合键来结束编辑(论坛中常常有类似的提问)。

出于这个原因,我想到能否用SUMPRODUCT()函数来代替常用SUM()多条件求和公式呢?结果答案是肯定的。
把上面的公式稍做修改,请见:

=SUMProduct(($C$3:$C$428=$K3)*1,(D$3:D$428>=AVERAGE(D$3:D$428))*1)
而且直接用Enter来结束,函数仍然可以正确计算结果。

原因在于:SUMPRODUCT()函数本身就支持数组间运算(相同尺寸的数组相乘后再加总),因此我们毋须用数组公式组合键来结束。
另:提醒大家一点,如果大家试图将公式改为:

=SUMProduct(($C$3:$C$428=$K3),(D$3:D$428>=AVERAGE(D$3:D$428)))
公式不能得出正确结果。

如果多个条件这样并列写入,系统默认是用AND关系(即相乘)来运算,但是SUMPRODUCT不支持逻辑值数组常量间相乘(也算是小遗憾吧:)),因此请一定要将逻辑值转换成数值才行。
大家可能觉得麻烦,因此我建议使用缩写公式,实际上是将多个数组参数变为一个数组,也就可以避免不同维数数组间相乘而带来的错误麻烦了。

=SUMProduct(($C$3:$C$428=$K3)*(D$3:D$428>=AVERAGE(D$3:D$428)))
同理:我们如果需要求出所有男生中总分大于平均总分的所有总分,我们也可以用公式:
=SUMPRODUCT(($C$3:$C$428=$K13)*(I$3:I$428>=AVERAGE(I$3:I$428)),I$3:I$428)

如果数组尺寸(即行列数)相同,建议使用这种方法,如果直接相乘出现错误,可能是I列出现非数值字符,用逗号分隔后,系统可以自动忽略非数值型数据的。

对于条件求和的应用,大家可以结合下面的实例(又是借来的实例)来理解(但对于使用该函数,运算速度是否有提高,还待各位朋友验证),希望对大家有帮助,谢谢!
1LCtbsIi.zip (22.73 KB, 下载次数: 5850)

TA的精华主题

TA的得分主题

发表于 2004-3-11 19:31 | 显示全部楼层
多谢版主,收下好好研究。

TA的精华主题

TA的得分主题

发表于 2004-3-11 20:07 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2004-3-11 20:28 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2004-3-11 22:37 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2004-3-12 09:30 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2004-3-12 23:39 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2004-3-13 11:01 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2004-3-31 07:51 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2004-4-3 17:07 | 显示全部楼层
请问gdliyy兄,这个sumproduct函数与SUM的数组计算相比,哪个速度更快点。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

关注官方微信,高效办公专列,每天发车

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

GMT+8, 2019-8-25 21:52 , Processed in 0.161664 second(s), 19 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2020 Wooffice Inc.

   

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

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

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