本文介绍 Microsoft Excel 中 DCOUNTA 函数的公式语法和用法。
说明
返回列表或数据库中满足指定条件的记录字段(列)中的非空单元格的个数。
字段参数为可选项。 如果省略字段,DCOUNTA 计算数据库中符合条件的所有记录数。
语法
DCOUNTA(database, field, criteria)
DCOUNTA 函数语法具有下列参数:
- 数据库 必填。 构成列表或数据库的单元格区域。 数据库是包含一组相关数据的列表,其中包含相关信息的行为记录,而包含数据的列为字段。 列表的第一行包含每一列的标签。
- 领域 选。 指定函数所使用的列。 输入两端带双引号的列标签,如 "使用年数" 或 "产量";或是代表列表中列位置的数字(不带引号):1 表示第一列,2 表示第二列,依此类推。
- 标准 必填。 包含所指定条件的单元格区域。 可以为参数 criteria 指定任意区域,只要此区域包含至少一个列标签,并且列标签下至少有一个在其中为列指定条件的单元格。
备注
- 可以为参数 criteria 指定任意区域,只要此区域包含至少一个列标签,并且列标签下方包含至少一个用于指定条件的单元格。
例如,如果区域 G1:G2 在 G1 中包含列标签 Income,在 G2 中包含数量 ¥100,000,可将此区域命名为 MatchIncome,那么在数据库函数中就可使用该名称作为条件参数。 - 虽然条件区域可以位于工作表的任意位置,但不要将条件区域置于列表的下方。 如果向列表中添加更多信息,新的信息将会添加在列表下方的第一行上。 如果列表下方的行不是空的,Excel 将无法添加新的信息。
- 确定条件区域没有与列表相重叠。
- 若要对数据库中的一个完整列执行操作,请在条件区域中的列标签下方加入一个空行。
示例
复制下表中的示例数据,然后将其粘贴进新的 Excel 工作表的 A1 单元格中。 要使公式显示结果,请选中它们,按 F2,然后按 Enter。 如果需要,可调整列宽以查看所有数据。 如果将以下任何示例复制到 Excel 中,请确保选中此表中的所有单元格,包括左上角的单元格。
| 树种 | 高度 | 年数 | 产量 | 利润 | 高度 |
|---|---|---|---|---|---|
| ="=苹果树" | >10 | <16 | |||
| ="=梨树" | |||||
| 树种 | 高度 | 年数 | 产量 | 利润 | |
| 苹果树 | 18 | 20 | 14 | 105.0 | |
| 梨树 | 1.2 | 1.2 | 10 | 96.0 | |
| 樱桃树 | 1.3 | 14 | 9 | 105.0 | |
| 苹果树 | 14 | 15 | 10 | 75.0 | |
| 梨树 | 9 | 8 | 8 | 76.8 | |
| 苹果树 | 8 | 9 | 6 | 45.0 | |
| 公式 | 说明 | 结果 | |||
| =DCOUNTA(A4:E10, "利润", A1:F2) | 对列 A 中高度 >为 10 和 <16 的行 (1) 进行计数。 仅第 8 行满足上述三个条件。 | 1 |
条件示例
- 在单元格中输入 = 文本时,Excel 将它解释为公式并尝试计算它。 要输入=文本以使 Excel 不会尝试计算它,请使用以下语法:
='''=entry''
其中 ,条目 是要查找的文本或值。 例如:
| 在单元格中键入的内容 | Excel 计算和显示的内容 |
|---|---|
| ="=彭德威" | =彭德威 |
| ="=3000" | =3000 |
- 在筛选文本数据时,Excel 不区分大小写。 但是,您可以使用公式来执行区分大小写的搜索。
以下各节提供了复杂条件的示例。
一列中有多个条件
布尔逻辑: (Salesperson = “Davolio” OR Salesperson = “Buchanan”)
要查找满足“一列中有多个条件”的行,请直接在条件区域的单独行中依次键入条件。
在下面的数据区域 (A6:C10) 中,条件区域 (B1:B3) 用于计算“销售人员”列中包含“李小明”或“郑建杰”的行。
| 销售人员 | ||
|---|---|---|
| ="=彭德威" | ||
| ="=林恪" | ||
| 类别 | 销售人员 | 销售额 |
| 饮料 | 蔡耀明 | ¥51,220 |
| 肉类 | 刘英玫 | ¥4,500 |
| 农产品 | 黄雅玲 | ¥63,280 |
| 农产品 | 刘英玫 | ¥6,544 |
| 公式 | 说明 | 结果 |
| '=DCOUNTA(A6:C10,2,B1:B3) | 对 A6:C10 内满足第 2 行和第 3 行中任一“销售人员”条件的行数 (3) 进行计数。 | =DCOUNTA(A6:C10,2,B1:B3) |
多列中有多个条件,其中所有条件都必须为真
布尔逻辑: (类型 = “Produce” AND Sales > 2000)
要查找满足“多列中有多个条件”的行,请在条件区域的同一行中键入所有条件。
在下面的数据区域 (A6:C12) 中,条件区域 (A1:C2) 用于计算“类别”列中包含“农产品”并且“销售额”列中值大于 ¥2,000 的行。
| 类别 | 销售人员 | 销售额 |
|---|---|---|
| ="=农产品" | >2000 | |
| 类别 | 销售人员 | 销售额 |
| 饮料 | 蔡耀明 | ¥51,220 |
| 肉类 | 刘英玫 | ¥4,500 |
| 农产品 | 黄雅玲 | ¥935 |
| 农产品 | 刘英玫 | ¥6,544 |
| 饮料 | 黄雅玲 | ¥3,677 |
| 农产品 | 刘英玫 | ¥3,186 |
| 公式 | 说明 | 结果 |
| '=DCOUNTA(A6:C12,,A1:C2) | 计算 A6:C12 中满足第 2 行 (2 个) 的行数 (=“Produce” 和 >2000) 。 | =DCOUNTA(A6:C12,,A1:C2) |
多列中有多个条件,其中所有条件都必须为真
布尔逻辑: (Type = “Produce” OR Salesperson = “Davolio”)
要查找满足“多列中有多个条件,其中所有条件都必须为真”的行,请在条件区域的不同行中键入条件。
在下面的数据区域 (A6:C10) 中,条件区域 (A1:B3) 显示“类型”列中包含“农产品”或“李小明”的所有行。
| 类别 | 销售人员 | |
|---|---|---|
| ="=农产品" | ||
| ="=彭德威" | ||
| 类别 | 销售人员 | 销售额 |
| 饮料 | 蔡耀明 | ¥51,220 |
| 肉类 | 刘英玫 | ¥675 |
| 农产品 | 黄雅玲 | ¥937 |
| 农产品 | 黄雅玲 | |
| 公式 | 说明 | 结果 |
| '=DCOUNTA(A6:C10,"Sales",A1:B3) | 对 A6:C10 内满足 A1:C3 中任一条件(其中“销售额”字段不为空)的行数 (2) 进行计数。 | =DCOUNTA(A6:C10,"销售额",A1:B3) |
多个条件集,其中每个集包括用于多个列的条件
布尔逻辑: ( (Salesperson = “Davolio” AND Sales >3000) OR (Salesperson = “Buchanan” AND Sales > 1500) )
要查找满足“多个条件集,其中每个集包括用于多个列的条件”的行,请在单独的行中键入每个条件集。
在下面的数据区域 (A6:C10) 中,条件区域 (B1:C3) 用于计算“销售人员”列中包含“李小明”并且“销售额”列中值大于 ¥3,000 的行,或者用于计算“销售人员”列中包含“郑建杰”并且“销售额”列中值大于 ¥1,500 的行。
| 类别 | 销售人员 | 销售额 |
|---|---|---|
| ="=彭德威" | >3000 | |
| ="=林恪" | >1500 | |
| 类别 | 销售人员 | 销售额 |
| 饮料 | 蔡耀明 | ¥51,220 |
| 肉类 | 刘英玫 | ¥4,500 |
| 农产品 | 黄雅玲 | ¥63,280 |
| 农产品 | 刘英玫 | ¥6,544 |
| 公式 | 说明 | 结果 |
| '=DCOUNTA(A6:C10,,B1:C3) | 对 A6:C10 内满足 B1:C3 中所有条件的行数 (2) 进行计数。 | =DCOUNTA(A6:C10,,B1:C3) |
多个条件集,其中每个集包括用于一个列的条件
布尔逻辑: ( (Sales > 6000 和 Sales < 6500 ) 或 (Sales < 500) )
要查找满足“多个条件集,其中每个集包括用于一个列的条件”的行,请在多个列中包括同一个列标题。
在下面的数据区域 (A6:C10) 中,条件区域 (C1:D3) 用于计算“销售额”列中值在 ¥6,000 和 ¥6,500 之间以及值小于 ¥500 的行。
| 类别 | 销售人员 | 销售额 | 销售额 |
|---|---|---|---|
| >6000 | <6500 | ||
| <500 | |||
| 类别 | 销售人员 | 销售额 | |
| 饮料 | 蔡耀明 | ¥51,220 | |
| 肉类 | 刘英玫 | ¥4,500 | |
| 农产品 | 黄雅玲 | ¥63,280 | |
| 农产品 | 刘英玫 | ¥6,544 | |
| 公式 | 说明 | 结果 | |
| '=DCOUNTA(A6:C10,,C1:D3) | 计算满足第 2 行 ( (6000 和 6500 <行中的>条件或满足第 3 行 (500) ) 条件的行数 (<2 个) 。 | =DCOUNTA(A6:C10,,C1:D3) |
查找共享某些字符而非其他字符的文本值的条件
要查找共享某些字符而非其他字符的文本值,请执行下面一项或多项操作:
- 键入一个或多个不带等号 (=) 的字符,以查找列中文本值以这些字符开头的行。 例如,如果键入文本“李”作为条件,则 Excel 将找到“李小明”、“李威”和“李新”。
- 使用通配符。
可以使用下面的通配符作为比较条件。
| 用途 | 若要查找 |
|---|---|
| ? (问号) | 任何单字符 例如,sm?th 可找到“smith”和“smyth” |
| *(星号) | 任意字符数 例如,*east 可找到“Northeast”和“Southeast” |
| ~(波形符)后跟 ?、* 或 ~ | 问号、星号或波形符 例如,fy91~? 可找到“fy91?” |
在以下数据区域 (A6:C10) 中,条件区域 (A1:B3) 用于计算“类型”列中以“肉”开头的行或“销售人员”列中第二个字符为“建”的行。
| 类别 | 销售人员 | 销售额 |
|---|---|---|
| 我 | ||
| ?u* | ||
| 类别 | 销售人员 | 销售额 |
| 饮料 | 蔡耀明 | ¥51,220 |
| 肉类 | 刘英玫 | ¥4,500 |
| 农产品 | 黄雅玲 | ¥63,280 |
| 农产品 | 刘英玫 | ¥6,544 |
| 公式 | 说明 | 结果 |
| '=DCOUNTA(A6:C10,,A1:B3) | 对满足 A1:B3 中任一条件的行数 (3) 进行计数。 | =DCOUNTA(A6:C10,,A1:B3) |
将公式结果用作条件
可以将公式的计算结果作为条件使用。 记住下列要点:
- 公式必须计算为 TRUE 或 FALSE。
- 因为您正在使用公式,请像您平常那样输入公式,而不要以下列方式键入表达式:
='''=entry'' - 不要将列标签用作条件标签;请将条件标签保留为空,或者使用区域中并非列标签的标签(在以下示例中,是“计算的平均值”和“精确匹配”)。
如果在公式中使用列标签而不是相对单元格引用或区域名称,Excel 将显示错误值,例如 #NAME?或 #VALUE!,位于包含条件的单元格中。 您可以忽略此错误,因为它不影响区域的筛选。 - 用于条件的公式必须使用相对引用来引用第一行中的相应单元格。
- 公式中的所有其他引用必须是绝对单元格引用。
筛选大于数据区域中所有值的平均值的值
在以下数据区域 (A6:C10) 中,条件区域 (C1:C2) 用于计算“销售额”列 (C7:C10) 中值大于所有“销售额”值的平均值的行。 平均值在单元格 C4 中计算,结果在单元格 C2 中与公式 =“”>&C4 组合,以创建所使用的条件。
| 销售 | ||
|---|---|---|
| =CONCATENATE (“>”,C4) | ||
| 计算的平均值 | ||
| =AVERAGE(C7:C10) | ||
| 类别 | 销售人员 | 销售额 |
| 饮料 | 蔡耀明 | ¥51,220 |
| 肉类 | 刘英玫 | ¥4,500 |
| 农产品 | 黄雅玲 | ¥63,280 |
| 农产品 | 刘英玫 | ¥6,544 |
| 公式 | 说明 | 结果 |
| '=DCOUNTA(A6:C10,,C1:C2) | 计算满足 C1:C2 (4611) 条件的行数 (>3) 。 C2 中的条件是通过将 =“”> 与单元格 C4 连接(C7:C10 的计算平均值)创建的。 | =DCOUNTA(A6:C10,,C1:C2) |