别再嵌套N个SUMIF了!Excel内置的“小型数据库引擎”,让你用一套逻辑搞定所有条件统计。

打开网易新闻 查看精彩图片

你是否曾为这样的问题头疼:如何快速统计“华南地区且销售额大于5000元的A类产品”的总和?

大多数人的第一反应是:=SUMIFS(…)。这没错,但当条件组合更复杂,或你需要反复修改条件时,公式会变得冗长且脆弱。

今天,我要为你揭开一个被严重低估的Excel宝藏函数家族——D函数。它就像在Excel中内置了一个小型SQL查询引擎,用一套颠覆性的思维,将条件设置计算逻辑彻底分离,让你面对再复杂的“与”、“或”组合都能优雅应对。

一、思维革命:为什么D函数是“降维打击”?

传统函数(如SUMIFS)的思路是:在公式内编织条件。条件一变,公式就得改。

D函数的思路是:在独立的“条件区域”中,用数据库的思维配置条件,公式只需指向这个区域。条件怎么变,都与公式无关。

核心优势:

  1. 逻辑清晰:条件区域直观展示“与”(同行)、“或”(不同行)关系,一目了然。
  2. 高度可维护:修改分析维度?只需在条件区域动几个字,所有相关公式结果自动更新。
  3. 一学通杀12个D函数,完全相同的参数结构。学会一个,就掌握了求和、平均、计数、极值、方差等全部统计需求。

二、认识D函数家族:你的全能数据统计套件

这12个函数构成了一个完整的条件统计工具箱:

函数

功能

相当于普通函数的“条件查询版”

DSUM

条件求和

SUMIFS

DAVERAGE

条件平均

AVERAGEIFS

DCOUNT

数字单元格计数

COUNTIFS (仅数字)

DCOUNTA

非空单元格计数

COUNTA + 条件

DMAX/DMIN

条件最大/最小值

MAX/MIN + 条件

DPRODUCT

条件乘积

无直接替代,独特功能

DGET

提取唯一匹配项

更强大的VLOOKUP

DSTDEV/DSTDEVP

条件样本/总体标准差

STDEV.S/STDEV.P + 条件

DVAR/DVARP

条件样本/总体方差

VAR.S/VAR.P + 条件

命名规律:普通函数前加“D”(Database),如SUM→DSUM。唯一例外是DGET,它是这个家族的“精确查询专员”。

三、核心语法:三参数打天下

所有D函数都遵循一个结构,这是它们易学的根本:

=D函数(database, field, criteria)

翻译成可操作的语言:

  • database:你的整个数据表区域必须包含顶部的列标题。例如A1:C100。
  • field:你想对哪一列进行计算。可以直接写带引号的列标题(如"销售额"),也可以用数字表示第几列(如3)。
  • criteria:这是灵魂所在——一个独立的、包含列标题和具体条件的单元格区域

条件区域(criteria)设置规则(重中之重):

  • “与”关系(同时满足):多个条件放在同一行
  • “或”关系(满足其一):多个条件放在不同行
  • 条件区域必须有自己的标题行,且标题必须与数据表对应列标题完全一致

四、实战演练:7个案例从入门到精通

以下案例基于同一个简易销售表(A1:C7):

产品

地区

销售额

A

华南

1200

B

华北

800

A

华东

1500

C

华南

600

A

华北

2000

B

华东

900

(E列开始为条件区域设置位置)

案例1:单条件查询 - 产品A的总销售额

  • 条件区(E1:E2):标题产品,下方A。
  • 公式:=DSUM($A$1:$C$7, "销售额", $E$1:$E$2)
  • 结果:4700 (A1+A3+A5)

案例2:单字段“与”条件 - 销售额介于800到2000之间

  • 条件区(G1:H2):两列标题均为销售额。第一行下:>=800,第二行下:<=2000。
  • 公式:=DSUM($A$1:$C$7, 3, $G$1:$H$2)
  • 结果:6400 (所有记录,因均满足)

案例3:单字段“或”条件 - 产品是A或B

  • 条件区(J1:J3):标题产品,下方依次输入A、B。
  • 公式:=DSUM($A$1:$C$7, 3, $J$1:$J$3)
  • 结果:6400 (A, B, A, A, B)

案例4:多字段“与”条件 - 华南区的A产品

  • 条件区(L1:M2):标题地区、产品。下方:华南、A。
  • 公式:=DSUM($A$1:$C$7, 3, $L$1:$M$2)
  • 结果:1200

案例5:多条件组合“或” - (华南A) 或 (华北B)

  • 条件区(O1:P3):标题地区、产品。 第一条件行:华南、A 第二条件行:华北、B
  • 公式:=DSUM($A$1:$C$7, 3, $O$1:$P$3)
  • 结果:2000 (1200+800)

案例6:高阶技巧 - 用DGET一次提取整行信息(比VLOOKUP更强)

假设有学生表(A1:D4):

姓名

语文

数学

英语

张三

85

90

88

李四

78

85

92

提取“张三”的所有成绩:

  • 条件区(F1:F2):标题姓名,下方张三。
  • 选中G2:I2三个连续单元格,输入数组公式:=DGET(A1:D4, {2,3,4}, F1:F2) 按Ctrl+Shift+Enter(老版本)或直接回车(新版本)。
  • 结果:G2:I2分别显示85, 90, 88。这是VLOOKUP单次查询做不到的。

案例7:必须避免的坑 - 条件区域必须是“引用”

  • 错误尝试:=DSUM(A1:C7, 3, {"产品","A"}) 这会导致#VALUE!错误。
  • 正确做法:条件必须预先写在单元格里,然后引用该区域。这是D函数与FILTER等新函数的关键区别,但也保证了其在所有Excel版本中的通用性。

五、横向对比:D函数、高级筛选与FILTER

特性

D函数家族

高级筛选

FILTER函数 (365)

主要目的

筛选并聚合计算

仅筛选数据

筛选数据

条件设置

独立条件区域,结构清晰

独立条件区域

公式内嵌逻辑判断

输出结果

单一统计值/数组

原数据子集

原数据子集(动态数组)

版本兼容

全版本支持

全版本支持

仅较新版本

学习成本

低(一套语法)

结论:如果你需要的是基于复杂条件的统计结果(总和、平均等),且追求公式的清晰、可维护和兼容性,D函数是无可争议的最佳选择。FILTER更适合需要动态数组结果的新版用户。

六、终极价值与适用场景

你应该优先使用D函数当:

  1. 构建动态报表:为不同部门(如销售、市场)预设好条件区域,只需切换条件,汇总报表自动刷新。
  2. 进行复杂多维度分析:条件经常变化,且包含多重“与”、“或”逻辑。
  3. 开发需要广泛分发的模板:确保使用低版本Excel的同事也能正常运作。
  4. 追求公式的可读性与可维护性:让后来者(或三个月后的你自己)能一眼看懂分析逻辑。

核心心法:将D函数视为一个查询系统。你的主要工作是设计和维护那个直观的“条件区域”,而不是去编织和调试一个冗长复杂的公式。

增效技巧

  1. 为条件区域定义名称:选中条件区域(如O1:P3),在名称框输入“条件华南A华北B”,此后公式可写为=DSUM(A1:C7, 3, 条件_华南A_华北B),更加清晰。
  2. 结合下拉列表:在条件区域的输入单元格设置数据验证(下拉列表),实现点击选择条件,统计结果实时变化。
  3. 跨工作表引用:条件区域可以放在一个单独的、隐藏的“参数表”中,让主报表界面更加清爽。

下次当你面对复杂的多条件统计时,不要再本能地敲出SUMIFS。试试建立一个小小的“条件区域”,然后调用DSUM。你会体验到一种思路清晰、操作优雅的全新效率。

三道题,测测你掌握了多少?

1. 你想计算“销售部”且“工龄大于5年”的员工平均工资,条件区域应该如何设置?

A. 两行:第一行“部门”下写“销售部”;第二行“工龄”下写“>5”

B. 一行:在“部门”下写“销售部”,在“工龄”下写“>5”

C. 两列:第一列“部门”下写“销售部”;第二列“工龄”下写“>5”

2. 使用DGET函数查询时,如果条件匹配到多条记录,会返回什么?

A. 返回第一条记录

B. 返回所有记录的数组

C. 返回错误值 #NUM!

3. 关于D函数,以下哪项描述是正确的?

A. 它的条件区域可以直接在公式中用常量数组{"A","B"}表示

B. 它的计算效率远低于SUMIFS函数,不推荐在大数据量下使用

C. DSUM和SUMIFS可以实现相同的多条件求和,但DSUM的条件设置更为灵活和直观

正确答案:

  1. B(多个“与”条件需放在同一行)
  2. C(DGET要求条件必须唯一识别一条记录,否则报错)
  3. C(这是D函数的核心优势,A错在条件必须为单元格引用,B错在实际效率差异不大,甚至在某些复杂条件下D函数更优)

(完)