【问题标题】:Trying to sort by date, but group matching field尝试按日期排序,但组匹配字段
【发布时间】:2019-03-29 00:52:11
【问题描述】:

我一直在寻找不同的问题和答案,但似乎找不到适合我的情况。

我有一个庞大的数据列表(销售订单),我们可能会在其中获得同一客户的多个销售订单。我正在尝试按日期对整个列表进行排序,然后将同一客户的所有订单组合在一起,以便将较新的订单与该客户最旧的销售订单一起提出。关键是我们首先处理具有最早销售订单的客户,所以我不想简单地按客户排序然后日期。我不知道如何到达我需要去的地方。有什么建议吗?

下面链接中的图片显示了当前和所需的输出。

【问题讨论】:

    标签: excel vba sorting grouping


    【解决方案1】:

    没有可用的数据,这是我最好的尝试。在运行 sub 之前选择整个表,它将首先在 C 列上排序,然后在 A 列上排序。

    Sub sort()
    Selection.Sort Key1:=Range("C2"), Order1:=xlAscending, Key2:=Range("A2") _
            , Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
            False, Orientation:=xlTopToBottom
    End Sub
    

    显然,您可以硬编码范围,或使用usedRange 或几乎任何其他方法来选择范围。 希望对你有帮助

    【讨论】:

      【解决方案2】:

      在进行这样的自定义排序时,我总是尝试创建一个“帮助”列:

      在这种情况下,我首先创建了一个参考表来对客户进行排名。为此,我将数据复制到另一张表并按订单日期排序。然后,我使用了 Remove Duplicates(仅选择 Client Name 作为标准),最后添加了一个新的“Rank”列。

      之后,我将帮助列添加到原始表中并填充了 Vlookup。按订单日期排序,然后按等级排序,它成功了!

      您可能会选择录制宏,以便为以后的表格自动执行大部分操作。希望这有帮助!

      【讨论】:

      • 谢谢唐纳多。我使用了一个带有匹配公式的辅助列,它工作得很好。这是我用的。 =MATCH([@[客户名称]],[客户名称],0)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-06-07
      • 1970-01-01
      • 1970-01-01
      • 2013-08-23
      • 1970-01-01
      • 2013-08-14
      • 2011-02-19
      相关资源
      最近更新 更多