1.2.2 SUMIF()函数

1.2.1节讲了SUM()函数,我们讨论了SUM()函数除了基本求和功能外,还可以利用数组方式、函数嵌套方式进行有条件求和。本节利用SUMIF()函数根据指定条件对若干单元格求和,而无须采用数组方式。

请读者打开“配套光盘\第1章\xls\数学函数.xls”文件,单击进入“SUMIF”工作表,本工作表中有关于SUMIF函数的详细应用实例,结合本节内容一起操作一遍。

SUMIF()函数的功能与表达式如图1.30所示。

在该函数的说明中,如果忽略了sum_range,则对区域中的单元格求和。意思是该函数中的参数sum_range,根据求和区域的实际情况是可以省略的。事实上,即使是不该省略的sum_range,也可以简写,这一点用户要明白,因为很多Excel高手在写公式时,往往就简写,让初学者看起公式来一头雾水。如公式“=SUMIF(A1:A10,">0",C3)”,实际上就是公式“=SUMIF(A1:A10,">0",C3:C12)”的简写,其最终运算结果是一致的。

图1.30 SUMIF函数的功能与表达式

SUMIF()参数引用

(1)符合条件求和。

如图1.31所示,D21单元格的公式是:

      =SUMIF(C17:C20,"MP3",D17:D20)

条件判断区域是C17:C20,判断条件是C17:C20区域中的MP3产品,SUMIF()函数在D17:D20区域寻找MP3产品对应的数字,然后求和。

上述公式中的参数条件区域和求和区域范围是不一样的。如果要求对区域D17:D20中>200的数字求和,可设公式:

      =SUMIF(D17:D20,">200",D17:D20)

计算结果如图1.31所示的D22单元格中的数值,可见条件区域和求和区域是一致的。

(2)上述公式参数配备较为齐全。与上面的公式类似,下面看如图1.32所示的D29单元格公式:

      =SUMIF(C25:C28,"MP3",D25)

计算的结果正确,但求和区域参数仅仅是一个单元格名称D25。

上面这种情况,其实是SUMIF()函数的一种简写,参数D25的全称应该是D25:D28。简写后,函数根据条件区域C25:C28自动判断匹配求和区域D25:D28。

图1.31 参数齐全

图1.32 参数简写

函数求和区域的匹配情况有如下几种情况。

条件区域只明确列:

① SUMIF(A:A,">"&B1,C1) 相当于SUMIF(A:A,">"&B1,C:C)

提示

这里的求和条件">"&B1表示大于B1单元格中的数值,如B1=10,则求和条件可写成">10"。符号&在这里起到一个连接作用,将>号与B1中的数值连接起来。

② 条件区域明确一定的范围:

SUMIF(A1:A8,">"&B1,C1) 相当于SUMIF(A1:A8,">"&B1,C1:C8)

③ 条件区域与求和区域上错行:

SUMIF(A2:A9,">"&B1,C1) 相当于SUMIF(A2:A9,">"&B1,C1:C8)

④ 条件区域与求和区域下错行:

SUMIF(A1:A8,">"&B1,C2) 相当于SUMIF(A1:A8,">"&B1,C2:C9)

(3)在对单区域符合条件求和时,求和区域的参数可以省略。如图1.33所示,D36单元格公式:

      =SUMIF(D32:D35,">200")

这个公式是对区域D32:D35中>200的数字求和,公式中省略了求和区域参数。

图1.33 参数省略

示例一

本实例讲解的是相邻区域求和。

如图1.34所示,根据“销售额”进行判断,来对“佣金”进行求和。

E48单元格中的公式是:

      =SUMIF(C45:C48,">160000",D45:D48)

对“销售额”超过160000的单元格求佣金的和值。

这里所描述的相邻区域是条件区域和求和区域,仅有两列,是C45:C48和D45:D48,并且两列相邻在一起。

公式根据计算条件计算出来的佣金和值是63000。

图1.34 相邻区域求和

示例二

本实例讲解多相邻区域求和。

如图1.35所示,对品名1、品名2、品名3中分别有相同的电器产品,对其数量分别求和。

图1.35 多相邻区域求和

这里所说的多相邻区域,指的是品名1、品名2、品名3与各自的数量都是并排在一起的,现在要用SUMIF()函数对相同品名(如冰箱)在区域B57:G64出现的所有数量求和。

在I57单元格中输入公式:

      =SUMIF(B57:G64,H57,C57:G64)

条件区域是B57:G64,判断条件是等于H57单元格中的“冰箱”,求和区域是C57:G64。

SUMIF()函数在该公式中,实际上具备了查找、判断求和功能。它先在B57:G64查找品名为“冰箱”的名称,然后在C57:G64区域中查找与之匹配的数值再求和。在这个公式中,条件区域实际上可以写成B57:F64,其结果是一样的。

提示

条件判断区域与求和区域需要差一列,不能完全相同。

示例三

本实例讲解不相邻区域求和。

所谓不相邻区域,指的是多个条件区域和求和区域行错位,我们称之为多区域。如图1.36所示,在B80单元格区域中,选择不同的人名,要求对相同的人名在多个区域中出现的月收入求和。

图1.36 不相邻区域求和

在C80单元格中输入公式:

      =SUMIF(B72:G79,B80,C72:G79)

区域B72:G79是全部框选这三个不相邻的区域,求和条件是D80单元格中的内容,求和区域要求错开一列,范围是C72:G79。

读者可在配套光盘示例文件中单击单元格B80,选择不同的人名,看看求和结果。

示例四

多条件求和。

如图1.37所示,现在要求统计出C89:C96区域中加班时间">100"和"<120"的总和。

在D95单元格中输入公式:

      =SUMIF(C89:C96,">100",C89:C96)-SUMIF(C89:C96,">=120",C89:C96)

注意,公式中是采用了分开求和再做减法的方法,计算出所期望的值。

图1.37 多条件求和

在D95单元格中输入公式:

      =SUM(SUMIF(C89:C96,{">100",">=120"},C89:C96)*{1,-1})

其计算结果与D95单元格中的公式一样。该公式出现了两个数组,一个是一行两列的数组{">100",">=120"},其作用是作为SUMIF()的判断条件,求出来的分别是>100和>=120的两种加班时间的总和{589,256},然后再与另一个一行两列的数组{1,-1}相乘,得到一个数组{589,-256},再用SUM()函数求和,得出结果为333。