当前位置:首页>python>不用Python!Power Query累计计算客户每日欠款

不用Python!Power Query累计计算客户每日欠款

  • 2026-09-30 16:27:27
不用Python!Power Query累计计算客户每日欠款
还没关注?↑↑↑伸出手指点上方“名片”这里
客户欠款每天怎么算?发货减回款,简单。

但客户多、日期杂、数据多,手工算估计会头秃。 之前用Pandas写过一版(视频在文末),今天用Power Query实现。

需求

这里有两个表格,一个是发货记录,有每天的发货金额明细;一个是回款明细,记录的是每个客户的回款日期和金额

现在的需求是:要统计出每个客户,每天的欠款金额。

这个需求,用Power Query如何解决? 

其实之前也录过类似的案例,计算现金日记账的余额,思路是相通的。

处理步骤

  1. 先合并两个表,可以用“追加查询”

  2. 按客户进行分组,并将得到的结果表按日期升序排列

  3. 关键一步:将表格转为列表,再迭代处理。

     PQ里没有Pandas的cumsum(累计求和),所以要用List.Accumulate手动迭代:

    • 初始值:{{},0}(空列表+当前余额0)
    • 遍历每一行:余额 = 上一条余额 + 发货 - 回款
    • 把结果写回列表 
      简单说就是带着一个"记忆变量"遍历表格,记住上一条的余额,算下一条的时候用上。
  1. 再将列表转为表格,每天的余额就有了。如果每天有多条记录(比如一天发了3次货),需要按天合并,只保留最后一条余额。

  2. 再次分组合并,发货、回款及余额数据都在同一行显示。 

    要注意的是:欠款余额是取最后一个值,不能进行求和汇总

  3. 最后,把【计数】列深化出来,表格合并下即得到结果。

最终代码

let    源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content],    更改的类型 = Table.TransformColumnTypes(源,{{"日期", type date}}),    追加的查询 = Table.Combine({更改的类型, 回款}),    分组的行 = Table.Group(追加的查询, {"客户"}, {"计数", each [                a=Table.Sort(_,{{"日期", Order.Ascending}}),                b=List.Accumulate( Table.ToRows(a),{{},0},(x,y)=> {                          x{0} & { y & { List.Sum({x{1},y{3},-y{4}}) }},                          List.Sum({x{1},y{3},-y{4}})}){0},                c=Table.FromRows (b,Table.ColumnNames(a)&{"欠款余额"}),                d=Table.Group(c, {"日期", "客户"}, {            {"商品", each Text.Combine([商品],",")}, {"发货金额", each List.Sum([发货金额])},             {"回款金额", each List.Sum([回款金额])}, {"欠款余额", each List.Last([欠款余额])},             {"回款方式", each Text.Combine([回款方式],",")}, {"备注", each Text.Combine([备注],",")}})          ][d]}),    自定义1 = Table.Combine( 分组的行[计数])in    自定义1

pandas讲解视频

Pandas适合会Python、数据量大的场景;

Power Query适合Excel用户、不想写代码的场景。 

核心思路都是迭代累计:上一条余额 + 发货 - 回款 = 当前余额。

文件和完整代码,后台回复 "欠款计算" 自取。

遇到报错或想看Power BI版本(一个DAX公式搞定),评论区留言。

完

往期推荐:

powerquery|保姆级教程!3分钟合并多个数据结构不同的表格,还能动态更新

HR/行政必看!3分钟学会powerquery考勤统计,从此告别手工计数

PowerQuery案例:如何按指定行数拆分并横向展开

powerquery|后悔没早点知道这个方法,如何按标题分组

数据结构超复杂,怎么清洗

PowerQuery|转几下,就把PDF数据变成表

PowerQuery案例1:循环遍历快速对BOM层级分组并添加列,这个方法太香了!
PowerQuery案例2:文本也能比大小?轻松搞定特殊分组
PowerQuery案例3:为什么别人的PQ加列不报错?秘密就藏在这段动态M代码里!
owerQuery案例4:一维表转二维汇总表?除了动态列,逆透视也能搞定!
PowerQuery案例5:合并单元格别手动拆,PQ自动填充汇总
PowerQuery案例6:区间分档别用IF套了,PQ动态匹配一改就生效
PowerQuery案例7:横表转竖表别手动复制了,PQ笛卡尔积自动规整

最新文章

随机文章