一、COUNTIF(range,criteri a)
说明
Microso ft Excel 还提供了其他一些函数,它们可根据条件来分析数据。 若要计算基于一个文本字符串或某范围内的一个数值的总和,可使用SUMIF 工作表函数。
若要使公式返回两个基于条件的值之一,例如某指定销售金额的销售红利,可使用IF 工作表函数。
若要计算空或非空单元格的个数,可使用 COUNTA和 COUNTBL ANK 函数。
示例1:通用COUNTIF公式
如果您将示例复制到空白工作表中,可能会更易于理解该示例。
操作方法
A B
数据数据
apples32
oranges54
peaches75
apples86
公式说明(结果)
=COUNTIF(A2:A5,"apples") 计算第一列中苹果所在单元格的个数(2)
=COUNTIF(A2:A5,A4) 计算第一列中桃所在单元格的个数(2)
=COUNTIF(A2:A5,A3)+COUNTIF(A2:A5,A2) 计算第一列中柑桔和苹果所在单元格的个数(3)
=COUNTIF(B2:B5,">55") 计算第二列中值大于55 的单元格个数(2)
=COUNTIF(B2:B5,"<>"&B4) 计算第二列中值不等于75 的单元格个数(2)
=COUNTIF(B2:B5,">=32")-COUNTIF(B2:B5,">85") 计算第二列中值大于或等于32 且小于或等于85 的单元格个数
(3)
二、DCOUNT(databas e,field,criteri a)
返回数据库或列表的列中满足指定条件并且包含数字的单元格个数。
参数field 为可选项,如果省略,函数 DCOUNT返回数据库中满足条件 criteri a 的所有记录数。
语法
DCOUNT(databas e,field,criteri a)
Databas e 构成列表或数据库的单元格区域。数据库是包含一组相关数据的列表,其中包含相关信息的行为记录,而包含数据的列为字段。列表的第一行包含着每一列的标志项。 Field 指定函数所使用的数据列。列表中的数据列必须在第一行具有标志项。Field 可以是文本,即两端带引号的标志项,如“使用年数”或“产量”;此外,Field 也可以是代表列表中数据列位置的数字:1 表示第一列,2 表示第二列,等等。
Criteri a 为一组包含给定条件的单元格区域。可以为参数 criteri a 指定任意区域,只要它至少包含一个列标志和列标志下方用于设定条件的单元格。
DCOUNTA
请参阅
返回数据库或列表的列中满足指定条件的非空单元格个数。
参数Field 为可选项。如果省略,则函数 DCOUNTA将返回数据库中满足条件的所有记录数。
语法
DCOUNTA(databas e,field,criteri a)
Databas e 构成列表或数据库的单元格区域。数据库是包含一组相关数据的列表,其中包含相关信息的行为记录,而包含数据的列为字段。列表的第一行包含着每一列的标志项。
Field 指定函数所使用的数据列。列表中的数据列必须在第一行具有标志项。Field 可以是文本,即两端带引号的标志项,如“使用年数”或“产量”;此外,Field 也可以是代表列表中数据列位置的数字:1 表示第一列,2 表示第二列,等等。
Criteri a 为一组包含给定条件的单元格区域。可以为参数 criteri a 指定任意区域,只要它至少包含一个列标志和列标志下方用于设定条件的单元格。
实例请
三、SUMPROD UCT(数组1,数组2,数组3,……)
2010/09/28 17:00
SUMPROD UCT 函数是一个数组类型的函数,能够计算多个区域的数值相乘后之和,也可以加入数组区域条件进行过滤后计算。
语法:
SUMPROD UCT(数组1,数组2,数组3,……)
结果:
返回数组(区域)中对应项相乘后的和。
例如下图所示的工作表数据:
要求将列A和列B中同一行的数据相乘后的结果相加,即:
A1×B1+ A2×B2+ A3×B3+…+ A10×B10
可使用如单元格C3中的公式:
=SUMPROD UCT(A1:A10,B1:B10)
如果将单元格区域A1:A10命名为"DataA",将单元格区域B1:B10命名为"DataB",那么可以使用公式:
=SUMPROD UCT(DataA,DataB)
说明:
∙在SUMPRO DUCT函数的参数中,数组的大小必须相等,否则将返回#VALUE!
错误。
∙SUMPROD UCT函数将数组中不是数字的数组元素作为0对待。
举例:
基于两个条件汇总数据
例如,下表所示的数据:
现在要求华东区域产品B的销售量,则可使用下面的公式:
=SUMPROD UCT((C2:C10)*(A2:A10="华东")*(B2:B10="B"))
结果为100。
其中:
∙C2:C10为包含销售量的单元格区域
∙通过A2:A10="华东"产生一个数值为1,0的数组,即如果列A中的数据为华东则值为1,否则为0
∙同理,通过B2:B10="B"产生一个数值为1,0的数组
∙(C2:C10)*(A2:A10="华东")*(B2:B10="B")的结果为三者对应元素相乘后的一个数组(第一个元素为A2*B2*C2)
∙SUMPROD UCT函数将这些数组分别相乘后相加即得到结果
探讨:
有时,如果不合适地应用SUMPR ODUCT函数,将会得不到正确的结果。例如,下表所示数据:
现在要求华中区域与目标日时间差为负数的项目的销售额。
其中,将单元格区域"A2:A10"命名为"区域",将单元格区域"B2:B10"命名为"销售额",将单元格区域"C2:C10"命名为"时差"。
如果我们输入下面的公式:
=SUMPROD UCT((时差<0),(区域="华中"),销售额)
将得不到正确的结果。由于某种原因,SUMPROD UCT函数不能正确处理布尔值,因此公式无效。
下面的公式在S UMPROD UCT函数中将布尔值乘以1,将得到正确的结果:
=SUMPROD UCT(1*(时差<0),1*(区域="华中"),销售额)
也可以像上例一样,使用下面的公式:
=SUMPROD UCT(销售额*(区域="华中")*(时差<0))