【问题标题】:Excel Pivot Table Auto sortExcel 数据透视表自动排序
【发布时间】:2019-07-01 16:48:33
【问题描述】:

我有以下 3 个表格,它们从一个更大的表格中提取值,我需要表格和图表在主数据更改后按升序自动排序。 Screenshot 我让表 1 使用以下 VBA 代码在更新时自动排序,但由于某种原因,它不适用于表 2 和表 3。(请注意,我只更改了代码中的 Column indeces),这对其他的没有帮助表enter image description here

Private Sub Worksheet_Change(ByVal Target As Range)

    If Not Intersect(Target, Range("X:X")) Is Nothing Then
        Range("X4").Sort _
              Key1:=Range("X4"), _
              Order1:=xlAscending, Header:=xlYes, _
              OrderCustom:=1, MatchCase:=False, _
              Orientation:=xlTopToBottom
    End If

    If Not Intersect(Target, Range("AK:AK")) Is Nothing Then
        Range("AK4").Sort _ 
              Key1:=Range("AK4"), _
              Order1:=xlAscending, Header:=xlYes, _
              OrderCustom:=1, MatchCase:=False, _
              Orientation:=xlTopToBottom
    End If

    If Not Intersect(Target, Range("AY:AY")) Is Nothing Then
        Range("AY4").Sort _
              Key1:=Range("AY4"), _
              Order1:=xlAscending, Header:=xlYes, _
              OrderCustom:=1, MatchCase:=False, _
              Orientation:=xlTopToBottom
    End If

End Sub

欢迎大家指正

【问题讨论】:

  • 只需将其他两个方法中的if not intersect代码添加到第一个中
  • 这仍然只对第一张桌子有帮助
  • 你为什么要排序OrderCustom:=1。你真的有想要使用的自定义排序列表吗?
  • 不知道,我只是想按升序对其进行排序,并找到了我调整以适合我的工作簿的类似代码。那我的情况会是什么?

标签: excel vba sorting pivot-table


【解决方案1】:

首先删除On Error Resume Next,它不会通过忽略/跳过它们来帮助您发现问题。这是一个需要改掉的坏习惯。

您不能仅仅通过将其命名为 2 和 3 来创建新的事件过程。将所有必要的代码放在单个 Change 事件中。也就是说,每张工作表只有一个 Change 事件。

【讨论】:

    猜你喜欢
    • 2015-12-27
    • 2014-12-09
    • 1970-01-01
    • 1970-01-01
    • 2012-05-22
    • 2017-02-08
    • 2012-09-24
    • 2018-12-30
    • 2010-10-14
    相关资源
    最近更新 更多