Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 电源查询:按自定义列表排序_Excel_Sorting_Powerquery - Fatal编程技术网

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}})

啊哈!这是一个伟大的解决方案!谢谢很好的解决方案。但是,如果您想在多个列上排序,该怎么办;其中一个(或多个)可能是自定义排序,而一个(或多个)可能是升序或降序排序?