Excel中存在合并的单元格,对我们来说已经是司空见惯啦!在另外一些时候我们又需要将已经合并的单元格的值,进行取消合并,并每个都填充原来合并之前的值。
对于结构简单的带有合并单元格的表格,我们一般正常操作是手动取消单元格合并,然后手动进行定位,然后填充空白值。但是如果有几千行数据,或者上万行数据需要取消合并单元格时在每个单元格中保留内容,你确定需要一个一个的手动进行操作吗?其实你大可不必慌张,我们可以一键操作即可。
照例举一个例子,源数据如下图所示,B列为已经合并的数据,需要将部门字段取消合并单元格并在每个单元格中保留内容。
源数据:
我们先看看动画执行的效果:
看了以上的动画,你是不是发现批量操作取消合并单元格,并保留原来的值,其实很简单。
您只需要将以下代码复制到Excel的VBE窗口的模块中,然后执行程序即可。
PS:操作流程如下,按照顺序1到4步,然后执行程序。
附上Excel VBA代码
Sub CancelMergeCells()
Dim r As Integer,MergeStr As String,MergeCot As Integer,i As Integer
Dim rng As Range
On Error Resume Next
选择需要合并的列,由用户进行制定,并限定值
Set rng = Application.InputBox("请输入需要合并的列", "区域选择", , , , , , 8)
将用户指定的单元列取得行号
k = rng.Column
With Sheet1
取得最大循环数
r = .Cells(.Rows.Count, 1).End(xlUp).Row
For i = 2 To r
将合并单元格赋值给到变量
MergeStr = .Cells(i, k).Value
计算合并单元格区域的大小
MergeCot = .Cells(i, k).MergeArea.Count
取消合并单元格
.Cells(i, k).UnMerge
将取消的单元格进行赋值填充
.Range(.Cells(i, k), .Cells(i + MergeCot - 1, k)).Value = MergeStr
循环的步长进行累加,减少循环的次数
i = i + MergeCot - 1
Next
添加边框线,数据美化
.Range("A1:C" & r).Borders.LineStyle = xlContinuous
End With
End Sub
以上就是今天要和大家分享的技巧,希望对大家有所帮助,祝各位一天好心情!
唯有不断学习,才能不被淘汰!
Excel中每一个方法都有特定的用途,不是他们没有用处,只是你不了解或者暂时用不着,建议你收藏起来,万一哪天用着呢?