在excel

时间:2018-04-12 07:11:36

标签: excel vba excel-vba sorting merge

我已经使用excel中的VBA对我的两行进行了自动排序。

Private Sub Worksheet_Change(ByVal Target As Range)
    On Error Resume Next

    If Not Intersect(Target, Range("C:D")) Is Nothing Then
        Range("C3").Sort Key1:=Range("C4"), _
          Order1:=xlAscending, _
          Key2:=Range("D4"), _
          Order2:=xlAscending, _
          Header:=xlYes, _
          OrderCustom:=2, MatchCase:=False, _
          Orientation:=xlTopToBottom
    End If
End Sub

我按升序自动对C和D列进行了排序。

但是当我合并J列中的2个单元格(即J53和J54)时,自动分类对于C列和D列或者我们可以说的整个表格都不起作用。

我想合并J列中的单元格,以及使用VBA进行C列和D列自动排序。

注意:同样我也希望在K列中排序为2个单元格。

2 个答案:

答案 0 :(得分:1)

排序不适用于合并的单元格。除非所有合并的单元格大小相同。

我强烈建议您在没有正确错误处理的情况下不要使用On Error Resume Next。它只是让你对任何错误视而不见但它们仍然会发生,你永远不会知道,因为消息被抑制了。

这也是为什么你没有看到错误消息告诉你这个的原因!删除On Error Resume Next,您将看到错误消息!

<强>解决方案
您可以取消合并单元格以对其进行排序,也可以使用像Kutools: How To Sort Data With Merged Cells In Excel?

这样的3ʳᵈ方工具

请注意,这不是合并单元格为恶的唯一情况。因此,我建议不要使用合并的单元格。

答案 1 :(得分:0)

我会取消单元格,然后排序然后再合并......