电源查询:按自定义列表排序

时间:2014-10-14 15:18:13

标签: excel sorting powerquery

我列出了学年内的时间段:

"Fall 12-13",
"Winter 12-13",
"Spring 12-13",
"Fall 13-14",
etc.

我想根据这些值按时间顺序对大量行进行排序。在Excel中,可以按自定义列表进行排序,我只需输入我希望对项目进行排序的顺序。

我在Power Query中需要相同的功能,但我还没有想出如何做到这一点。我只能将排序顺序设置为Order.AscendingOrder.Descending

是否有一种在Power Query中实施按自定义列表排序的好方法?

3 个答案:

答案 0 :(得分:5)

Table.Sort的第二个参数也可以是一个函数:一个函数,它接受两行并返回它们之间的排序(la strcmp)或一个函数,它接受一行并返回应该使用的值比较。因此,对您描述的值进行排序的一种方法是说

= Table.Sort(Table, each List.PositionOf({"Fall 12-13", "Winter 12-13", "Spring 12-13", "Fall 13-14"}, [Column]))

答案 1 :(得分:2)

制作一个包含两个字段的单独表格:Season和SortOrder。季节是您的文本,SortOrder将是一个表示订单的整数。然后在Season上将您现有的表加入到这个表中,包括SortOrder列,并对其进行排序。

答案 2 :(得分:0)

我没有足够的声誉直接回答罗恩·罗森菲尔德(Ron Rosenfeld)的问题,但这是答案:

您也可以将第二个参数实现为函数列表。这些列将按照您在列表中提供的顺序进行排序。例如下面的示例中的Column,Column1,Column2。

= Table.Sort(Table,{ each List.PositionOf({"Fall 12-13", "Winter 12-13", "Spring 12-13", "Fall 13-14"}, [Column]), {"Column1",Order.Ascending}, {"Column2",Order.Ascending}})