Excel中用VBA解决合并单元格无法排序的问题
1、在日常办公中经常遇到合并单元格无法排序的问题,
一般,我们会取消合并,取消合并后,会有很多空白单元格,那么又得去挨个填充单元格,填充完成后,重新排序,排序完成后,还得挨个合并相同的单元格,
这样一来一回,
数据量小的就还好,如果数据量大的话,工作量就非常巨大了,而且还容易出错。
下面我们介绍一种用VBA宏处理的方法,灵活使用,效果更好。
2、现有如下表格,我们要对工程量排序,但直接排序会报错:此操作要求合并单元格具有相同大小。

3、我们打开 开发工具中的Visual Basic,将下列代码复制到编辑框中:
Sub 取消合并单元格并填充空白单元格()
Dim j
Dim k, l
k = InputBox("请输入合并单元格所在列")
l = Cells(Rows.Count, k).End(xlUp).Row
Columns(k).UnMerge
l = Cells(Rows.Count, k).End(xlUp).Row
For j = 1 To l Step 1
If Cells(j, k) = "" Then
Cells(j, k) = Cells(j - 1, k)
End If
Next
End Sub
Sub 合并单元格()
Dim i
Dim k, l
Application.DisplayAlerts = False
k = InputBox("请输入合并单元格所在列")
l = Cells(Rows.Count, k).End(xlUp).Row
For i = l To 2 Step -1
If Cells(i, k) = Cells(i - 1, k) Then
Range(Cells(i - 1, k), Cells(i, k)).Merge
End If
Next
Application.DisplayAlerts = True
End Sub

4、打开宏,执行:取消合并单元格并填充空白单元格 命令,

5、弹出对话框中输入:要整理的单元格列号:D(指工程量列)整理后如下图2
再次执行宏命令:取消合并单元格并填充空白单元格 ,输入C(指工程名)
执行后,如下图3,将合并的单元格都拆分并填充了值。
这样,就可以排序了。



6、排序完成后,再执行宏命令:合并单元格 ,并输入需要合并相同值的单元格所在列。C
再执行宏命令:合并单元格 ,输入 D
这样合并单元格排序就完成了。


7、敲了一下午键盘,不知道大家掌握了没有,
刚开始用会觉得陌生,后面用多了,就会感觉很方便了。
若觉得有所帮助,希望大家高抬贵手点个赞吧,花了一下午时间整理出来的。谢谢大家。