数据表如下图中A列至D列所示,需要将C列和D列的数据进行合并。每个编号组中,C列合并后,保留第一个单元格(户主姓名),结果如F列至I列所示。
示例代码如下。
Sub Demo1()
lst = Cells(Activesheet.Rows.Count,1).End(xlDown).Row
Set c = Cells(3, 2)
Application.DisplayAlerts = False
Do While c.Row < lst
With c.MergeArea
.Offset(0, 1).Resize(.Count, 1).Merge
.Offset(0, 2).Resize(.Count, 1).Merge
End With
Set c = c.Offset(1, 0)
Loop
set c = Nothing
End Sub
【代码解析】
第2行代码获取A列最后数据行的行号。
第4行代码屏蔽合并单元格时的提示信息。
第5~11行代码循环处理数据行。
第6行代码中的MergeArea
返回合并单元格的Range对象,例如[B2].MergeArea.Address结果为$B$2:$B$6
。
第7~8行代码分别实现C列和D列的单元格合并。
第10行代码将下一个单元格赋值给变量c,注意[B2]的下一个单元格为[B7],而不是[B3]。
第12行代码释放对象变量占用的系统资源。