You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Excel Power Query关联两表获取指定列的问题求助

问题说明

有两个Excel表格:

  • 表1包含Instance Full Name、DB Instance name等字段
  • 表2包含Full name、Status->name等字段

需要基于**表1的Instance Full Name(或实际匹配的DB Instance name)与表2的Full name**关联,从表2获取Status->name字段。之前尝试在表2中添加自定义列并使用#"table-1"[#"Status->name"]{0},但仅能取到固定行数据,无法得到关联匹配的结果。

表1数据

Organization    Server name Contract    OS Type Server Category Server Type Server Status   DB Instance Status  Environment CPU Cores   Instance Full Name  DB Instance name    DB Software name    Version Edition DB Instance size (GB)   DB datasize (GB)    CG Support
XXXXX XXXXXX    SV021   021             Linux   Virtual_System  Virtual Machine In Production   In Production   Production  1   8   DB-ODIPRD   ODIPRD  Oracle Database Server  Oracle-12.1.0.2.0   Standard    733.21  670.43  Yes

表2数据

Full name   Status->name    Product category->name  Software item->Smtc product catalog id type Managed by provider Collected date  Description.1   Description.2
ODIPRD      In Production   DB  Oracle Database Server  Yes 21-02-2023  Oracle-12.1.0.2.0   Standard

预期结果

Instance Full Name              Full Name         Status->name
DB-ODIPRD                       ODIPRD            In Production
解决方法

方法1:Power Query合并查询(推荐)

这是最规范的关联匹配方式,步骤如下:

  1. 将两个表格导入Power Query编辑器(点击「数据」选项卡 → 「从表格/区域」)
  2. 在表1的编辑器界面,点击「主页」→「合并查询」→「合并查询作为新查询」
  3. 在合并窗口中:
    • 上方选择表1,选中Instance Full Name列(如果实际匹配逻辑是表1的DB Instance name与表2的Full name完全一致,这里选DB Instance name更准确)
    • 下方选择表2,选中Full name列
    • 连接类型选择「左外部(从第一个表获取所有行,从第二个表匹配行)」
    • 点击「确定」
  4. 新查询中会生成一个合并列,点击列标题右侧的展开按钮,仅勾选Status->name和Full name,点击「确定」
  5. 调整列顺序后即可得到预期结果

方法2:自定义列匹配函数

如果一定要用自定义列实现,不能直接取固定行数据,需要先筛选匹配行再取值。在表1中添加自定义列,使用以下公式:

let
    // 获取当前行的Instance Full Name,去掉前缀"DB-"得到匹配值
    matchValue = Text.AfterDelimiter([Instance Full Name], "DB-"),
    // 从表2中筛选出Full name等于匹配值的行
    matchedRows = Table.SelectRows(#"表2", each [Full name] = matchValue),
    // 提取匹配行的Status->name,无匹配则返回null
    status = if Table.RowCount(matchedRows) > 0 then matchedRows[#"Status->name"]{0} else null
in
    status

之后可按需添加Full Name列,或直接通过合并查询完成更高效。

之前操作的问题说明

#"table-1"[#"Status->name"]{0}的逻辑是直接提取表1第一行的Status->name值,没有做任何关联匹配判断,因此无法得到对应行的结果。

内容的提问来源于stack exchange,提问作者Empty Coder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 21:21:48