Excel 或 Power Query:Merge/Lookup 最近的上一个日期

Excel or Power Query: Merge/Lookup Closest Previous Date

大家:

我有一个 table 这些日期:

我有另一个 table,其中包含日期和所有者列表:

我需要 merge/join 这两个 table 以便交易日期与最近的上一个开始日期相匹配,因此它看起来像这样:

我尝试将 XLOOKUP 与“-1”一起使用,但这是一个问题,因为 XLOOKUP 检索了交易日期为 4/16/2017(有 2 个匹配项)的第一条记录,而且我无法在 Power Query 上合并,因为那里没有确切的日期匹配。还有别的办法吗?

谢谢。

假设此 table 名为 Table4,您首先需要分组,因为 e 和 f 的日期重复。

let
    Source = Excel.CurrentWorkbook(){[Name="Table4"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Start Date", type text}, {"Owner", type text}}),
    #"Changed Type with Locale" = Table.TransformColumnTypes(#"Changed Type", {{"Start Date", type date}}, "en-US"),
    #"Grouped Rows" = Table.Group(#"Changed Type with Locale", {"Start Date"}, {{"All", each _, type table [Start Date=nullable date, Owner=nullable text]}})
in
    #"Grouped Rows"

假设此 table 名为 Table3,然后您可以按照

所述添加自定义列

这个table的代码是

let
    Source = Excel.CurrentWorkbook(){[Name="Table3"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Transaction Dates", type text}}),
    #"Changed Type with Locale" = Table.TransformColumnTypes(#"Changed Type", {{"Transaction Dates", type date}}, "en-US"),
    #"Added Custom" = Table.AddColumn(#"Changed Type with Locale", "Custom", (i) => Table.Last( Table.Sort( Table.SelectRows(Table4,each [Start Date] <= i[Transaction Dates]),{"Start Date", Order.Ascending}))),
    #"Expanded Custom" = Table.ExpandRecordColumn(#"Added Custom", "Custom", {"Start Date", "All"}, {"Custom.Start Date", "Custom.All"}),
    #"Expanded Custom.All" = Table.ExpandTableColumn(#"Expanded Custom", "Custom.All", {"Owner"}, {"Owner"})
in
    #"Expanded Custom.All"