Excel 电源查询:按自定义列表排序
我有一份学年内的时间季节列表:Excel 电源查询:按自定义列表排序,excel,sorting,powerquery,Excel,Sorting,Powerquery,我有一份学年内的时间季节列表: "Fall 12-13", "Winter 12-13", "Spring 12-13", "Fall 13-14", etc. 我想根据这些值按时间顺序对大量行进行排序。在Excel中,可以通过自定义列表进行排序,我只需输入项目排序的顺序 我需要在Power Query中使用相同的功能,但我还不知道如何做到这一点。我只能将排序顺序设置为order.升序或order.降序 在Power查询中是否有一种很好的方法来实现按自定义列表排序?用两个字段创建一个单独的表:
"Fall 12-13",
"Winter 12-13",
"Spring 12-13",
"Fall 13-14",
etc.
我想根据这些值按时间顺序对大量行进行排序。在Excel中,可以通过自定义列表进行排序,我只需输入项目排序的顺序
我需要在Power Query中使用相同的功能,但我还不知道如何做到这一点。我只能将排序顺序设置为order.升序
或order.降序
在Power查询中是否有一种很好的方法来实现按自定义列表排序?用两个字段创建一个单独的表:季节和排序器。季节是您的文本,排序器将是一个整数,指示顺序。然后将您现有的表连接到此表,包括SortOrder列,并对其进行排序。表的第二个参数。sort也可以是一个函数:要么是一个接受两行并返回它们之间的顺序的函数(la strcmp),要么是一个接受单行并返回用于比较的值的函数。因此,对您描述的值进行排序的一种方法是
= Table.Sort(Table, each List.PositionOf({"Fall 12-13", "Winter 12-13", "Spring 12-13", "Fall 13-14"}, [Column]))
我没有足够的声誉直接回答罗恩·罗森菲尔德的问题,但答案如下: 您还可以将第二个参数实现为函数列表。列将按照您在列表中提供的顺序进行排序。例如,下例中的第列、第1列、第2列
= 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}})
啊哈!这是一个伟大的解决方案!谢谢很好的解决方案。但是,如果您想在多个列上排序,该怎么办;其中一个(或多个)可能是自定义排序,而一个(或多个)可能是升序或降序排序?