需求说明:
1.合并第一列中连续相同的单元格。
2.根据第一列合并后的范围,合并第二列中对应的单元格。即如果第一列的某些行被合并了,那么第二列中对应的行也会被合并,前提是第二列中的值相同。
3.根据第二列合并后的范围,合并第三列中对应的单元格。即如果第二列的某些行被合并了,那么第三列中对应的行也会被合并,前提是第三列中的值相同。
Sub hebin11() ' 定义一个子程序,命名为hebin11
Dim ln%, a%, i% ' 声明三个变量,ln表示最后一行行号,a和i用于循环计数
Application.DisplayAlerts = False ' 关闭 Excel 的警告提示,避免合并单元格时弹出警告
ln = [A65536].End(xlUp).Row ' 找到列A中最后一行有数据的行号(从 A65536 开始向上查找)
For i = 1 To 1 Step 1 ' 表示循环的列数范围,这里只循环第1列
For a = ln To 2 Step -1 ' 从最后一行向前(向上)循环到第2行
' 如果当前行和上一行的单元格内容相同
If Cells(a, i) = Cells(a - 1, i) Then
' 合并当前行和上一行的单元格(只考虑第1列)
Range(Cells(a, i), Cells(a - 1, i)).Merge
' 如果第2列(B列)对应的单元格内容也相同
If Cells(a, i + 1) = Cells(a - 1, i + 1) Then
' 合并第2列对应的单元格
Range(Cells(a, i + 1), Cells(a - 1, i + 1)).Merge
' 如果第3列(C列)对应的单元格内容也相同
If Cells(a, i + 2) = Cells(a - 1, i + 2) Then
' 合并第3列对应的单元格
Range(Cells(a, i + 2), Cells(a - 1, i + 2)).Merge
End If
End If
End If
Next ' 结束内层循环(行循环)
Next ' 结束外层循环(列循环)
Application.DisplayAlerts = True ' 恢复 Excel 的警告提示
End Sub ' 子程序结束
可通过 ln = [A65536].End(xlUp).Row 来判断第一列所在位置