SUM 家族和引用方式:相对与绝对
从求和开始:聚会 AA 制和工资表

做表绕不开求和。部门聚餐 AA 制算人均、月度销售汇总、工资表算应发合计,都是同一类动作:把一串数字加起来。Excel 给了三种姿势做这件事。最粗放的:选中这一列数字,看窗口右下角状态栏,求和值就在那里,连公式都不用写,适合临时瞄一眼。最家常的:点开始选项卡的自动求和按钮(快捷键是 Alt 加等号),Excel 自动猜一个范围,回车确认。最灵活的:手写公式,区域、条件都自己定。工资表算应发、月度汇总算合计、每个人算占比,全都是手写公式更可控。
新手从状态栏过渡到手写公式有一个心理门槛:怕写错。其实公式的容错率很高,写错了立刻报错或者结果明显不对,反而最让人放心。真正危险的是不报错但悄悄算错的公式,比如文本数字被跳过得到 0、引用没钉住导致分母跑偏,这两类问题本篇都会讲到。
SUM 的括号里放的是要加的东西。放区域是最常见的用法;也可以放多个区域,用逗号分隔,把两列或者不连续的几片一起加;甚至直接放数字。一个冷门但好用的技巧:SUM 会自动忽略文本和空格,所以一列里混着几个备注文字不影响求和,这比逐项相加安全得多。另一个细节是 SUM 只认数字,文本格式的数字会被悄悄跳过,求和结果是 0 而不是报错——这是最隐蔽的坑,根源在数据类型那一篇。
=SUM(B2:B10)
=SUM(B2:B10,D2:D10)
=SUM(1,2,3)
| 函数 | 用途 | 典型写法 |
|---|---|---|
| SUM | 普通求和 | 对一片区域求和 |
| SUMIF | 按一个条件求和 | 华东区销售额、某客户回款 |
| SUMIFS | 按多个条件求和 | 华东区一月已完成订单 |
| SUMPRODUCT | 对应相乘再求和 | 数量乘单价求总额 |
| SUBTOTAL | 只加可见单元格 | 筛选后的动态小计 |
SUMIF 是 SUM 家族第一个值得学的进阶款。场景:一张几百行的销售明细,想知道华东区一共卖了多少钱。公式的三个部分依次是 条件区域、条件、求和区域——如果 A 列等于华东,就把对应 B 列的数字加进来。条件的写法是文本加英文双引号,数字条件可以不加引号。求和区域可以省略,省略时对条件区域本身求和,做人数计数一类的事情很方便。
SUMIFS 是 SUMIF 的加强版,条件要几个给几个,但参数顺序变了:求和区域在最前面,后面跟着一对一对的条件区域和条件。做分类汇总时这个函数出场率极高:把金额列放第一个,然后部门条件、月份条件、状态条件一对一对往后写,一句话把华东区一月已完成的金额全捞出来。注意条件里如果带数学符号(大于、小于),整段都要裹在引号里。
=SUMIF(A2:A500,"华东",B2:B500)
=SUMIFS(B:B,A:A,"华东",C:C,"1月",D:D,"已完成")
=SUMIFS(B:B,C:C,">1000")
SUBTOTAL 解决一个烦心事:筛选后求和。SUM 不管你筛没筛选,永远加全部数据;SUBTOTAL 只加筛选后看得见的行。第一个参数放数字 9 代表求和(1 到 11 对应不同统计函数,1 是平均值,9 是求和,其它还有计数、最大最小等)。做可交互的汇总表时,SUBTOTAL 是主角,因为筛选一下总数立刻跟着变。领导和老板特别喜欢这种动态表格,点几下就能换一个统计口径。
=SUBTOTAL(9,B2:B100)
SUBTOTAL 和 SUM 做出来的表还有个区别:SUBTOTAL 天生不把被筛选掉的行算进去,但也不会把分类汇总行重复相加——它在汇总自己时自动跳过嵌套的同类结果,这一条对多层小计的表非常重要。
SUMPRODUCT 对应另一个高频场景:数量乘单价再求和。订单明细里,D 列数量 E 列单价,一个公式一气呵成,不用先加一列小计再求和。它把两列对应位置相乘,再把这些乘积加总,采购表、成本核算表上是常客。写的时候两列必须一样长,否则报错。
SUMPRODUCT 还有个隐藏用法:带条件求和。因为它支持数组运算,配上一段判断条件就能替代 SUMIF,适合需要灵活组合条件的场合。不过对新手来说,需要带条件时直接用 SUMIFS 更直观,等 SUMPRODUCT 用熟了再考虑这条路。函数选择的原则始终是:先选能一眼读懂的,性能问题等真的遇到了再优化。
相对引用和绝对引用:F4 是关键

写公式不拖填充柄等于浪费一半功力。在 F2 写一个公式算第一行的小计,选中 F2 往下拖 50 行,每一行自动变成下一行的公式——这就是相对引用:公式被复制时,引用跟着位移。行号加 1、列号也跟着位移变化,这是 Excel 最聪明的地方,也是新手最怕的地方——怕就怕它自作聪明改过了头。
怕的场景来了:算每个人工资占部门总额的比例,分母是全部门合计,固定在 H2。第一行写 G2 除以 H2,拖到第 3 行变成 G3 除以 H3,分母跑到 H3 去了——H3 是空的,于是除零错误,一片错误值。这时候需要绝对引用:把分母钉住,在行列前各加一个美元符号。美元符号是钉子,表示这个格子被钉死,拖到天涯海角分母都是它。
| 写法 | 名称 | 拖动时发生什么 |
|---|---|---|
| B2 | 相对引用 | 行列都跟着变 |
| $B$2 | 绝对引用 | 行列都不变 |
| $B2 | 混合引用(列锁定) | 列不变,行跟着变 |
| B$2 | 混合引用(行锁定) | 行不变,列跟着变 |
钉符号不用手敲美元,按 F4 自动循环:从相对引用变绝对引用,再变两次混合引用,最后转回来,按到想要的那一下停手就行。F4 是写公式的第二个必备快捷键(第一个是 F2 编辑)。混合引用最典型的用法是九九乘法表和座次表这类二维表:行向拖、列向拖时各自锁定一个方向,公式只写一次填满全表。新手可以先用绝对引用解决大部分问题,熟练后再琢磨混合引用。
判断要不要钉住,有一个简单的检验方法:写完公式,想象它被拖到下一行,然后问自己引用的这个格子应该换吗。分母、系数、参数表里的基准值,一律钉住;被逐行处理的明细数据,不钉。多拖几次看结果,错误很快会教会你这个直觉。顺带提一句,跨表拖动时规则完全一样,钉住的规矩跨着表也成立。
举个完整的例子里的小计表:A 列姓名、B 列基本工资、C 列绩效,D1 存全公司工资总额做分母。E2 写每人的占比公式:分母钉住写 D1 的绝对形式,分子不钉写 B2 加 C2 的和,往下一拖,全表每个人的占比都算好了,而且永远以同一个分母为准。要是分母没钉,第二个人的占比会拿第二行自己的数字去除,结果错得悄无声息。
跨工作表和跨工作簿引用
数据散在多张表上才是工作常态。七月的数据在 七月 工作表,想做个半年汇总。写公式时直接点别的表,Excel 自动生成带叹号的引用。叹号前面是工作表名,规则很简单:表名里没有空格和特殊符号就直接写;有空格或需要括起名字的写法要用单引号裹住表名。手动输的时候别忘了叹号,漏掉叹号是最常见的跨表公式错误。
跨表求和最实用的偷懒招:输入 SUM 加左括号之后,直接用鼠标点第一张表的起始格子,按住 Shift 点最后一张工作表标签,再点目标区域的地址,回车。Excel 会自动生成三维引用,把多张表同一位置的数字一次加完。做月度汇总表时这个动作能省掉拼十二段公式的时间,而且新增一个月的表,只要插在中间位置就自动纳入。
=SUM(七月!B2:B10)
=SUM(七月:十二月!B2)
=[源文件.xlsx]Sheet1!$B$2
跨工作簿引用再进一步,格式是方括号里的文件名加工作表名加地址。两个文件都打开时一切正常,关闭源文件再打开汇总表,引用会保留但刷新行为取决于设置。一个提醒:跨簿引用是放出去的风筝,源文件改名、移动位置都会断线,看到 REF 错误十有八九是找不到源文件了。重要汇总尽量把数据收到一个工作簿里做,省心。
结构化引用是另一种风味:如果区域被设成了表格对象(套用表格格式),公式里会出现带表名的可读写法,新增行时引用自动扩展。优点是自动化程度高,缺点是换别人电脑或者要改公式时容易看懵,而且表格对象和普通区域的混用有时会带来意外行为。总结报表追求稳定可以用普通区域引用,追求自动化可以用结构化引用。
跨表引用的一个实用习惯:汇总表里常用 INDIRECT 之类的函数按月份变化引用哪张表,做动态月度报表。这个属于进阶玩法,原理仍然是指定工作表名加感叹号加地址。把基础写法吃透,进阶函数只是换个壳。
引用整列和常见错误
很多人写公式喜欢偷懒用整列:SUM 加一个冒号 B 的写法把 B 列全加上。整列引用的好处是不用数行数、不怕新增行,缺点是性能——Excel 要遍历一整列。日常几百行的表完全感受不到差别,但好几万行再嵌套几个函数,计算就会明显变慢。一个折中:把区域数一个够用的上界,比如一万行。
| 错误值 | 含义 | 常见原因 |
|---|---|---|
| #VALUE! | 类型错误 | 数字和文本相加、文本参数 |
| #DIV/0! | 除零错误 | 分母是 0 或空格子 |
| #REF! | 引用失效 | 引用被删除、文件丢失 |
| #N/A | 找不到数据 | 查找函数查无结果 |
| #NAME? | 名字不认识 | 函数名拼错、缺少引号 |
| #NUM! | 数值无效 | 负数开平方、循环引用 |
看到一屏 VALUE 错误先想类型问题:文本格式的数字混进来了,用 VALUE 转换或检查格式。除零错误九成是分母为空,套个 IF 判断:分母为零时返回 0,否则正常算。REF 错误最心痛,通常是手滑删了被引用的行或列,而且撤销可能也救不回全部——所以重要公式删行列之前先看一眼下游有哪些公式在依赖这一列。
循环引用是新手容易踩的暗坑:一个公式直接或间接地引用了自己所在格子,Excel 立刻警告,状态栏显示循环引用。但有一种用法是合法循环:算提成的场景里,提成总额本身参与计算,Excel 选项里打开迭代计算就能算出收敛值。日常用不到,知道有这个东西即可。
相关篇章
求和是统计的入口,判断是逻辑的入口,两者一搭配就能应付八成的日常表格,IF 和多条件判断接着讲。求和之后往往需要跨表找数据,VLOOKUP 和 MATCH是下一关。熟悉公式编辑前的常用快捷键能让写公式快一截。
常见问题
公式拖下来全是同一个结果,为什么?
因为公式里所有引用都是绝对引用,拖动时一行都没跟着变,或者这一列被设成了手动重算。先在公式编辑栏看引用带没带多余的美元符号,再到公式选项卡的计算选项里检查是不是自动。还一种情况:无意中按到了 F4 把引用全改成了全钉死的形式,改回来即可。
SUMIF 求和结果是 0,但数据明明存在?
三个可能。条件区域和求和区域的行数不一样,错位了。条件文本带了不可见的空格,条件里没有而数据里有,用 TRIM 清一下。第三,求和区域里全是文本格式的数字,SUMIF 直接跳过文本返回 0。解决办法是先把求和区域转成真数字(分列或乘 1 法)。第三个原因最隐蔽,找问题时优先怀疑它。
美元符号什么时候写在行前面,什么时候写在列前面?
只往下拖、不往右拖时,钉行不钉列的写法就够了;又拖右又拖下的二维表格才需要按方向锁定一个的混合引用。判断方法很简单:拖动方向上需不需要变化。不用记规则,写完后拖两格看一眼结果对不对,最快。跨表引用时由于工作表名前自带感叹号,钉的逻辑完全一样。
跨表引用打开别的文件时变成 REF 错误?
说明源文件被移动、改名或删除了。看公式编辑栏,断线的引用会显示路径而非文件名。去原位置找回文件改名一致即可恢复;如果找不回,只能手动重建引用。重要汇总文件建议把源数据集中到同一工作簿,或者固定好源文件的存放路径不要乱动,从根上减少断线风险。
状态栏不显示求和了怎么办?
右键状态栏,弹出菜单里勾选求和、平均值、计数。另外注意状态栏只对选中的多个含数字单元格显示汇总,只选一个格子时只显示数值本身。如果求和后面跟着差异较大的提示,检查选区里是不是混了文本数字。
SUMIFS 的条件怎么写大于等于某个日期?
日期条件有三种写法:直接引用一个日期单元格(最清晰)、用大于号加日期文本(日期两边要加英文引号)、或者字符串拼接今天的日期函数。推荐第一种,把阈值日期单独放在一个格子里,既绝对引用又便于维护,规则要调只改那个格子。
为什么我的合计和系统里对不上?
九成是三类脏数据在作怪:文本格式的数字被 SUM 跳过了;隐藏行里的数字被算进或漏算,取决于用 SUM 还是 SUBTOTAL;小数位数的显示精度和真实精度差异。逐项排查时按这个顺序来,先看类型(用 ISNUMBER 扫一遍),再看隐藏行,最后看小数精度。
