You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PowerQuery筛选每个年度Gross Amount排名前N的所有数据

PowerQuery 分年度提取进出口额前N数据解决方案

完整可直接使用的M代码

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Export Country", type text}, {"Gross Export", Int64.Type}, {"Share", type number}, {"Year", Int64.Type}, {"Imp/Exp", type text}}),
    // 按年度分组,每个年度单独处理取前10
    #"Grouped Rows" = Table.Group(#"Changed Type", {"Year"}, {
        {"Top10Data", each Table.FirstN(Table.Sort(_, {{"Gross Export", Order.Descending}}), 10), type table [Export Country=text, Gross Export=Int64.Type, Share=number, Year=Int64.Type, #"Imp/Exp"=text]}
    }),
    // 展开各年度的前10数据,删除多余的分组列
    #"Expanded Top10Data" = Table.ExpandTableColumn(#"Grouped Rows", "Top10Data", {"Export Country", "Gross Export", "Share", "Imp/Exp"}),
    // 可选:按年度升序、进出口额降序排序最终结果
    #"Sorted Final Result" = Table.Sort(#"Expanded Top10Data",{{"Year", Order.Ascending}, {"Gross Export", Order.Descending}})
in
    #"Sorted Final Result"

代码逻辑说明

  • 核心修改是新增了Table.Group分组步骤:以Year字段为分组依据,每一个年度对应一个子表,对每个子表单独按Gross Export降序排序后取前10行
  • 展开分组后即可得到所有年度的前10条数据汇总,无需手动分年度处理再合并
  • 若需要调整取前N的数量,直接修改Table.FirstN的第二个参数即可,比如要取前20就改为20

若需要保留并列排名的所有数据(比如有2条并列第10都保留),可将Table.FirstN(Table.Sort(_, {{"Gross Export", Order.Descending}}), 10)替换为Table.SelectRows(Table.AddRankColumn(_, "Rank", {"Gross Export", Order.Descending}), each [Rank] <=10)即可。

输出到指定工作表操作

查询编辑完成后,点击PowerQuery编辑器左上角的「关闭并上载」下拉箭头,选择「关闭并上载至」,在弹出的对话框中选择「现有工作表」,输入目标工作表名称Export_Top10确认即可。

内容的提问来源于stack exchange,提问作者Umut K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 02:15:04