在Microsoft Excel中,当您在SUM+IF语句中使用逻辑函数AND和/或OR针对一个以上的条件测试一个区域时,测试可能不会如期望的那样执行。嵌套的IF语句可提供此功能;不过,采用另一种方法将会更方便,此方法使用下列公式。
对于AND条件:=SUM(IF(Test1*Test2*...*Testn))
对于OR 条件:=SUM(IF(Test1+Test2+...+Testn))
使用SUM+IF语句计算某一区域内通过某一给定测试的单元格的数量或对一个区域内的某些值求和,这些值在另一区域(或同一区域)内对应的值满足指定的条件。此行为类似于Microsoft Excel中的DSUM函数。
示例:下面的示例将计算区域A1:A10内1到10之间(包括1和10)的值的数目。
为实现此目的,您可以使用下面的嵌套IF语句:
=SUM(IF(A1:A10>=1,IF(A1:A10<=10,1,0)))
如果您要进行多次测试,也可以使用下面的方法,它更易读:
=SUM(IF((A1:A10>=1)*(A1:A10<=10),1,0))
下面的方法将计算在两个给定日期之间的日期的数量:
=SUM(IF((A1:A10>=DATEVALUE("1/10/99"))*(A1:A10<=DATEVALUE("2/10/99")),1,0))
备注:必须通过同时按CTRL+SHIFT+ENTER键,将这些公式作为数组公式输入进去。数组不能引用整列。
使用此方法,您实际上是在用一种逻辑测试的结果乘以另一种逻辑测试的结果,并将TRUE和FALSE返回给SUM函数。您可以将它们看作是:
TRUE*TRUE=1;TRUE*FALSE=0;FALSE*TRUE=0;FALSE*FALSE=0
以上所示的方法计算了区域A1:A10内在两种测试中结果均为 TRUE的单元格的数量。如要为对应单元格(例如,B1:B10)中的值求和,请像下面这样修改公式:
=SUM(IF((A1:A10>=1)*(A1:A10<=10),B1:B10,0))
类似地,您可以在SUM+IF语句中实现OR运算。为此,请修改上述公式,将乘号(*)替换为加号(+)。这样将得到下面的一般公式:=SUM(IF((Test1)+(Test2)+...+(Testn),1,0))