大家好,我是你们的 Excel 老师。
最近在处理仓库发货清单时,有同学提了一个很典型的问题:“在统计相同订单编号的总数量时,如何只在第一次出现编号时显示合计结果,后面重复出现的行不要显示数字?”
比如订单号“1007”在表格里出现了三次,正常用 SUMIF 求和,三行都会显示同一个总数“17”。但实际打印报表时,这样看起来非常啰嗦,甚至容易被误以为是三个不同的订单。
我们需要的效果是:第一次出现时显示总数,第二次、第三次出现时显示为空。
其实,解决这个问题并不难,核心在于判断这个编号是“第几次出现”。今天我们就用 IF+COUNTIF+SUMIF 的组合套路,教大家一个“去重求和”的经典解法!
案例数据:订单统计表
为了方便大家理解,我们将源数据、辅助判断列和最终结果整合在了一张表中。

深度解析:逻辑判定是关键
很多同学只会用 SUMIF,结果导致每一行都显示了总数,数据看起来很“刷屏”。要实现“只显示第一次”,我们的逻辑必须分两步走:
判定位置:用 COUNTIF 判断当前行是这个编号第几次出现。
条件显示:如果是第 1 次,就显示 SUMIF 的计算结果;如果是第 2 次及以后,就显示为空。
为了让大家彻底掌握,我们先通过辅助列理解原理,最后再送大家一个一步到位的进阶公式。
实操步骤:辅助列法详解
我们以 C2 单元格和 D2 单元格为例,一步步拆解。
第一步:用 COUNTIF 判定“第几次出现”
我们需要一列辅助列来告诉 Excel,当前的订单号是第几次“露脸”。
请看 C 列(辅助:出现次数)。在 C2 单元格输入以下公式:
=COUNTIF($A$2:A2, A2)

关键点解析:$A$2:A2 的混合引用艺术
这里的引用方式是整个技巧的核心,请务必注意细节:
$A$2:按下 F4 锁定(绝对引用),作为统计区域的起始点,位置固定不动。
:A2:第二个 A2 不锁定(相对引用),作为统计区域的结束点。
公式下拉后的动态变化(关键!):
C2 单元格:=COUNTIF($A$2:A2, A2) → 统计范围是 A2:A2
C3 单元格:=COUNTIF($A$2:A3, A3) → 统计范围扩展为 A2:A3

C4 单元格:=COUNTIF($A$2:A4, A4) → 统计范围扩展为 A2:A4

通过这种方式,公式实现了“累计计数”的效果:C2 算出是第 1 次,C3 算出是第 2 次,以此类推。
⚠️ 操作提示:
请先将 C2 的公式下拉填充至所有数据行,确认辅助列结果无误后,再进行第二步的操作。
第二步:组合 IF 函数,一锤定音
有了辅助列的“次数”信息,我们就可以在 D 列(最终求和结果)进行逻辑判断了。
逻辑是:如果 C 列的次数大于 1,就返回空;否则,返回 SUMIF 的计算结果。
在 D2 单元格输入的完整公式如下:
=IF(C2>1, "", SUMIF(A:A, A2, B:B))

C2>1:判断出现次数是否大于 1。
"":如果条件成立(是重复行),返回空文本。
SUMIF(A:A, A2, B:B):如果条件不成立(是第一次),正常计算 A 列对应的 B 列总和。
结果验证:
D2 单元格:订单 1007 第一次出现,显示求和结果 17。

D3 单元格:订单 1007 第二次出现,判定大于 1,显示为 空。

进阶技巧:一步到位的嵌套公式
如果你想省去 C 列辅助列,让表格更简洁,可以直接将两步合二为一。这就是标题中提到的“SUMIF+COUNTIF 组合”的真正形态:
在单元格中直接输入:
=IF(COUNTIF($A$2:A2, A2)=1, SUMIF(A:A, A2, B:B), "")

原理解析:
直接把辅助列的 COUNTIF 逻辑塞进 IF 的判断条件里。如果计数结果等于 1,就执行 SUMIF,否则为空。这要求你对混合引用 $A$2:A2 非常熟悉,建议熟练掌握辅助列法后再尝试此招。
避坑指南:细节决定成败
在实际工作中,除了写对公式,还有几个关键细节需要注意:
性能优化:
如果你的数据量达到几千甚至上万行,建议将公式中的整列引用(如 A:A、B:B)改为具体的区域引用(如 A$2:A$1000)。整列引用会拖慢计算速度,让表格打开变慢。
排序依赖性:
此方法是依据数据的物理行号顺序来判断“第一次出现”的。如果你后续对表格进行了排序(比如按数量从大到小排),“第一次出现”的行可能会发生变化。建议做好表后,不要轻易打乱顺序,或者在计算前先固定好顺序。
空行干扰:
如果 A 列订单编号中存在空行,COUNTIF 的累计计数逻辑可能会受影响,请确保数据区域完整。
总结
这个问题的核心在于“动态引用”与“逻辑判断”的配合:
COUNTIF 负责定位:利用 $A$2:A2 混合引用,精准标记编号的出场次序。
IF 负责守门:拦住第二次及以后出现的重复值。
SUMIF 负责计算:安静地在后台算好总数,配合 IF 只在第一次露脸。
学会这一招,以后处理同类“仅首次显示”的需求,都能轻松搞定!赶紧去 Excel 里试一下吧!
刚才我们讲解了用 IF+COUNTIF+SUMIF 三件套来实现“只在首行显示总数”的效果。那个方法虽然经典,但不少同学在后台吐槽:“老师,那个 $A$2:A2 的混合引用实在太难掌握了,一不小心就引用错,而且还要加辅助列,表格看着乱糟糟的。”
确实,传统公式像是在“走钢丝”,需要极强的逻辑来构建判断条件。但在 Office 365 和 Excel 2021 之后的版本中,Excel 给我们装上了“火箭引擎”——动态数组函数。
今天,我们就用 UNIQUE 和 SUMIFS 这对现代组合,带大家体验一下什么叫“降维打击”,用最简单的公式,生成最干净的汇总报表!
案例数据:仓库发货清单
为了对比效果,我们依然沿用上次的仓库发货场景。但这次,我们不需要辅助列,也不需要复杂的逻辑判断,直接从源数据生成一张全新的汇总表。

深度解析:从“逐行判断”到“批量重构”
为什么说新函数是“降维打击”?因为两者的思维方式完全不同:
传统思维(逐行判断):我们需要守在源数据的每一行,问自己:“你是第几次出现?如果是第一次我就算,不是我就空着。”这是基于行的逻辑。
现代思维(批量重构):我们不再纠结于每一行怎么显示,而是直接告诉 Excel:“把所有不重复的订单号给我提取出来,然后批量算一下每个订单的总数。”这是基于集合的逻辑。
这种思维转变,不仅让公式变短,更让表格结构变得清晰——源数据是源数据,报表是报表,互不干扰。
实操步骤:两步构建完美报表
我们将结果区域规划在第 9 行开始的位置。请跟随我的步骤,见证奇迹。
第一步:UNIQUE 函数,一键去重
首先,我们需要把 A 列那一堆重复的订单号变成“唯一值”。
请在 A10 单元格输入以下公式:
=UNIQUE(A2:A7)
A2:A7:这是源数据中所有的订单编号区域。
UNIQUE:它的唯一使命就是“去重”,从一堆数据中提取出唯一值。
效果验证:
按下回车后,你会发现神奇的一幕:A10、A11、A12 单元格自动填充了“1007”、“1008”、“1009”。这就是动态数组的威力,一个公式,撑起了一列数据,完全不需要下拉填充!

第二步:SUMIFS 函数,配合溢出范围求和
有了唯一的订单号,接下来就是求和。这里我们依然使用熟悉的 SUMIFS,但用法稍有不同。
请在 B10 单元格输入以下公式:
=SUMIFS(C2:C7, A2:A7, A10#)
C2:C7:求和区域,即销售数量列。
A2:A7:条件判断区域,即源数据的订单编号列。
A10#:这是今天的核心知识点!这个 # 号是“溢出范围运算符”。它告诉 Excel:“请把 A10 开始溢出的那一列数据(即 UNIQUE 生成的唯一订单号)作为条件,批量计算。”

结果验证:
输入公式后,B10、B11、B12 单元格瞬间填充了计算结果“17”、“20”、“20”。无需下拉,无需辅助列,一张完美的汇总表这就生成了!

避坑指南:新工具新注意事项
虽然新函数很香,但在实际操作中,有两点必须注意:
版本限制:
UNIQUE 函数仅支持 Office 365、Excel 2021 及以上版本。如果你用的是 Excel 2019 或更早版本,这个公式会报错,只能沿用上一期教的辅助列大法。
数据区域的完整清洗:
UNIQUE 函数非常“诚实”,如果源数据 A2:A7 中包含空单元格,它也会把“空值”当成一个唯一值提取出来。因此,使用前请确保源数据区域没有干扰性的空行。
总结
对比上一期的传统解法,你会发现现代 Excel 的魅力在于“大道至简”:
UNIQUE 负责清洗:一键提取,替代了复杂的 COUNTIF 计数逻辑。
SUMIFS 负责计算:配合 # 溢出运算符,替代了繁琐的逐行 IF 判断。
结构更优雅:源数据与报表分离,不再需要破坏原表格的显示方式。
如果你手里有高版本的 Excel,赶紧去试试这个“降维打击”的套路吧!从此告别辅助列,让表格逻辑清爽起来。
接下来咱们继续进阶,我们为了解决“重复订单号求和”的问题,又是用 IF 做守门员,又是用 COUNTIF 做辅助列,甚至还得掌握高深的 UNIQUE 函数数组玩法。虽然技术含量很高,但不少同学在后台跟我吐槽:“老师,我就想打个单子给老板看,这一堆公式写下来,脑细胞都死了一半,有没有更省事的办法?”
答案是肯定的。在 Excel 的世界里,如果说函数公式是“精雕细琢”的手艺活,那数据透视表就是“降维打击”的重武器。
今天,我们就换个思路,不写一个公式,用数据透视表 3 秒钟解决战斗!
案例数据:仓库发货清单
为了验证效果,我们依然沿用之前的仓库发货场景。所有的源数据依然在一张表里,我们来看看通过透视表能生成什么样的结果。

汇总结果(透视表生成):

深度解析:思维模式的转变
为什么说透视表是“降维打击”?我们要理解两种工作逻辑的本质区别:
公式逻辑(旧思维):这是一种“填空思维”。我们需要思考每一行该填什么,是填总数还是填空?需要判断是第几次出现?逻辑链条长,容易出错。
透视表逻辑(新思维):这是一种“聚合思维”。我们不需要关心每一行怎么显示,直接告诉 Excel:“把订单编号扔到行里,把数量扔到值里,剩下的你看着办。”
Excel 的透视表引擎会自动识别“1007”有重复,自动合并为一行,自动求和。这就是工具的力量。
实操步骤:拖拽之间,胜负已分
我们规划数据源位于 A1:C7 区域。接下来的操作,就像把大象装进冰箱一样简单。
第一步:一键唤醒透视表
首先,鼠标点击数据源区域的任意单元格,比如 A2 单元格(订单编号 1007 所在行)。
然后点击菜单栏的【插入】->【数据透视表】。在弹出的对话框中,选择“现有工作表”,并将位置指定在 A10 单元格。
第二步:拖拽字段,大功告成
在右侧弹出的字段列表中,只需做两个动作:
拖“行”:把“订单编号”字段,拖进【行】区域。
此时,透视表立刻在 A10 及以下区域列出了 1007、1008、1009 三个唯一的编号,重复值瞬间消失。
拖“值”:把“销售数量”字段,拖进【值】区域。

透视表自动默认为“求和”。
结果验证:
让我们看生成的结果:
A11 单元格 显示订单号“1007”,B11 单元格 自动算出了“17”。
A12 单元格 显示订单号“1008”,B12 单元格 显示“20”。
A13 单元格 显示订单号“1009”,B13 单元格 显示“20”。

无需辅助列,无需下拉公式,一张干干净净的汇总表就诞生了!
进阶美化:让报表更像“报表”
很多同学不喜欢透视表,是因为它默认长得太“原始”。其实稍微调整一下,它就能变得很专业:
去掉那个讨厌的“求和项:”前缀:
如果不喜欢 B10 单元格里那个长长的标题“求和项:销售数量”,可以直接在公式栏修改为“订单总数”。

关闭分类汇总:
如果不想看到底部的“总计 57”,可以在【设计】选项卡中,点击【总计】选择“对行和列禁用”。

报表布局调整:
默认的“压缩形式”可能不符合打印习惯。在【设计】->【报表布局】中选择“以表格形式显示”,这样看起来就和普通的明细表一模一样了。

总结
回顾我们这三篇文章的探索:
公式篇:适合需要在明细表中嵌入特定显示逻辑的场景,体现了对 Excel 底层逻辑的精准控制。
函数升级篇:适合高版本用户追求简洁高效,体现了对现代办公工具的驾驭能力。
透视表篇(本篇):适合纯粹的统计汇总需求,体现了“工具为人服务”的职场智慧。
如果你的目的仅仅是做出一张汇总表,请务必优先选择数据透视表。它不仅能求和,还能计数、求平均值,甚至一键刷新数据。与其在公式里“死磕”,不如学会用工具“偷懒”!
赶紧打开你的 Excel,试试这个功能吧!
夜雨聆风