Excel中需要对单元格进行合并,对我们来说已经是司空见惯啦!在另外一些时候我们又需要将没有合并前的单元格的值,都保留下来,然后在合并之后的单元格都填充原来合并之前的值。
对于结构简单的合并单元格的表格,我们一般正常操作是手动将单元格的值用连接函数进行字符串的连接合并,然后手动进行定位,然后填充空白值,将我们已经用函数连接起来的值写入。但是如果有几千行数据,或者上万行数据需要将合并单元格时连接上每个单元格的内容,你确定需要一个一个的手动进行操作吗?其实你大可不必慌张,我们可以一键操作即可。
照例举一个例子,源数据如下图所示:
目前我们有需求,一种按照组别,将相同部门的人员,姓名,职位,工资,合并到同一个单元格中。
我们先看看动画执行的效果:
看了以上的动画,你是不是发现批量操作合并单元格,并保留原来的值,其实很简单。
您只需要将以下代码复制到Excel的VBE窗口的模块中,然后执行程序即可。
PS:操作流程如下,按照顺序1到4步,然后执行程序。
附上Excel VBA代码
Sub MergeCell()
Dim lastrow&, i&, j&, K%
Dim Str As String
禁止屏幕刷新
Application.ScreenUpdating = False
禁止危险警告
Application.DisplayAlerts = False
清除H列的值
Columns('H:H').Clear
取得最大的循环行数
lastrow = Cells(Rows.Count, 1).End(3).Row
添加辅助列
Range('i2:i' & lastrow) = '= F:F&'' ''& E:E &'' ''& G:G'
表头赋值
Cells(1, 8) = 'Merge'
首行赋值给变量
Str = Cells(2, 9)
j = 2
For i = 3 To lastrow
判断组别是否符合
If Cells(i, 3) = Cells(i - 1, 3) Then
相同的值连接在一起
Str = Str & Chr(10) & Cells(i, 9)
Else
Cells(i - 1, 8).Value = Str
单元格相同的合并
Range(Cells(j, 8), Cells(i - 1, 8)).Merge
Str = Cells(i, 9)
j = i
End If
Next
Cells(i - 1, 8).Value = Str
Range(Cells(j, 8), Cells(i - 1, 8)).Merge
Columns('I:I').ClearContents
表格美化,格式设置,字体大小
With Columns('H:H')
.HorizontalAlignment = xlLeft
.ColumnWidth = 25
.Font.Name = 'Arial Unicode MS'
.Font.Size = 10
.Font.Color = -16776961
End With
Application.ScreenUpdating = False
Application.DisplayAlerts = False
添加边框线
Range('a1:h' & lastrow).Borders.LineStyle = xlContinuous
MsgBox ('您已经完成' & Application.CountA(Columns('H:H')) & '项数据整理工作')
End Sub
以上就是今天要和大家分享的技巧,希望对大家有所帮助,祝各位一天好心情!
唯有不断学习,才能不被淘汰!
Excel中每一个方法都有特定的用途,不是他们没有用处,只是你不了解或者暂时用不着,建议你收藏起来,万一哪天用着呢?
联系客服