尝试按日期排序,但分组匹配字段

时间:2018-10-24 14:41:52

标签: excel vba sorting grouping

我到处都是不同的问题和答案,但似乎找不到适合我的情况。

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

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

Example of current and desired output

2 个答案:

答案 0 :(得分:0)

没有可用的数据,这是我的最佳尝试。在运行子程序之前,请选择整个表,它将首先在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或几乎任何其他方法来选择范围。 希望对您有帮助

答案 1 :(得分:0)

在处理这样的自定义排序时,我总是尝试创建“帮助器”列:

在这种情况下,我首先创建了一个参考表来对客户进行排名。为此,我将数据复制到另一张纸上并按“订购日期”排序。然后,我使用“删除重复项”(仅选择“客户端名称”作为条件),最后添加了新的“排名”列。

在那之后,我将我的助手列添加到原始表中,并填充了Vlookup。按订购日期排序,然后按排名排序,就可以了!

Example

您可以选择“记录宏”以自动执行大部分操作,以备将来使用。希望这会有所帮助!