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

Excel 365 Power Query:如何匹配Key与对应Data列表的最大Value?

解决Power Query中按Key匹配Data列表并取最大Value的需求

以下是实现需求的完整M代码,以及步骤拆解:

完整解决方案代码

let
    // 加载源表(可替换为你实际的表引用)
    Tbl1 = 
        let
            Source = #table({"Key", "Data"},
                {
                    {"XXX-1", {"Data 1.1", "Data 1.2"}},
                    {"XXX-2", {"Data 1.2A"}},
                    {"XXX-3", {"unmatchable data"}}
                }
            )
        in
            Source,
    Tbl2 =
        let
            Source = #table({"Data", "Value"},
                {
                    {"Data 1.1A", 1},
                    {"Data 1.1B", 2},
                    {"Data 1.1", 2},
                    {"Data 1.2A", 3},
                    {"Data 1.2B", 4},
                    {"Data 1.2", 4}
                }
            )
        in
            Source,
    // 展开Tbl1的Data列表为单行数据
    #"展开Data" = Table.ExpandListColumn(Tbl1, "Data"),
    // 左连接Tbl2获取对应Value
    #"左连接Tbl2" = Table.NestedJoin(#"展开Data", {"Data"}, Tbl2, {"Data"}, "Tbl2", JoinKind.LeftOuter),
    #"展开Value列" = Table.ExpandTableColumn(#"左连接Tbl2", "Tbl2", {"Value"}, {"Value"}),
    // 按Key分组并计算最大Value
    #"按Key取最大Value" = Table.Group(#"展开Value列", {"Key"}, {{"Largest Value", each List.Max([Value]), type nullable number}})
in
    #"按Key取最大Value"

步骤拆解

1. 展开Data列表

Tbl1的Data字段是列表类型,通过Table.ExpandListColumn函数将每个列表中的元素拆分为独立行,让每个Key与单个Data项一一对应,为后续匹配做准备。

2. 左连接Tbl2匹配Value

使用**左外连接(JoinKind.LeftOuter)**关联两个表,确保Tbl1中的所有Key都被保留——即使某个Data项在Tbl2中无匹配,对应Value会显示null。之后展开连接生成的嵌套表,提取Value列。

3. 分组计算最大Value

通过Table.Group按Key分组,对每组的Value列使用List.Max函数取最大值。如果某组的Value全为null(比如XXX-3),List.Max会自动返回null,完全符合需求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 11:23:14