这可以通过 Power Query 完成。以下查询假定您已使用数据创建了表,在 Sheet1 上命名为“Table1”,在 Sheet2 上命名为“Table2”。这将需要 5 个单独的查询:2 个用于数据表、一个函数、一个合并表和一个用于合并数据的最终查询。对于所有这些,添加一个新的空白查询(数据选项卡 > 获取数据 > 从其他来源 > 空白查询)。您还需要为 Sheet1 上名为“YearValue”的单元格 D1 创建一个命名范围。
年值函数
将以下代码粘贴到高级编辑器(Power Query > View > Advanced Editor)。将名称(右侧)更改为“YearValue”。
let
Source = Excel.CurrentWorkbook(){[Name="YearValue"]}[Content]{0}[Column1]
in
Source
仅关闭并加载到连接。
表 1 查询
将以下代码粘贴到高级编辑器(Power Query > View > Advanced Editor)。将名称(右侧)更改为“Table1”。
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
TypeColumns = Table.TransformColumnTypes(Source,{{"AccountID", Int64.Type}, {"Cost", Int64.Type}}),
AddYearColumn = Table.AddColumn(TypeColumns, "Year", each YearValue)
in
AddYearColumn
仅关闭并加载到连接。
表 2 查询
将以下代码粘贴到高级编辑器(Power Query > View > Advanced Editor)。将名称(右侧)更改为“Table2”。
let
Source = Excel.CurrentWorkbook(){[Name="Table2"]}[Content],
TypeColumns = Table.TransformColumnTypes(Source,{{"Year", Int64.Type}, {"AccountID", Int64.Type}, {"Location", type text}, {"Phone#", type text}, {"Email type", type text}, {"Cost", Int64.Type}})
in
TypeColumns
仅关闭并加载到连接。
合并表查询
将以下代码粘贴到高级编辑器(Power Query > View > Advanced Editor)。将名称(右侧)更改为“MergeTable”。
let
Source = Table.FromColumns({List.Distinct(List.Select(Table1[AccountID]&Table2[AccountID],each _ <> null))},type table[AccountID = text]),
MergeQueries = Table.NestedJoin(Source,{"AccountID"},Table1,{"AccountID"},"Table1",JoinKind.LeftOuter),
ExpandedTable1 = Table.ExpandTableColumn(MergeQueries, "Table1", {"AccountID", "Cost", "Year"}, {"Table1.AccountID", "Table1.Cost", "Table1.Year"}),
MergeQueries2 = Table.NestedJoin(ExpandedTable1,{"AccountID"},Table2,{"AccountID"},"Table2",JoinKind.LeftOuter),
ExpandedTable2 = Table.ExpandTableColumn(MergeQueries2, "Table2", {"Year", "AccountID", "Location", "Phone#", "Email type", "Cost"}, {"Table2.Year", "Table2.AccountID", "Table2.Location", "Table2.Phone#", "Table2.Email type", "Table2.Cost"}),
RemoveColumns = Table.RemoveColumns(ExpandedTable2,{"AccountID", "Table2.Year", "Table2.AccountID", "Table2.Cost"}),
ReorderColumns = Table.ReorderColumns(RemoveColumns,{"Table1.Year", "Table1.AccountID", "Table2.Location", "Table2.Phone#", "Table2.Email type", "Table1.Cost"}),
RenameColumns = Table.RenameColumns(ReorderColumns,{{"Table1.Year", "Year"}, {"Table1.AccountID", "AccountID"}, {"Table2.Location", "Location"}, {"Table2.Phone#", "Phone#"}, {"Table2.Email type", "Email type"}, {"Table1.Cost", "Cost"}})
in
RenameColumns
仅关闭并加载到连接。
组合表查询
将以下代码粘贴到高级编辑器(Power Query > View > Advanced Editor)。将名称(右侧)更改为“CombineTables”。
let
Source = Table.Combine({Table2, MergeTable}),
FilterRows = Table.SelectRows(Source, each ([Year] <> null)),
SortRows = Table.Sort(FilterRows,{{"AccountID", Order.Ascending}})
in
SortRows
关闭并加载工作表(根据需要)。
HTH