Excel 使用PowerQuery按特定顺序排序

Excel 使用PowerQuery按特定顺序排序,excel,powerpivot,powerquery,Excel,Powerpivot,Powerquery,我有一个包含5个字段的表,其中一列包含以下内容: 中等 高 低 如果我按升序排序,数据将按字母顺序排序: 高 低 中等 在高级编辑器中,如何更改PowerQuery中的代码,使其排序如下: 高 中等 低 我在编辑器中的当前语法如下: Table.Sort(#“筛选行”,{{“评级”,Order.升序})您可以使用以下表达式向表中添加一个新的Order列: = Table.AddColumn(#"Changed Type", "Order", each if [Rating] = "High" t

我有一个包含5个字段的表,其中一列包含以下内容:

中等 高 低

如果我按升序排序,数据将按字母顺序排序:

高 低 中等

在高级编辑器中,如何更改PowerQuery中的代码,使其排序如下:

高 中等 低

我在编辑器中的当前语法如下:


Table.Sort(#“筛选行”,{{“评级”,Order.升序})

您可以使用以下表达式向表中添加一个新的
Order
列:

= Table.AddColumn(#"Changed Type", "Order", each if [Rating] = "High" then "1" else if [Rating] = "Medium" then "2" else "3" )
然后,您只需按
顺序
列的升序进行排序


让我知道这是否有帮助。

或者,您可以充分利用表的comparisoncreteria参数。排序:

=Table.Sort(#“筛选行”,(x,y)=>Value.Compare(List.PositionOf({“低”、“中”、“高”},x[Rating]),List.PositionOf({“低”、“中”、“高”},y[Rating]))

编辑:这就像顺序一样。升序(低、中、高),但是-再次阅读您的问题-我看到您正在寻找高、中、低:因此您可以在代码中切换“低”和“高”(2x)

Edit2:另一个很酷的技巧是保留原始序列,并将结果与值相乘。通过-1进行比较以反转排序顺序:

= Table.Sort(#"Filtered Rows", (x,y) => -1 * Value.Compare(List.PositionOf({"Low","Medium","High"},x[Rating]),List.PositionOf({"Low","Medium","High"},y[Rating])))