需对同类项目进行合并统计,方法包括:一、数据透视表字段拖拽自动合并;二、SUMIF函数构建汇总表;三、Power Query合并多表;四、SUMIFS函数多条件汇总;五、VBA宏合并透视表显示单元格。

如果您在Excel中使用数据透视表处理销售记录、库存清单或人员考勤等数据时,发现相同名称、类别或编码的条目被分散统计,导致无法直观获取每个类别的汇总值,则说明需要对同类项目进行合并统计。以下是实现该目标的多种方法:
一、使用数据透视表字段拖拽自动合并同类项
该方法利用数据透视表内置的分组聚合机制,无需公式或插件,直接通过字段布局触发自动去重与求和,适用于结构规范、无空行空列的原始数据。
1、确保原始数据区域首行为清晰字段标题,且每列数据类型一致,无合并单元格或跨行标题。
2、选中任意一个数据单元格,点击【插入】选项卡 → 【数据透视表】 → 选择“新工作表”并确认。
3、在右侧“数据透视表字段”窗格中,将代表分类维度的字段(如“产品名称”“部门”“客户姓名”)拖入【行】区域。
4、将需统计的数值字段(如“销售额”“数量”“工时”)拖入【值】区域。
5、若该数值字段默认显示为“计数”,则右键点击值区域中的任意汇总单元格 → 选择【值字段设置】→ 在“汇总值依据”中切换为求和。
二、使用SUMIF函数在透视表外构建同类项汇总表
该方法适用于需保留原始明细、同时生成独立汇总视图的场景,支持在透视表之外建立动态响应式汇总表,且可灵活嵌入条件筛选逻辑。
1、在空白区域手动列出所有不重复的类别名称(可通过复制源列 → 【数据】→【删除重复项】快速生成)。
2、在相邻列首单元格输入公式:=SUMIF(名称列范围,当前名称单元格,数值列范围),例如:=SUMIF(A:A,E2,B:B)。
3、将该公式向下填充至全部类别行,确保名称列范围与数值列范围均采用绝对引用格式(如$A$2:$A$1000)。
4、检查结果是否与透视表输出一致,验证公式引用未因填充发生偏移。
三、使用Power Query合并多表同类项并加载至数据模型
当同类项目分布在多个工作表(如按月份、区域或业务线拆分的Sheet1、Sheet2、Sheet3)中时,Power Query可统一提取、堆叠、去重并分组聚合,再作为数据模型源供透视表调用。
1、点击【数据】选项卡 → 【从工作簿】→ 浏览并选择当前Excel文件,进入导航器界面。
2、在导航器中勾选所有含同类结构数据的工作表(如“1月”“2月”“3月”),取消勾选“启用隐私级别”提示框中的确认项。
3、对每张表执行【转换】→【将第一行用作标题】,确保各表列名完全一致;如存在差异,需在高级编辑器中统一列名。
4、右键任一已加载查询 → 【追加查询】→【追加查询为新查询】→ 依次添加其余表,完成纵向堆叠合并。
5、点击【关闭并上载】→ 选择仅创建连接;随后在【插入】→【数据透视表】中,将该查询设为数据源,并按第一种方法拖拽字段构建汇总。
四、使用SUMIFS函数实现带筛选条件的同类项合并统计
该方法适用于需在多个限定条件下对同一类别的数值进行求和,例如统计“华东区”下“A类产品”在“Q1”的总销量,支持动态条件组合与交叉过滤。
1、准备唯一类别列表(如产品名称),置于空白列中(如F列)。
2、在G2单元格输入公式:=SUMIFS(求和列范围,类别列范围,F2,条件列1范围,条件1,条件列2范围,条件2),例如:=SUMIFS(D:D,A:A,F2,B:B,"华东",C:C,">=2026/1/1")。
3、将公式向下填充,注意所有范围均需使用绝对引用(如$D$2:$D$5000),以保障填充时引用稳定。
4、验证条件列与求和列的行数严格一致,避免因长度不匹配导致部分数据未被纳入计算。
五、使用VBA宏批量合并透视表生成后的同类项显示单元格
该方法不改变底层数据或汇总逻辑,仅针对透视表结果区域中连续相同的行标签执行单元格合并操作,提升报表视觉整洁度,适用于打印或汇报场景。
1、确保透视表已完成构建且处于激活状态,选中包含行标签的整列(如A列中所有行项区域)。
2、按Alt+F11打开VBA编辑器,插入新模块,粘贴以下代码:
Sub MergeSameCellsInPivot()
Dim rng As Range, cell As Range
Dim startRow As Long, endRow As Long, i As Long
Set rng = Selection
If rng.Columns.Count > 1 Then MsgBox "请仅选择单列行标签区域": Exit Sub
startRow = rng.Row: endRow = rng.Row + rng.Rows.Count - 1
i = startRow
Do While i If rng.Cells(i, 1).Value = rng.Cells(i + 1, 1).Value And Not IsEmpty(rng.Cells(i, 1)) Then
startRow = i
Do While rng.Cells(i, 1).Value = rng.Cells(i + 1, 1).Value And i i = i + 1
Loop
rng.Range(rng.Cells(startRow, 1), rng.Cells(i, 1)).Merge
End If
i = i + 1
Loop
End Sub
3、返回Excel界面,按F5运行宏,所选列中所有连续相同内容的单元格将被自动合并。
4、运行后检查是否出现“合并单元格可能影响排序或筛选功能”警告,确认仅用于展示目的且不参与后续交互操作。










