Power Query操作:如何为指定行插入UDI编号文本?
用Power Query自动匹配医疗设备UDI与产品信息的实现方法
前提假设
假设你的原始表格结构如下(黄底区域为产品元数据,橙底为对应UDI):
| 产品名称 | 料号 | 批次 | UDI编号 |
|---|---|---|---|
| 设备A | P001 | L001 | |
| L002 | |||
| UDI001 | |||
| UDI002 | |||
| 设备B | P002 | L003 | |
| UDI003 |
步骤1:导入数据到Power Query
- 选中原始数据区域,点击Excel顶部「数据」选项卡 → 「从表格/区域」,若数据无表头,取消勾选「我的表格有标题」,进入Power Query编辑器。
- 若数据无表头,右键点击列名(如「列1」「列2」),重命名为「产品名称」「料号」「批次」「UDI编号」。
步骤2:添加组ID标记(区分不同产品组)
这一步是核心,用来把同一个产品的元数据和UDI划归到同一组:
- 点击「添加列」选项卡 → 「自定义列」,输入公式:
let // 提取产品名称列的所有值,生成组ID列表 组ID列表 = List.Accumulate(Table.ToList(源[产品名称]), {}, (累计列表, 当前值) => if 当前值 <> null and 当前值 <> "" then 累计列表 & {List.Count(累计列表) + 1} else 累计列表 & {List.Last(累计列表, 1)} // 空值则继承上一个组ID ) in 组ID列表{[Index]} - 命名新列为「组ID」,点击确定。此时同一产品的所有行(黄底+橙底)会拥有相同的组ID。
步骤3:拆分产品元数据与UDI数据
提取产品元数据(黄底区域)
- 点击「开始」选项卡 → 「筛选行」→ 「保留行」→ 「保留符合条件的行」,设置条件:
[产品名称] <> null and [产品名称] <> ""或者[批次] <> null and [批次] <> ""(根据你的黄底区域标识调整)。 - 保留「组ID」「产品名称」「料号」「批次」列,删除其他列。
提取UDI数据(橙底区域)
- 回到原始查询(点击左侧查询面板的「源」),重复筛选操作,设置条件:
[UDI编号] <> null and [UDI编号] <> ""。 - 保留「组ID」「UDI编号」列,删除其他列。
步骤4:合并两个表格(配对产品与UDI)
- 点击「开始」选项卡 → 「合并查询」→ 「合并查询作为新查询」。
- 在合并窗口中,左侧选择产品元数据表,右侧选择UDI数据表,匹配列都选「组ID」,连接类型选「左外部」,点击确定。
- 展开合并后的「UDI编号」列(点击列名旁的箭头,取消勾选「使用原始列名作为前缀」)。
步骤5:清理与整理数据
- 删除「组ID」列,调整列顺序为「产品名称」「料号」「批次」「UDI编号」。
- 若存在重复的产品元数据行,点击「开始」→ 「移除重复项」,选择需要去重的列(如「产品名称」「料号」「批次」)。
步骤6:加载回Excel
- 点击「关闭并上载」,处理后的表格会自动导入到新工作表,完成批量匹配。
常见调整点
- 如果黄底区域的标识不是产品名称,比如是特定的单元格内容(如「产品信息」),修改步骤2的条件即可(把
当前值 <> null and 当前值 <> ""换成当前值 = "产品信息")。 - 若批次有多行对应多个UDI,合并后会自动生成一一对应的行,无需手动复制。
内容的提问来源于stack exchange,提问作者user23513328
相关产品推荐
相关产品推荐

