Lazy loaded imageEP020:知识点综合实战之动态交互查询(上下文嵌套、筛选、精准钻取值、动态参数)

type
status
date
slug
summary
tags
category
icon
password
notion image

这节课的内容非常硬核,我们会综合运用前面课程学到的多个核心知识点,包括:
  1. 嵌套(上下文嵌套):多层 each 环境的引用。
  1. 筛选 (Table.SelectRows):根据条件过滤表格。
  1. 精准取值:使用 {}  [] 获取特定单元格的值。
  1. 动态参数:利用 Excel 表格作为参数输入源,实现交互式查询。
这节课会展示 Power Query 下一个非常高级的应用场景:动态交互查询
  1. Excel 端操作:用户只需要在 Excel 单元格里输入信息,然后点击“刷新”。
  1. Power Query 端计算:PowerQuery后台会根据用户输入的信息(比如输入王强),自动运行我们写在里面的逻辑:比如找王强 -> 找王强的部门 -> 找该部门所有人
  1. 结果返回:Excel会自动抓取并展示出王强所在部门的完整名单。
 
这不仅仅是筛选,这是“基于关联关系的二次筛选”。它会教会我们如何用一个已知条件(姓名),推导出中间条件(部门),再用中间条件反查出最终结果(同部门所有人员),这是数据分析中非常经典的逻辑链条。
为了让你深刻理解这节课的“动态关联查询”逻辑,我为你设计了一个财务BP费用管控的场景。这个场景比简单的“查部门”更具实战意义,它涉及多维度数据穿透分析

业务场景:成本中心异常费用稽查

背景

你是公司的财务BP。你收到一条线索,员工 “王强” 的一笔报销可能存在合规风险。 为了进行全面审计,你不能只看王强这一笔单子,你需要立刻调出王强所属的部门(成本中心)在当月发生的所有费用明细,看看该部门整体是否有异常报销行为。

难点

你手头只有一张巨大的《费用明细表》,你不知道“王强”属于哪个成本中心(可能是销售一部,也可能是研发二部),你需要通过 Excel 输入“王强”,然后Power Query自动帮你完成:
  1. 找到王强。
  1. 发现王强属于“CC-202(华东营销部)”。
  1. 把“CC-202”的所有人的所有单据全部抓出来给你看。

一、模拟数据源 (请复制到 Excel)

请在 Excel 中建立两个 Sheet(工作表)。

表 1:查询端 (Sheet名为 "Input")

这是你在 Excel 前台操作的地方。
待查人员

王强

(操作:选中,Ctrl+T 创建表,表名修改为 查询表)

表 2:数据端 (Sheet名为 "Data")

这是后台的流水账,数据比较丰富。
单据号
报销日期
员工姓名
成本中心代码
成本中心名称
费用科目
金额
备注
BX001
2023/10/1
张伟
CC-101
总办
办公费
500
耗材
BX002
2023/10/2
李娜
CC-202
华东营销部
业务招待费
2000
客户饭局
BX003
2023/10/3
刘洋
CC-305
研发部
差旅费
1500
北京出差
BX004
2023/10/5
王强
CC-202
华东营销部
市内交通
50
打车
BX005
2023/10/6
赵敏
CC-202
华东营销部
业务招待费
8000
KTV团建
BX006
2023/10/7
孙悟空
CC-305
研发部
研发材料
12000
服务器
BX007
2023/10/8
王强
CC-202
华东营销部
差旅费
3000
上海展会
(操作:选中,Ctrl+T 创建表,表名修改为 费用明细表)

二、 Power Query 实操步骤

第一步:数据接入

  1. 分别点击两张表,使用 “数据” -> “来自表格/区域” 将它们加载到 Power Query。
  1. 现在左侧应该有两个查询:查询表费用明细表

第二步:编写“套娃”逻辑 (核心)

请确保你现在停留在 Power Query 编辑器界面,左侧选中了 查询表(也就是只有“王强”那一行的表)。

1. 设计思路(先搞懂我们要对机器说什么)

我们想让 Power Query 在“自定义列”的那个格子里,装入一张新表。这张新表的生成逻辑是这样的:
  • 指令 A(找部门):请你先去旁边那张 费用明细表 里翻一翻,找到 [员工姓名] 等于 我当前这行 [待查人员](王强) 的那个人,把他的 [成本中心代码] 抄下来。(预判结果:拿到 "CC-202")
  • 指令 B(找同伙):然后请你费用明细表 里翻一翻,把所有 [成本中心代码] 等于 刚才抄下来的那个代码(CC-202) 的所有行,都剪贴过来给我。
所以,把指令 A 塞进 指令 B 里,就是我们要写的取数函数。

2. 手把手操作流程

① 打开窗口
  • 在上方菜单栏点击 【添加列】
  • 点击 【自定义列】 按钮。
② 设置列名
  • 在弹出的窗口中,“新列名”输入:部门审计清单
③ 编写公式(这是最关键的一步) 请在“自定义列公式”的大框里,完整复制下面的代码(不要自己敲,符号容易错):
🛑 暂停!别急着点确定,先看懂这段代码在干什么(逐层拆解):
我们由内向外看(先看最核心的“指令 A”):
  • 第一层(核心):找王强的部门代码Table.SelectRows(费用明细表, (中层) => 中层[员工姓名] = [待查人员])
    • 这句是在筛选表。[待查人员] 指的是你当前表里的“王强”。
    • 结果是:找到了一行数据(王强那次打车50元的记录)。
    • 后缀 [成本中心代码]{0}
      • 这是精准取值
      • [成本中心代码]:把那一行数据变成只有一列(列表)。
      • {0}:拿出这列的第 1 个值。
    • 结论:这一长串代码运行完,机器手里拿到的就是字符串 "CC-202"
  • 第二层(外壳):筛选同部门所有人Table.SelectRows(费用明细表, (内层) => 内层[成本中心代码] = ... )
    • 现在把刚才算出来的结果代入进去,就变成了:
    • Table.SelectRows(费用明细表, (内层) => 内层[成本中心代码] = "CC-202" )
    • 结论:这不就是筛选出所有“华东营销部”的单据吗?
④ 点击确定
  • 现在你会看到,在“王强”的旁边多了一列 部门审计清单,里面的内容是黄色的 Table 字样。
  • 这说明:我们成功地把一整张明细表,塞进了这一个单元格里!
notion image

第三步:展开数据 (把“压缩包”解压)

现在你看到的是打包好的 Table,我们需要把它展开,才能看到里面的“李娜”、“赵敏”。
① 点击展开图标
  • 把鼠标移到新列 部门审计清单 的标题右侧,你会看到一个由两个小箭头组成的图标(↱↲)。点击它。
② 选择需要的字段
  • 弹出的菜单里,展示了那个部门里的所有信息列。
  • 建议勾选:单据号报销日期员工姓名费用科目金额备注
  • 成本中心代码可以不选,因为肯定都是一样的)。
③ 关键一步:去勾选前缀
  • 一定要取消勾选 最下面的 “使用原始列名作为前缀”
    • 如果不取消,列名会变成 部门审计清单.员工姓名,很难看。
    • 取消后,列名就是干净的 员工姓名
④ 点击确定
  • 见证奇迹的时刻:原本只有 1 行的表,瞬间“爆炸”变成了 4 行!
  • 你会清晰地看到:王强、李娜、赵敏 三个人的单据都列在了这里。
notion image

第四步:加载回 Excel (交付成果)

① 关闭并上载
  • 点击左上角 【主页】 -> 【关闭并上载至】
② 查看结果
  • 然后在这个input表选一个合适的位置,把这个审计结果通过表格放出来。
  • 现在,你可以试着去 Input 表(输入表),把“王强”改成 “张伟”
  • 然后点击 【数据】 选项卡 -> 【全部刷新】
  • 你会发现结果表瞬间变了,变成了张伟所在的“总办”的所有费用!
notion image

总结:为什么这一步这么难?

因为你在一个公式里,同时指挥了三个对象打架:
  1. [待查人员]:这是 Excel 传过来的“王强”(你的查询表)。
  1. (中层):这是为了找王强的部门,临时扫描的一遍费用表。
  1. (内层):这是为了找同部门同事,正式扫描的一遍费用表。
为了不让机器搞混“谁是谁”,我们必须用 Table.SelectRows 把它们层层包裹起来。这就是 M 函数处理“多表动态关联”的核心魅力。

 
【扫码识别下发二维码,获取本文使用到的及历史以来提及、发布的相关精选和原创资料,和我们一起充电,加入后可享受每月6次免费咨询提问,帮助解决您的特定问题!】

如果本篇文章对您有帮助或启发,请帮我们点赞、转发、推荐、关注,让更多想转型财务BP、锻造数据分析和可视化洞察能力的财务同行们看到,关注【老汪洞察】,不迷路!
notion image
notion image
 
温馨提示
🙏🏻
如果您不想错过【老汪洞察】的文章,请将我们设为"星标",这样每次最新文章推送才会第一时间出现在您的订阅列表里。 方法:点击文章页面左上角蓝色文字“老汪洞察”进入主页,点击关注后,再点主页右上角"...",然后选择"设为星标",即可完成,感谢您的支持。
 
上一篇
EP021:List.Transform遍历转换函数和代码版汇总文件夹下Excel工作簿
下一篇
EP019:理解上下文(each)和((x)=>)嵌套,解决中国式排名问题
Loading...
文章列表
让财税成为经营的力量
管理报表
从Power Query到Power BI,入门到精通
699课程讲义
VBA小工具
电脑与网络
知识运用