ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[转帖] Excel多条件求和 & SUMPRODUCT函数用法详解

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2010-12-19 23:57 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
[转]

Excel多条件求和 &  SUMPRODUCT函数用法详解

龙逸凡

日常工作中,我们经常要用到多条件求和,方法有多种,第一类:使用基本功能来实现。主要有:筛选、分类汇总、数据透视表、多条件求和向导;第二类:使用公式来实现方法。主要有:使用SUM函数编写的数组公式、联用SUMIF和辅助列(将多条件变为单条件)、使用SUMPRODUCT函数、使用SUMIFS函数(限于Excel2007及以上的版本),方法千差万别、效果各有千秋。本人更喜欢用SUMPRODUCT函数。由于Excel帮助对SUMPRODUCT函数的解释太简短了,与SUMPRODUCT函数的作用相比实在不匹配,为了更好地掌握该函数,特将其整理如下。

龙逸凡注:欢迎转贴,但请注明作者及出处。

一、         基本用法

在给定的几组数组中,将数组间对应的元素相乘,并返回乘积之和。

语法:

SUMPRODUCT(array1,array2,array3, ...)

Array1, array2, array3, ... 为 2 到 30 个数组,其相应元素需要进行相乘并求和。

公式:=SUMPRODUCT(A2:B4, C2:D4)

        A        B        C        D
1        Array 1        Array 1        Array 2        Array 2
2        3        4        2        7
3        8        6        6        7
4        1        9        5        3
                               

公式解释:两个数组的所有元素对应相乘,然后把乘积相加,即 3*2 + 4*7 + 8*6 + 6*7 + 1*5 + 9*3。计算结果为156

二、         扩展用法

1、   使用SUMPRODUCT进行多条件计数

语法:

=SUMPRODUCT((条件1)*(条件2)*(条件3)* …(条件n))

作用:

统计同时满足条件1、条件2到条件n的记录的个数。

实例:

=SUMPRODUCT((A2:A10="男")*(B2:B10="中级职称"))

公式解释:

统计性别为男性且职称为中级职称的职工的人数

2、   使用SUMPRODUCT进行多条件求和

语法:

=SUMPRODUCT((条件1)*(条件2)* (条件3) *…(条件n)*某区域)

作用:

汇总同时满足条件1、条件2到条件n的记录指定区域的汇总金额。

实例:

=SUMPRODUCT((A2:A10="男")*(B2:B10="中级职称")*C2:C10)

公式解释:

统计性别为男性且职称为中级职称的职工的工资总和(假设C列为工资)

三、         注意事项

1、数组参数必须具有相同的维数,否则,函数 SUMPRODUCT 将返回错误值 #VALUE!。

2、SUMPRODUCT函数将非数值型的数组元素作为 0 处理。

3、在SUMPRODUCT中,2003及以下版本不支持整列(行)引用,必须指明范围,不可在SUMPRODUCT函数使用A:A、B:B,Excel2007及以上版本可以整列(列)引用,但并不建议如此使用,公式计算速度慢。

4、SUMPRODUCT函数不支持“*”和“?”通配符

SUMPRODUCT函数不能象SUMIF、COUNTIF等函数一样使用“*”和“?”等通配符,要实现此功能可以用变通的方法,如使用LEFT、RIGHT、ISNUMBER(FIND())或ISNUMBER(SEARCH())等函数来实现通配符的功能。如:

=SUMPRODUCT((A2:A10="男")*(B2:B10="中级职称")*(LEFT(D2:D10,1)="龙")*C2:C10)

=SUMPRODUCT((A2:A10="男")*(B2:B10="中级职称")*((ISNUMBER(FIND("龙逸凡",D2:D10)))*C2:C10))

注:以上公式假设D列为职工姓名。ISNUMBER(FIND())、ISNUMBER(SEARCH())作用是实现“*”的通配功能,只是前者区分大小写,后者不区分大小写。

5、SUMPRODUCT函数多条件求和时使用“,”和“*”的区别:当拟求和的区域中无文本时两者无区别,当有文本时,使用“*”时会出错,返回错误值 #VALUE!,而使用“,”时SUMPRODUCT函数会将非数值型的数组元素作为 0 处理,故不会报错。 也就是说:

公式1:=SUMPRODUCT((A2:A10="男")*(B2:B10="中级职称")*C2:C10)

公式2:=SUMPRODUCT((A2:A10="男")*(B2:B10="中级职称"),C2:C10)

当C2:C10中全为数值时,两者计算结果一样,当C2:C10中有文本时公式1会返回错误值 #VALUE!,而公式2会返回忽略文本以后的结果。

四、         网友们的精彩实例

1、求指定区域的奇数列的数值之和

=SUMPRODUCT(MOD(COLUMN(A1:F1),2)*A1:F1)

2、求指定区域的偶数行的数值之和

=SUMPRODUCT(((MOD(ROW(A1:A22),2))-1)*A1:A22)*(-1)

3、求指定行中列号能被4整除的列的数值之和  

=SUMPRODUCT((MOD(COLUMN(A1:P1),4)=0)*A1:P1)

4、.求某数值列前三名分数之和

=SUMPRODUCT(LARGE(B1:B16,ROW(1:3)))

5、统计指定区域不重复记录的个数

=SUMPRODUCT(1/COUNTIF(V11:V15,V11:V15))

[ 本帖最后由 catyoung 于 2010-12-21 09:01 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-12-19 23:58 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
觉得对我很有用阿

TA的精华主题

TA的得分主题

发表于 2010-12-21 14:18 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2010-12-21 15:36 | 显示全部楼层
偏爱SUMPRODUCT函数,因为不用数组,像if一样,看着笨,用着强

TA的精华主题

TA的得分主题

发表于 2010-12-21 15:50 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-12-22 02:00 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
我也是觉得挺好用的

[ 本帖最后由 catyoung 于 2010-12-23 09:27 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-12-22 02:28 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
我也觉得不错

[ 本帖最后由 catyoung 于 2010-12-22 09:05 编辑 ]

TA的精华主题

TA的得分主题

发表于 2010-12-22 09:21 | 显示全部楼层
我的怎么不对呢?
我就是想计算名称为"牛奶"且生产日期为"10月1日"的数量,效仿那个计算性别为男且职称为中介职称的人数
可怎么不对呢
1.png

TA的精华主题

TA的得分主题

发表于 2010-12-22 09:39 | 显示全部楼层
帮大家把楼主的用法做成了EXCEL例子附件,供大家收藏对比。

Excel多条件求和SUMPRODUCT函数用法详解.rar

7.99 KB, 下载次数: 710

TA的精华主题

TA的得分主题

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

本版积分规则

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

GMT+8, 2024-11-16 15:45 , Processed in 0.043335 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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