如何在Power Query中按第二物料编号动态计算库存结余?
在Power Query中实现库存结余计算
完全可以在Power Query中实现这个逻辑,步骤如下(假设你的表列名为:第二物料编号、日期、需求、总库存):
按物料分组
转到「转换」选项卡,点击「分组依据」:- 分组依据字段选择「第二物料编号」
- 新列名设为「组内数据」,操作选择「所有行」
组内排序并计算库存结余
添加自定义列,使用Power Query M语言处理每组内的排序和累计计算:Table.AddColumn( 分组后的表, "处理后数据", each let // 按日期升序排序组内数据 sortedTable = Table.Sort([组内数据], {{"日期", Order.Ascending}}), // 获取组内第一行的库存结余:总库存 - 需求 firstBalance = sortedTable[总库存]{0} - sortedTable[需求]{0}, // 用List.Accumulate计算后续行的结余:上一行结余 - 当前需求 balanceList = List.Accumulate( List.Skip(sortedTable, 1), {firstBalance}, (prevList, currentRow) => prevList & {List.Last(prevList) - currentRow[需求]} ), // 将计算结果合并到原表中 finalTable = Table.AddColumn(sortedTable, "库存结余", each balanceList{Table.PositionOf(sortedTable, _)}) in finalTable注意:把代码中的「分组后的表」替换成你实际的表名称,列名如果和示例不符也要对应修改。
展开数据并清理
点击「处理后数据」列右侧的展开按钮,选择所有需要保留的列(包括新生成的「库存结余」),之后可以删除「组内数据」这类临时列。
这个逻辑和你之前用的Excel公式=IF(A700=A699,J699-D700,E700-D700)完全匹配:同物料的行按日期排序后,第一行用总库存减需求,后续行自动用上一行的结余减去当前需求。
内容的提问来源于stack exchange,提问作者Guillermo Luna
相关产品推荐
相关产品推荐

