合同相同单元格
需求
- 将一列中连续、值相同的单元格进行合并
方案思路
-
循环所选单元格区域,将当前单元格与下一个单元格的值进行比较
- 相同
不进行不处理 - 不同
将第一个单元格与本单元格地址用“:”链接,形成单元格区域,使用rng.Merge进行合并单元格
- 相同
-
设置格式
- 设置单元格区域的格式:水平、垂直居中,加边框
代码实现
Sub 合并相同单元格()
'将所选单元格中连续的相同值单元格合并
Application.DisplayAlerts = False
On Error GoTo a
Set rng = Application.InputBox(prompt:="请选择需要合并单元格的连续区域?", Title:="输入框", Default:=Selection.Address, Type:=8) '选择单元格区域
a:
If TypeName(rng) <> "Range" Then
Exit Sub
End If
st = Split(rng.Address, ":")(0)
For Each r In rng
If r.Value <> Cells(r.Row + 1, r.Column).Value Then
Range(st & ":" & r.Address).Merge
st = Cells(r.Row + 1, r.Column).Address
End If
Next
rng.Borders.LineStyle = True '加边框
rng.HorizontalAlignment = xlHAlignCenter ' 水平居中
rng.VerticalAlignment = xlVAlignCenter ' 垂直居中
rng.WrapText = True '行内换行
Application.DisplayAlerts = True ' 开启警告提示(恢复默认设置)
End Sub