资讯动态

Excel供应链分析实战:移动加权平均与数据预测自动化

发布时间:2026/9/1 18:23:30 来源:尧图企业网站定制
供应链数据分析没有想象中那么高门槛。很多中小团队不需要上BI系统不一定要写Python一张Excel把采购、库存、物流数据整理成规范的一维表配合移动加权平均和预测函数就能完成日常的库存补货、采购成本与供应商绩效分析。这篇文章会把“Excel供应链分析 数据预测”完整串起来重点解决四个问题移动加权平均单价在Excel里怎么算采购成本、供应商绩效和物流数据怎么拆用移动平均、加权移动平均、FORECAST.ETS做数据预测怎么落地Power Query 和 VBA 如何把每月重复的分析工作变成自动化任务。先说结论这套方法的核心不是函数有多冷门而是把数据表结构建对。表一乱公式再复杂也算不出可用的数字。适合采购、计划、物流、运营数据分析岗位的同学下面可以直接照着搭。1. 核心能力速览Excel供应链分析能做到多深很多人在采购和供应链管理场景里只用Excel做明细记录没用起来分析和预测能力。实际上Excel在供应链分析里能承担的工作比大多数人以为的要多。能力项说明分析对象采购订单、库存流水、物流运输、供应商绩效、需求预测核心算法移动加权平均、简单移动平均、加权移动平均、指数平滑FORECAST.ETS主要功能采购成本分析、ABC分类、库存周转率、安全库存、到货准时率、需求预测工具版本Excel 2016以上均可FORECAST.ETS需要Excel 2016或Microsoft 365难度中等需要掌握SUMIFS、数据透视表、结构化引用基本概念自动化能力Power Query导入清洗、VBA一键刷新、透视表联动适合场景中小团队、月度或周度供应链分析、采购与库存管理不适合场景亿级数据量、多用户实时在线协作这种场景建议用数据库或BI工具这套方案的直接收益是不额外买软件不写复杂程序把采购、库存、物流数据整理成标准表之后大多数分析指标用公式和透视表就能持续计算而且每月新数据进来直接刷新即可。2. 适用场景与使用边界谁适合谁不适合Excel供应链分析适合的是“数据量可控、分析周期明确、能接受手工整理原始数据”的团队。典型的使用者包括采购专员月底复盘采购成本、核对供应商订单量和到货准时率。库存计划用移动加权平均核算库存成本计算安全库存和再订货点。物流运营分析运输线路的单位成本、到货时长找出异常线路。数据分析岗在BI和Python之外用Excel快速搭建原型报表给业务验证。不适合的场景也很明确。如果企业每天产生几十万行订单数据多个部门需要同时在线编辑和实时协作Excel就不合适。这时候数据应该进数据库或数据仓库分析用Power BI、Tableau或PythonExcel可以作为快速验证工具而非主系统。使用边界要重点提醒采购单价、供应商合同价格、物流运费属于商业敏感数据。企业内部使用没问题但如果要分享给外部或跨部门建议先做脱敏处理隐藏供应商名称、合同价格等敏感字段只保留分析结果。3. 数据模型设计采购、库存、物流一张表怎么搭Excel供应链分析能不能跑通90%取决于基础表结构是否规范。下面这几张表是完整方案的最小集。3.1 物料主数据表物料主数据表描述“产品本身”的属性后续所有分析都靠物料编码做关联。字段名示例说明物料编码A001主键全表唯一不要有空格物料名称铝合金支架显示名称物料分类原材料用于分类汇总计量单位件数量单位安全库存200库存低于此值触发补货采购提前期7天从下单到到货的周期3.2 采购订单明细表采购订单明细表记录每一次采购交易是采购成本分析的核心数据源。字段名示例说明采购订单号PO-2026-001订单唯一标识下单日期2026-01-05必须为真正的日期格式到货日期2026-01-12用于计算到货时长供应商华东铝业供应商名称物料编码A001关联物料主数据数量500采购数量单价12.5不含税单价金额6250数量×单价可用公式生成3.3 库存流水表库存流水表记录每一次出入库动作是移动加权平均计算的主要数据源。字段名示例说明日期2026-01-01业务日期物料编码A001关联物料主数据业务类型期初/采购入库/销售出库/领料出库类型决定计算公式数量100入库为正出库为负单价10采购入库时填写采购单价出库不填金额1000数量×单价用于金额加权3.4 物流运输表物流运输表记录运输成本和时效用于物流分析。字段名示例说明运单号W-2026-001唯一标识发货日期2026-01-08用于时效计算到货日期2026-01-10到货时间运输方式公路承运方式发货地上海线路起点到货地成都线路终点运费1200本单运输费用重量/体积800kg用于计算单位运输成本这几张表统一使用一维表结构一行一条记录第一行是字段名不合并单元格不使用多级表头。日期列用真正的日期格式不要用文本“2026/01/05”。物料编码在所有表里保持完全一致避免前后空格。建表完成后把每张表通过“CtrlT”转为Excel表格Table后续使用结构化引用比如 SUMIFS(采购表[数量], 采购表[物料编码], A2)新数据追加后公式和透视表会自动扩展范围。4. 移动加权平均在Excel中的两种实现移动加权平均是供应链和财务核算里最常用的库存成本方法。它的逻辑是每次采购入库后重新计算一次加权平均单价。新单价(期初结存金额本期采购金额)÷(期初结存数量本期采购数量)。4.1 方案一逐笔移动加权平均库存流水表这种方案适合库存流水明细完整、采购和出库频繁的企业。以库存流水表为基础在右侧添加结存数量、移动加权平均单价、结存金额、出库成本四个辅助列。假设表结构为A列日期、B列物料编码、C列业务类型、D列数量、E列单价、F列金额。第一个业务类型为“期初”的行直接在F列输入前一期结存金额然后在G列输入结存数量公式G2 D2 H2 E2 I2 G2 * H2从第二行开始公式逻辑区分“采购入库”和“出库”说明公式结存数量G2 D3移动加权平均单价采购入库IF(C3采购入库, (G2H2 D3E3) / (G2 D3), H2)结存金额G3 * H3出库成本IF(C3销售出库, -D3 * H2, 0)以一组简单数据演示日期业务类型数量单价结存数量移动加权平均单价结存金额1/1期初100101001010001/5采购入库501215010.6716001/10销售出库-30-12010.6712801/20采购入库801120010.821601月5日采购入库后新单价(1000600)÷(10050)10.67。1月10日出库后单价不变出库成本30×10.67320。1月20日再次入库后新单价(1280880)÷(12080)10.8。这个方案的好处是能反映每一笔业务后的成本变化适合做逐笔库存核算但要求库存流水表的数据必须干净最怕出现日期乱序、重复记录、业务类型写错等问题。4.2 方案二按月移动加权平均汇总模型如果企业不需要逐笔核算只想每月算一次采购成本和出库成本用汇总模型更省心。字段说明期初结存数量上月月末数量期初结存金额上月月末金额本期采购数量本月的采购入库数量本期采购金额本月的采购入库金额本期出库数量本月的销售或领用出库数量本期加权平均单价(期初结存金额本期采购金额)÷(期初结存数量本期采购数量)本期出库成本本期出库数量×本期加权平均单价期末结存金额期末结存数量×本期加权平均单价在Excel里用公式实现F2 (B2*C2 D2*E2) / (B2 D2) G2 D1 * F2 H2 (B2 D2 - D1) * F2其中B2为期初结存数量C2为期初结存单价D2为本期采购数量E2为本期采购单价D1为本期出库数量。按月方案适合财务月度核算场景数据量小、公式简单、可追溯。缺点是丢弃了期间内的逐笔成本变化不适合库存管理需要精确到每一笔单据的团队。5. 采购数据分析成本、供应商绩效与ABC分类采购分析的核心是回答三个问题钱花在哪哪家供应商靠谱哪些物料值得重点管理。5.1 采购成本结构拆分先把采购金额按物料编码汇总SUMIFS(采购表[金额], 采购表[物料编码], A2, 采购表[下单日期], DATE(2026,1,1), 采购表[下单日期], DATE(2026,1,31))这样能快速得到每个物料的当月采购金额。如果采购表中还有运费、关税等杂费字段可以将杂费按物料金额占比分摊得到含税到货成本。接着用数据透视表做成本结构拆解物料分类放行区域采购金额放值区域月份放列区域。透视表能直接展示“原材料、包装材料、外协件”等分类的月度采购金额对比异常月份一眼就能发现。5.2 供应商绩效评估供应商绩效通常看三个指标到货准时率、质量合格率、价格趋势。到货准时率公式COUNTIFS(采购表[供应商], A2, 采购表[是否准时], 准时) / COUNTIFS(采购表[供应商], A2)这里的“是否准时”列可以用公式按到货日期与承诺日期生成IF([到货日期][承诺日期], 准时, 延误)价格趋势用采购单价按月求平均AVERAGEIFS(采购表[单价], 采购表[供应商], A2, 采购表[下单日期], DATE(2026,1,1), 采购表[下单日期], DATE(2026,1,31))通过透视表把供应商放行、月度单价放值可以看到某供应商的价格是否持续上涨。如果上涨且无合理原因后续谈判就有依据。5.3 ABC分类ABC分类是采购和库存管理里最常用的管理粒度方法。思路是计算每个物料对总采购金额的累计贡献率贡献率前70%左右的物料归为A类中间20%左右为B类剩余10%左右为C类。操作步骤用SUMIFS汇总每个物料的全年采购金额。按采购金额降序排列。计算累计占比。累计占比示例C列累计金额 SUM($B$2:B2) D列累计占比 C2 / SUM($B$2:$B$100)然后嵌套IF做分类E2 IF(D20.7, A类, IF(D20.9, B类, C类))A类物料数量少但金额大需要重点管控建议做每周补货计划、定期核对供应商和价格。C类物料金额低可以降低管理频率采用大批量补货减少采购次数。6. 物流与库存分析周转率、安全库存与再订货点物流和库存分析是供应链管理的两个堵点。物流成本影响单价库存水平影响现金流两个指标串起来才能判断库存政策是否合理。6.1 物流成本分析物流分析的第一步是计算单位运输成本运费 / 重量例如物流运输表中单位为“元/kg”。按线路汇总运费SUMIFS(物流表[运费], 物流表[发货地], A2, 物流表[到货地], B2)到货时长的计算物流表[到货日期] - 物流表[发货日期]透视表里把发货地、到货地放行运费和到货时长的平均值放值可以快速找到高成本、低时效的线路。如果某条线路平均运费远高于其他线路同时到货时长又长这个线路就是重点优化对象。6.2 库存周转率库存周转率反映库存资金占用效率库存周转率 期间出库成本 / 平均库存金额Excel里用公式实现本期出库成本 / ((期初库存金额 期末库存金额) / 2)周转率低说明库存积压资金占用严重周转率过高则可能有断货风险。根据行业不同合适区间差异很大建议先做3到6个月的趋势观察再定目标。6.3 安全库存与再订货点安全库存是在需求波动和供应延迟情况下防止断货的缓冲库存。通用计算公式安全库存 (最大日需求量 × 最大采购提前期) - (平均日需求量 × 平均采购提前期) 再订货点 平均日需求量 × 平均采购提前期 安全库存在Excel中创建需求统计表列出每个物料过去90天或180天的每日需求量用MAX、AVERAGE函数算出最大日需求量、平均日需求量用两列单独维护采购提前期的平均值和最大值。F2 (MAX(需求表[日需求量]) * 最大提前期) - (AVERAGE(需求表[日需求量]) * 平均提前期) G2 AVERAGE(需求表[日需求量]) * 平均提前期 F2当当前库存低于再订货点时就触发补货建议。这一列可以通过条件格式高亮让计划员在报表里直接看到哪些物料该下单。7. 数据预测移动平均、加权移动平均与趋势预测需求预测是供应链计划的核心。Excel内置函数足够支撑常规采购预测和库存补货预测。7.1 简单移动平均简单移动平均适合需求波动不大、没有明显趋势和季节性的物料。预测下一期需求量时取最近N期的平均值。假设A列是月份B列是实际需求量。取最近3个月移动平均AVERAGE(B4:B6)下拉后每个单元格都会基于最近3期计算。N值选择需要验证N值小反应快但波动大N值大曲线平滑但滞后明显。7.2 加权移动平均加权移动平均给近期数据更高权重适合近期变化有趋势但不够稳定的场景。最直接的写法是给最近N期指定权重数组SUMPRODUCT(B4:B6, {0.2; 0.3; 0.5}) / SUM(0.2, 0.3, 0.5)这里的数组对应三期权重离当前越近权重越高。普通Excel中如果数组公式不好录入建议把权重放到辅助列然后用SUMPRODUCT(B4:B6, C4:C6) / SUM(C4:C6)这样在B4到B6放历史需求C4到C6放对应权重权重可以随时调整也方便做多组权重对比。7.3 指数平滑与 FORECAST.ETSExcel 2016之后引入了FORECAST.ETS函数可以处理带季节性和趋势的数据。它的基本语法FORECAST.ETS(目标日期, 历史值区域, 时间线区域, 季节性周期, 数据完成度)示例FORECAST.ETS(F2, B2:B13, A2:A13, 12, 0)其中F2是待预测月份的首日B2到B13是历史需求A2到A13是月份日期12表示一年12个月的季节性周期0表示数据不完整也不自动补齐。使用FORECAST.ETS有几个前置条件历史值必须是数值时间线必须是真正的日期格式且间隔等距不能有重复日期不能有缺失月份。如果出现#VALUE!错误优先检查时间线是否完整。7.4 预测误差验证预测模型选得对不对要看误差。最常用的是MAD平均绝对误差和MAPE平均绝对百分比误差。MAD公式AVERAGE(ABS(C2:C13 - B2:B13))MAPE公式AVERAGE(ABS(C2:C13 - B2:B13) / B2:B13)注意MAPE中实际值不能有0。把历史数据切成两段前80%做训练后20%做验证对比不同预测方法的MAD和MAPE选误差最小的模型。这个做法在Excel里完全可行不需要额外插件。8. Power Query 与 VBA把月度重复分析变成自动化每月最耗时的工作不是计算而是把新数据整理成标准格式改表头、删空行、修日期、合并多张表。Power Query和VBA能把这一套重复操作固定下来。8.1 Power Query 从文件夹导入多张月度表Power Query可以从一个文件夹自动导入多张Excel文件并合并非常适合“每月一个采购表月底汇总分析”的场景。操作路径是数据 → 获取数据 → 从文件 → 从文件夹选择存放月度采购表的目录然后编辑查询。核心M代码模板let 源 Folder.Files(C:\供应链数据\2026), 筛选Excel Table.SelectRows(源, each [Extension] .xlsx and not Text.StartsWith([Name], ~$)), 读取工作簿 Table.AddColumn(筛选Excel, 数据, each Excel.Workbook(File.Contents([FullPath]), true)), 展开Sheet Table.ExpandTableColumn(读取工作簿, 数据, {Name, Data}, {Sheet名, Sheet数据}), 筛选主表 Table.SelectRows(展开Sheet, each [Sheet名] 采购明细), 提升表头 Table.TransformColumns(筛选主表, {{Sheet数据, each Table.PromoteHeaders(_, [PromoteAllScalarstrue])}}), 展开数据 Table.ExpandTableColumn(提升表头, Sheet数据, {日期, 物料编码, 供应商, 数量, 单价, 金额}) in 展开数据这段代码需要按实际的Sheet名和列名调整。重点是路径、表名、展开列名三者必须和你的文件结构一致。Power Query导入完成后每次新文件放入文件夹点击“刷新”即可自动合并所有新数据。8.2 VBA 一键刷新全部分析数据更新后透视表、公式、图表需要全部刷新。VBA可以一键完成Sub 刷新全部分析() ThisWorkbook.RefreshAll Application.CalculateFullRebuild MsgBox 刷新完成请检查移动加权平均表和预测结果。, vbInformation End Sub把这段代码粘贴到模块中指定到任意按钮或形状上每月出报表时点一下就能完成全量刷新。8.3 VBA 导出分析结果分析完成后如果需要把采购分析结果单独发给业务同事可以用VBA快速导出CSVSub 导出采购分析() Dim ws As Worksheet Set ws ThisWorkbook.Sheets(采购分析) ws.Copy ActiveWorkbook.SaveAs Filename:ThisWorkbook.Path \采购分析_ Format(Date, yyyymmdd) .csv, FileFormat:xlCSV ActiveWorkbook.Close SaveChanges:False MsgBox 已导出到: ThisWorkbook.Path, vbInformation End Sub注意文件必须另存为.xlsm才能保存和运行宏。如果其他同事需要查看结果但不希望运行宏导出后的CSV或另存的.xlsx即可。9. 批量任务处理多个物料、多个部门、多份月度表怎么处理实际业务中一个采购团队可能同时管理几百个物料、几十家供应商每个月还要按部门拆分分析。批量处理的关键是把“一次性”的数据整理变成“可重复”的自动流程。第一步把所有原始数据落到同一张一维表里不要按物料拆Sheet。采购明细表、库存流水表、物流运输表都作为独立一张表保存在Workbook中每增加一个月数据就直接追加行而不是新建Sheet。这样透视表和SUMIFS公式可以自动扩展。第二步用“表”结构替代普通区域。选中数据区域后按CtrlT转为表在公式里使用结构化引用例如SUMIFS(采购明细[金额], 采购明细[物料编码], [物料编码])这样新增行后公式范围自动包含新数据不需要手动修改引用区域。第三步用数据透视表一次性生成多维度汇总。物料分类、供应商、月份三个字段分别放入行区域或列区域金额、数量放入值区域勾选“数据透视表选项→数据→打开文件时刷新数据”。这样每次打开文件时透视表自动刷新。第四步如果数据量过大或者文件太多用Power Query替代透视表的数据源。Power Query加载到Excel表格或数据模型后数据源可指向多个文件刷新一次全部更新。如果团队里有Python环境也可以用openpyxl或pandas处理超大数据但数据结构依然是这几张标准表import pandas as pd # 读取采购明细和库存流水 purchase pd.read_excel(采购订单.xlsx, sheet_name采购明细) stock pd.read_excel(库存流水.xlsx, sheet_name流水) # 数据类型统一 purchase[日期] pd.to_datetime(purchase[日期]) stock[日期] pd.to_datetime(stock[日期]) # 按月汇总采购成本 purchase[月份] purchase[日期].dt.to_period(M) monthly_cost purchase.groupby([月份, 物料编码])[金额].sum().reset_index() # 按物料分组累计结存数量 stock stock.sort_values([物料编码, 日期]) stock[结存数量] stock.groupby(物料编码)[数量].cumsum() stock[金额] stock[数量] * stock[单价] stock[结存金额] stock.groupby(物料编码)[金额].cumsum() stock[移动加权平均单价] stock[结存金额] / stock[结存数量] print(monthly_cost.head()) print(stock.tail())这段Python代码只是模板需要按实际表名和字段调整。Excel方案和Python方案并不冲突Excel负责日常快速分析和月度报表Python负责数据量更大、需要自动化脚本的场景。10. 资源占用与性能观察Excel遇到大数据量怎么办Excel在几万行数据内表现没问题但到了几十万行且公式密集时性能会明显下降。做供应链分析时要注意以下几点。第一避免整列引用。很多人在SUMIFS里习惯写SUMIFS(采购表!D:D, 采购表!A:A, A2)这种写法Excel会扫描整列百万行严重拖慢计算。改成“表”结构化引用或限定的行范围例如SUMIFS(采购表[数量], 采购表[物料编码], A2)第二减少易失函数。OFFSET、INDIRECT、TODAY、NOW这类函数会强制Excel大量重算。在供应链模型里尽量少用特别是不要在几百行公式中嵌套OFFSET。如果必须偏移取数优先用INDEXMATCH或者直接把引用区域定义成名称。第三打开手动计算模式。如果数据量大且公式多可以在“公式→计算选项”中改为“手动”在导入新数据和粘贴数据后按F9强制重算。配合VBA的RefreshAll可以显著降低输入卡顿。第四透视表缓存复用。多个透视表如果引用同一数据源在“数据透视表选项→数据”中取消勾选“优化内存”可以让多个透视表共用同一个缓存减少文件体积和计算量。第五Power Query数据加载到“仅连接”。如果Power Query查询只是用来清洗数据后续还要透视汇总可以选择只加载到数据模型或仅创建连接避免在工作表里多出一份重复的明细数据。11. 常见问题与排查方法Excel供应链分析最常见的坑集中在日期格式、数据源引用和刷新机制上。问题现象可能原因排查方式解决方案移动加权平均单价和财务系统不一致期初数量/金额没对齐或采购数量包含退货负数核对期初余额检查库存流水是否有重复记录期初余额单独维护采购负数统一用正负号业务类型区分SUMIFS返回0日期是文本格式或物料编码前后有空格用ISNUMBER检查日期用LEN对比编码长度用DATEVALUE转换日期用TRIM清理空格透视表数据不更新新行没有纳入透视表区域检查数据源区域是否包含新行把数据源改成Excel表对象透视表区域引用整列VLOOKUP带不出供应商编码前后有空格或编码类型不一致用TRIM清理检查一列为文本一列为数字用TEXT统一编码格式或改用XLOOKUPFORECAST.ETS返回#VALUE!时间线有重复日期、缺失月份或不是日期格式排序并去重日期检查间隔是否一致补齐缺失月份确保时间线等距Power Query导入后列名带“1”原文件有标题行但未跳过查看每个文件的原始表头结构用Table.PromoteHeaders或跳过首行Excel卡顿明显整列引用或大面积易失函数定位到大量公式的列检查引用范围改用表结构化引用关闭自动计算VBA宏无法运行文件保存为.xlsx或宏安全设置被禁用检查文件扩展名和信任中心设置另存为.xlsm并在信任中心启用宏还有一个高频问题移动加权平均表里出现除零错误。原因是期初结存数量加本期采购数量为0常见于期初数据没有录入或者采购数量误填为0。处理方式是用IFERROR兜底IFERROR((G2*H2 D3*E3) / (G2 D3), 0)但注意IFERROR只是掩盖错误真正要解决的是源数据异常排查时一定要回到原始记录里把数量补齐。12. 最佳实践与合规提醒这一套Excel供应链分析方案要在团队中稳定运转需要建立几个习惯。第一数据源、计算区、展示区分离。数据源Sheet只放原始数据不做任何计算计算区统一存放移动加权平均、安全库存、预测等公式展示区放透视表和图表。这样即使公式写错也不会破坏原始数据方便排查。第二固定一套标准模板。把表头规范、字段名、日期格式、物料编码规则固定下来每月由专人维护。新数据进来只做追加不改结构。第三建立命名规范。表格名称、Sheet名称、文件名称保持一致。例如统一用“采购明细”“库存流水”“物流运输”文件名按“采购明细_2026_01”格式命名Power Query导入文件夹时就能识别。第四备份与留存。每次月底刷新数据前复制一份当月工作簿存档。供应链分析涉及采购单价、供应商合同信息文件传递时只发脱敏版本隐藏供应商价格等敏感字段。第五合规使用数据。Excel表格里可能包含供应商报价、客户订单、内部成本等商业敏感信息。拉取数据、共享报表、跨部门协作时必须确认数据使用范围对涉及人脸、个人隐私或商业机密的数据做脱敏处理。供应链分析与版权合规边界要同步不要让一份分析模板成为信息泄露的出口。第六从最小闭环开始。不要一开始就搭建几十张表的完整模型。先建立采购订单表跑通月度采购成本再建立库存流水表跑通移动加权平均最后加入需求预测和Power Query自动化。每步验证通过后再扩展下一功能。13. 总结与下一步Excel做供应链分析本质是把“账和数”变成“判断和动作”。移动加权平均负责把库存成本算准预测函数负责把未来需求估稳Power Query和VBA负责把重复劳动降到最低。建议先跑通两件事一件是月度采购成本分析表用SUMIFS和透视表把“钱花在哪”拆清楚另一件是移动加权平均单价用库存流水表把每一笔入库后的成本变化算出来。这两个基础能力稳定后再逐步加上安全库存、再订货点、需求预测和自动化刷新。最容易踩的坑已经写在前面的排查表里其中最影响结果的是日期格式和物料编码不统一任何一张表出现这两个问题都会直接导致汇总结果失真。这套Excel方案在数据量可控的前提下可以长期作为供应链日常分析的底座。后续如果数据量增长到百万行级别或者需要多人实时协作再迁移到Power BI或Python。迁移时最值钱的资产不是公式本身而是已经建好的数据模型和字段定义这些用Excel搭建的标准表结构搬到任何工具里都能直接复用。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价