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中每一个方法都有特定的用途,不是他们没有用处,只是你不了解或者暂时用不着,建议你收藏起来,万一哪天用着呢?