Power Query中分号分隔多值列如何从其他查询匹配替换对应值
Power Query 分号分隔多值ID批量映射为姓名方案
方法1:纯界面操作(无需写M代码)
- 首先确保你已经将源列表、
Vlookup_list都加载到Power Query编辑器中 - 选中源列表的
Assignees_ID列,依次点击【转换】选项卡-【拆分列】-【按分隔符】- 分隔符选择「分号」,展开【高级选项】,勾选【拆分为行】,点击确定
- 拆分完成后,点击【主页】选项卡-【合并查询】,选择和
Vlookup_list合并,匹配列为两侧的Assignees_ID,联接种类选「左外部」 - 合并后点击结果列右上角的扩展按钮,仅勾选
Assignees_Names列,取消勾选「使用原始列名作为前缀」,点击确定 - 按住Ctrl选中
Unique ID、Name两列,右键点击【分组依据】- 新列名输入
Assignees_Names,操作选择【将值连接起来】,分隔符输入;(分号加空格),列选择Assignees_Names,点击确定即可得到预期结果
- 新列名输入
方法2:自定义列一步实现(效率更高,无需改动表结构)
首先添加一个自定义步骤,将映射表转为内存查找记录,步骤公式为:IDNameMap = Record.FromList(Vlookup_list[Assignees_Names], Text.FromList(Vlookup_list[Assignees_ID]))
随后在源表中添加自定义列,输入公式:
Text.Combine( List.Transform( Text.Split([Assignees_ID], ";"), each try Record.Field(IDNameMap, _) otherwise _ ), "; " )
公式说明:先把多值ID按分号拆分为列表,遍历每个ID从预存的映射记录中匹配对应姓名,最后把匹配到的姓名用分号加空格拼接,加
try otherwise是为了避免映射表没有对应ID时报错,缺失的ID会直接保留原值。
最后删除原来的Assignees_ID列即可。
内容的提问来源于stack exchange,提问作者Bart Wy
相关产品推荐
相关产品推荐

