|
发表于 2016-5-13 16:07
|
显示全部楼层
本楼为最佳答案
- Sub 排序()
- Dim cel As Range
- r = 23 '最大行,根据数据自定
- crr = Array(1, 26, 27) '要合并、撤销合并所在的列
- For i = 6 To r
- Cells(i, "AB") = i '辅助列,用于合并单元格内的排序
- For k = 0 To 2
- j = crr(k)
- Cells(i, j).UnMerge '取消合并单元格
- If Cells(i, j) = "" Then Cells(i, j) = Cells(i - 1, j) '合并单元格取消后,给下面的空值赋值
- Next
- Next
- Range("A6:AB" & r).Sort key1:=[aa6], key2:=[ab6] '排序
- Application.DisplayAlerts = False
- For i = 6 To r '合并单元格
- For k = 0 To 2
- j = crr(k)
- Set cel = Cells(i, j)
- If cel = cel.Offset(-1, 0) And Len(cel) > 0 Then cel.Offset(-1, 0).Resize(2, 1).Merge
- Next
- Next
- [ab:ab] = "" '清空辅助列
- Application.DisplayAlerts = True
- End Sub
复制代码 |
|