用其他查询的值替换单元格中的列表

Replace list in cell by values from other query

我在 power 查询中定义智能数据替换时遇到问题。

我正在从多个列表中的 SharePoint 查询数据以创建所需的报告。

如果我需要替换仅包含 1 个数字的列中的值,我使用合并查询函数作为“vlookup”替换。

当一列包含多个用分号分隔的数字时,问题就出现了。

例子 源列表: |唯一编号 |名称 | Assignees_ID| |-|-|-| |史诗1 |布拉布拉1| 1 | |史诗2 |布拉布拉2| 1;2;3|

"Vlookup_list" 查询: |Assignees_ID|Assignees_Names| |-|-| |1|标记| |2|伊琳娜| |3|巴特|

预期输出: |唯一编号 |名称 | Assignees_ID |Assignees_Names | |-|-|-| - | |史诗1 |布拉布拉1| 1 |标记| |史诗2 |布拉布拉2| 1;2;3|标记;伊琳娜;巴特|

那么有没有一种聪明的方法来执行这种转换?我正在尝试多种可能性,但我的知识太少无法执行。

亲切的问候 巴尔托斯

在 powerquery 中

将 Vlookup_list 加载到 powerquery 中。将查询命名为 VlookupNamesQuery 文件 .. 关闭并加载到 ... 仅创建连接

将示例源列表加载到 powerquery

右键单击 Assignees_ID 列并按每个分号拆分成行

VlookupNamesQuery 中合并并使用左外连接匹配 ID。使用列顶部的箭头展开以获得 Assignees_Names

根据 UniqueID 和名称分组。使用 home ... 高级编辑器 ... 修改代码以使用 Text.Combine 将拆分的代码放在一起,如下所示

let Source = Excel.CurrentWorkbook(){[Name="ExampleSourceListRange"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"UniqueID", type text}, {"Name", type text}, {"Assignees_ID", type text}}),
#"Split Column by Delimiter" = Table.ExpandListColumn(Table.TransformColumns(#"Changed Type", {{"Assignees_ID", Splitter.SplitTextByDelimiter(";", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "Assignees_ID"),
#"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Assignees_ID", Int64.Type}}),
#"Merged Queries" = Table.NestedJoin(#"Changed Type1",{"Assignees_ID"},VlookupNamesQuery,{"Assignees_ID"},"Names",JoinKind.LeftOuter),
#"Expanded Names" = Table.ExpandTableColumn(#"Merged Queries", "Names", {"Assignees_Names"}, {"Assignees_Names"}),
#"Grouped Rows" = Table.Group(#"Expanded Names", {"UniqueID", "Name"}, {
    {"Assignees_ID", each Text.Combine(List.Transform([Assignees_ID], Text.From), ";"), type text},
    {"Assignees_Names", each Text.Combine(List.Transform([Assignees_Names], Text.From), ";"), type text}
})
in  #"Grouped Rows"