我认为这可能提供您正在寻找的结果。它不会进行简单的基于单个条件的合并。它使用了组合的合并:TableA和TableB之间的一个基于TableA的X列每行的第一个字符和TableB中Y列的每一行的值,另一个基于Column每行的前两个字符TableA 中的 X 和 TableB 的 Y 列中每一行的值。它扩展每个合并的结果列以仅显示列中合并的 Y 列值。然后它将这两个合并结果列的结果合并为一列,并使用该列再次与 TableB 的 Y 列合并,以拉入其余的 Y 列值。
let
Source = Excel.CurrentWorkbook(){[Name="TableA"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Column X", type text}, {"Column X 2", type number}, {"Column X 3", type number}, {"Column X 4", type number}, {"Column X 5", type number}, {"Column X 6", type number}, {"Column X 7", type number}}),
#"Added Custom" = Table.AddColumn(#"Changed Type", "Column X First 1", each Text.Start([Column X],1)),
#"Added Custom1" = Table.AddColumn(#"Added Custom", "Column X First 2", each Text.Start([Column X],2)),
#"Merged Queries" = Table.NestedJoin(#"Added Custom1", {"Column X First 1"}, TableB, {"Column Y"}, "Column Y First 1", JoinKind.LeftOuter),
#"Expanded TableB" = Table.ExpandTableColumn(#"Merged Queries", "Column Y First 1", {"Column Y"}, {"Column Y First 1"}),
#"Merged Queries1" = Table.NestedJoin(#"Expanded TableB", {"Column X First 2"}, TableB, {"Column Y"}, "Column Y First 2", JoinKind.LeftOuter),
#"Expanded TableB1" = Table.ExpandTableColumn(#"Merged Queries1", "Column Y First 2", {"Column Y"}, {"Column Y First 2"}),
#"Merged Columns" = Table.CombineColumns(Table.TransformColumnTypes(#"Expanded TableB1", {{"Column Y First 2", type text}}, "en-US"),{"Column Y First 1", "Column Y First 2"},Combiner.CombineTextByDelimiter("", QuoteStyle.None),"Column Y Match"),
#"Merged Queries2" = Table.NestedJoin(#"Merged Columns", {"Column Y Match"}, TableB, {"Column Y"}, "TableB", JoinKind.LeftOuter),
#"Expanded TableB2" = Table.ExpandTableColumn(#"Merged Queries2", "TableB", {"Column 1", "Column 2", "Column 3", "Column Y"}, {"Column 1", "Column 2", "Column 3", "Column Y"}),
#"Removed Columns" = Table.RemoveColumns(#"Expanded TableB2",{"Column X First 1", "Column X First 2", "Column Y Match"})
in
#"Removed Columns"