条件求和,应该是Sumif、Sumifs以及Sumproduct的拿手好戏,专利,但在实际的办公和数据处理中,应用的人越来越少,那是因为他们掌握了更为好用的数据库函数Dsum。
一、功能及语法结构。
功能:计算满足条件的数据库中记录的字段(列)数据的和。
语法结构:=Dsum(数据区域,返回值的相对列,条件区域)。
解读:
1、用Dsum函数求和时,需要注意的是第1个参数“数据区域”和第3个参数“条件区域”必须包含有效的列标题,否则无法正常计算;也就是说:“数据区域”和“条件区域”是由列标题和数据或条件构成的多行区域。
2、第2个参数“返回值的相对列”有3种引用方式:
(1)可以直接是数字:如要计算相对范围中第5列的和值,此参数直接写成数字5即可;
(2)列标题单元格地址:如要计算相对范围中第5列的和值,第5列列标题的单元格地址为E3,此参数直接写成E3即可。
(3)列标题:如要计算相对范围中第5列的和值,第5列的列标题为“月薪”,此参数直接写成“月薪”即可。需要注意的时列标题必须用""(双引号)括起来,否则无法正确执行。
二、应用案例
1、单字段单条件求和。
目的:根据“学历”计算相应的“月薪”。
方法:
在目标单元格中输入公式:=DSUM(F2:G12,2,J2:J3)、=DSUM(F2:G12,"月薪",J2:J3)、=DSUM(F2:G12,G2,J2:J3)。
解读:
1、“数据区域”和“条件区域”中包含了列标题,数据范围是F2:G12、J2:J3,并不是F3:G12、J3,和平时使用的公式还是不同的,这个需要特别的注意。
2、对3个公式进行比较,唯一不同的就是第2个参数,可以是相对列数、列标题或者列标题的单元格地址,完全可以根据自己喜好进行选择使用!
2、单字段多条件求和。
目的:计算“学历”为“大本”和“大专”的总“月薪”。
方法:
在目标单元格中输入公式:=DSUM(B2:G12,6,J2:J4)。
解读:
1、首先提个问题,同样是计算“月薪”,为什么此公式中的第2个参数为6,而不是2?此参数除了6之外,还可以是什么?留言区告诉小编哦!
2、条件区域J2:J4中的字段包括“大本”和“大专”,这两者之间的关系为“和”、“或”的关系,可以理解为统计的时“大本”和“大专”的总“月薪”。
3、单字段是指只有一个条件,就是“学历”;多条件是指此字段下有“大本”、“大专”两个条件。当然还可以有更多的条件。
4、如果用Sumif或Sumifs函数去实现此功能,又改如何编写公式呢?
3、多字段单条件求和。
目的:计算相应“学历”下“已婚”或“未婚”人员的总“月薪”。
方法:
在目标单元格中输入公式:=DSUM(B2:G12,G2,J2:K3)。
解读:
1、问题:第2个参数除了是G2外,还可以怎么写?
2、多字段指有多个条件,例如此示例中的“学历”和“婚姻”,当然还可以增加其它条件,根据实际情况设置即可;单条件是指每个字段下面只能有一个条件,这两个条件之间是“并且”的关系,例如:计算“学历”为“大本”,并且“已婚”的人员“月薪”总和。
4、多字段多条件求和。
目的:计算相应“学历”下“已婚”或“未婚”的人员总“月薪”。
方法:
在目标单元格中输入公式:=DSUM(B2:G12,6,J2:K4)。
解读:
1、根据前面的示例,“多字段多条件”应该很好理解了,“多字段”就是有多个条件;“多条件”就是每个字段下面有多个值。
2、“字段”和“条件”之间的关系:同一行中的2个或多个值是“并且”的关系,例如“大本”和“已婚”,就是计算学历必须为“大本”,而且婚姻必须为“已婚”的,这2个条件必须成立的总“月薪”;但行与行之间的关系为“或”,这个是要特别注意的。
5、时间范围求和。
目的:计算9月份的销量。
方法:
在目标单元格中输入公式:=DSUM(B2:F12,"销量",I2:J3)。
解读:
第3个参数为I2:J3,但仔细观察标题均为“销售日期”,只是具体的值不同而已,也就是说:同一个列标题,可以多次作为“字段”出现。
6、数值区间求和。
目的:计算销量≥200,且<600的总销量。
方法:
在目标单元格中输入公式:=DSUM(B2:F12,D2,I2:J3)。
解读:
同一个列标题,可以多次作为“字段”出现。
7、用逻辑值作为条件字段。
目的1:计算9月份的总销量。
方法:
在目标单元格中输入:=DSUM(B2:F12,3,I2:I3)。
解读:
1、当逻辑值参与计算时,列标题为空,如本示例中的I2。
2、在条件区域编辑公式,如本示例中的:=MONTH(E3)=9。
目的2:计算高于平均销量的销量之和。
方法:
在目标单元格中输入公式:=DSUM(B2:F12,3,I2:I3)。
8、精准求和。
目的:计算“鼠标”的总销量。
方法:
在目标单元格中输入公式:=DSUM(B2:F12,3,I2:I3)。
解读:
条件区域中的条件为“=鼠标”,Why?不应该是“鼠标”么?此问题就涉及到精准匹配的问题,如果为“鼠标”,就是包含“鼠标”的所有字段都在计算范围内,而“=鼠标”就为精准匹配。所以字段有包含关系,而需要精准查询时,需要在字段的前面加上“=”(等号)。
最美尾巴:
本文从实际的案例中详细介绍了Dsum函数的应用技巧,相对于Sumif、Sumif等常规求和函数来说,还是有很多优势,尤其是区间计算时,显得尤为方便。
领取专属 10元无门槛券
私享最新 技术干货