在我们日常工作中,要将从各种系统中导出的数据做成报表时,常常需要将一些相同数据的行合并,以使报表看起来更加美观。比如下面的数据:
调整后的形式:
下面我们介绍实现以上结果的2种方法。
一、数据透视表
数据透视表是Excel中十分强大的一个工具,可以轻松实现对以上需求的处理。
1.在【插入】下的【表格】选项卡中点击【数据透视表】,在弹出的【创建数据透视表】
窗口中选择号数据透视表的存放位置,点击确定。
2.在数据透视表字段中,将所有字段拖拽到【行】的位置。
3.在【设计】下【布局】选项卡中将【报表布局】修改为【以表格形式显示(T)】。
4.右键菜单中选择【数据透视表选项】,在【布局】中勾选【合并且居中排列带标签的单元格(M)】。
5.将得到的结果复制,然后粘贴到其他位置,此时使用【选择性粘贴】中的【保留源格式】,删除表格中所有含有【汇总】的行。
特别提示:这里的汇总请最好在这里进行手动删除,不要在数据透视表中选择【不显示分类汇总】,否则将会导致部分单元格合并错误。
二、使用VBA代码实现
该方式需要有一定的编程基础,下面仅仅给出代码供参考,该方法能够实现更加灵活的功能。
文字版本:
Sub hebing()
'关闭屏幕刷新
Application.ScreenUpdating = False
'屏蔽确认提示框
Application.DisplayAlerts = False
'获取表格的最后一行的行号
lst = Range("a1000000").End(xlUp).Row
'循环所有行
For i = 2 To lst
'记录开始合并的行号
Start = i
'遍历判断内容是否相等
For j = i To lst
'如果相等,行号累加
If Cells(j, 1) = Cells(Start, 1) Then
i = i + 1
'不相等,跳出循环
Else
Exit For
End If
Next
'进行单元格合并操作
Range("a" & Start & ":a" & i - 1).Merge
Range("b" & Start & ":b" & i - 1).Merge
Range("c" & Start & ":c" & i - 1).Merge
i = i - 1
Next
'打开屏幕刷新
Application.ScreenUpdating = True
'开启确认提示框
Application.DisplayAlerts = True
End Sub
如果需要获取本教程的演示文件,请点击我名字后面的关注,然后私信【美化合并单元格】获取。