如何合并(加入)多个表的范围?

How can I combine (join) ranges from multiple tables?

我不想要基于 DAX 或 Excel 公式的答案。

我有两个 table 都有 ID 和累积数据。这两个字段是 table 独立的。

我需要创建一个新的 table、table3,它是 table1 和 table2 的 cumulative2 字段之间的连接。连接条件是找到第一个优于cumulative1的cumulative2值,如示例所示:

我不认为你可以用 "join" 本身做到这一点,但你绝对可以用自定义列来做到这一点。

let
    Source = Table.FromRows({{1,1000},{2,2000},{3,3000},{4,4000}},{"ID1","Cumulative1"}),
    #"Added Custom" = Table.AddColumn(Source, "Cumulative2", (T1) => List.Min(Table.SelectRows(Table2, each [Cumulative2] >= T1[Cumulative1])[Cumulative2]), type number)
in
    #"Added Custom"

或者格式化一下

let
    Source = Table.FromRows({{1,1000},
                             {2,2000},
                             {3,3000},
                             {4,4000}},
                            {"ID1","Cumulative1"}
             ),
    #"Added Custom" = Table.AddColumn(Source, "Cumulative2",
                          (T1) => List.Min(
                                      Table.SelectRows(Table2, 
                                          each [Cumulative2] >= T1[Cumulative1]
                                      )[Cumulative2]
                                  ),
                          type number
                      )
in
    #"Added Custom"

所以在 Table1 的每一行中,我只取 Table2 和 select

所在的行
Table2[Cumulative2] >= Table1[Cumulative1]

然后 return 只有 table 中的 Cumulative2 列(单个列是一个列表)。

因为我想要该列表中的第一个值,所以我使用 List.Min


编辑: 这样做可能会更简洁、更高效:

(T1) => List.First(List.Select(Table2[Cumulative2], each _ >= T1[Cumulative1])),