Lazy loaded image一个案例学习理解let...in骨架函数的嵌套逻辑

type
Post
status
Published
date
Dec 2, 2025
slug
summary
tags
财务bp
PowerBI
Power Query
数据分析
可视化图表
老汪洞察
category
从Power Query到Power BI,入门到精通
icon
password
notion image

(本文3000字,阅读需要8分钟左右)
我为你设计了一个“跨境电商最终售价计算”的业务场景。实操课件示例在下方下载。

一. 业务场景背景

假设你是一家跨境电商公司的财务。你们有一张产品报价表,但最终售价的计算规则比较复杂,取决于“销售渠道”:
  • 如果是“出口(Export)”渠道
    • 政策:可以退税,价格打9折( * 0.9 )。
  • 如果是“内销(Local)”渠道
    • 政策:需要缴纳消费税,价格上浮10%( * 1.1 )。
你希望在一个步骤里直接算出最终售价,并且为了公式清晰,你想把最终售价,即“打折价”或“含税价”先定义好,再做判断。

二. 模拟数据(复制到Excel)

将下表复制到Excel中,并通过“数据”——“来自表格/区域”,加载至PQ编辑器操作
产品名称
销售渠道
基础标价
蓝牙耳机
Export
100
智能手表
Local
200
充电宝
Export
50
手机壳
Local
20

三、具体操作步骤

  1. 【来自表格/区域】,数据加载进 PQ。
  1. 【高级编辑器】
  1. 你会看到类似这样的默认代码:
    1. 修改代码
        • 更改的类型 这一步骤代码的末尾加个逗号 ,
        • 在下面粘贴核心逻辑(见下方代码)。
    1. 把最后的 in 更改的类型 改成 in 计算最终售价
    1. 最终代码如下:
      notion image
      这样,你就成功把“死代码”变成了处理“活数据”的实战操作了!

      四、 代码深度解读

      我们重点看 第 3 步 (计算最终售价),这里发生了什么?

      外层 (大房子)

      • Power Query 正在执行 Table.AddColumn
      • 它启动了 each 循环,准备遍历表格的每一行(比如第一行“蓝牙耳机”)。

      内层 (小抽屉 / 嵌套的 let ... in)

      当处理“蓝牙耳机”这一行时,它并没有急着直接算结果,而是先打开了一个临时抽屉
      1. 定义 出口价:它先算了一下 100 * 0.9 = 90。把这个数暂存在抽屉里,贴个标签叫“出口价”。
      1. 定义 内销价:它又算了一下 100 * 1.1 = 110。把这个数也暂存在抽屉里,贴个标签叫“内销价”。
      1. 执行 in 判断
          • 逻辑:if [销售渠道] = "Export" ...
          • 因为这一行是 Export,所以取出抽屉里的 出口价 (90)。
          • 注意:那个 内销价 (110) 虽然算出来了,但因为没被选中,用完就丢掉了。

      为什么要这么写?(好处)

      如果不用嵌套,你的公式得写成这样:
      看起来好像更简单?但在复杂场景下,嵌套写法的优势就出来了:
      1. 逻辑解耦:你可以把复杂的数学公式(比如税费计算可能包含十几项)先封装成 出口价 这样一个简单的名字。
      1. 避免重复计算:如果你的判断逻辑很复杂,或者需要在多处引用这个计算结果,先定义变量可以避免写多遍同样的公式。
      1. 可读性极高:别人读你的代码时,看到 let 出口价 = ... 就知道你在干嘛,最后看 if ... then 出口价 就非常像自然语言。

      总结

      在这个案例中:
      • 更改的类型 是所有人都能看到的全局步骤
      • 出口价内销价 是只有在计算“最终售价”这一列时,且仅在当前行里才存在的局部临时变量。出了这一行,谁也不认识它们。
       

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

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