自动化表格助力工厂采购:快速锁定最佳采购成本方案
优秀创作者
在工厂的复杂供应链管理体系中,采购环节扮演着至关重要的角色,尤其在面对多元化物料需求与多变市场环境时,其工作难度与精细化要求显著提升。其中,针对不同物料向多家供应商询价的过程尤为关键。各类物料由于属性、规格、生产工艺等差异,其市场价格存在显著区别;同时,同一物料在不同供应商之间的报价亦可能存在显著差异,这既源于供应商成本结构、运营策略的个体化差异,也与市场竞争状况、供求关系等因素密切相关。
更为复杂的是,供应商报价通常并非固定不变,而是会根据采购数量进行动态调整。为适应工厂生产计划的多样性,供应商往往会设定不同数量层级的阶梯价格,如针对采购数量小于100件、小于500件、大于500件等不同区间提供差异化报价。这种精细化的价格策略,旨在通过量级优惠吸引大规模采购,同时也确保小规模订单的利润空间。
在完成这一系列多元化的询价后,采购部门面临的关键挑战在于:如何针对工厂所需的特定物料采购量,迅速且准确地从参与报价的供应商群体中(这些供应商可能包括一家、两家,乃至五至六家)筛选出对应采购数量下的最低报价供应商。
如下图所示的案件中,我们收集到的供应商信息分散在不同的工作页面上,涉及供应商1、供应商2等多家参与者。值得注意的是,尽管供应商众多且分布零散,但每个供应商所提供的报价单均遵循工厂所规定的统一格式。具体而言,B列清晰标明了供应商名称,C列记录了对应的物料代码,而D至F列则分别详述了针对采购数量小于100件、小于500件以及大于500件时的相应报价。
面对上述情况,当前的需求是设计一款智能化的自动化表格,该表格应能无缝嵌入工厂的采购订单报表系统中。其核心功能在于,只需一键操作,即可自动识别并精准匹配所采购物料在不同数量条件下的最低报价及其对应的供应商,从而极大地提升了采购决策的效率与准确性,确保工厂能够在纷繁复杂的报价数据中迅速锁定最具成本效益的采购方案。
效果如下图所示:
合并数据
为了更有效地进行报价查询,首要步骤是对分布在各个工作页面的供应商信息进行整合,将其统一归置于一个工作表中。鉴于所有供应商的报价单均遵循相同的格式——即各列标题与内容保持一致,仅因不同供应商提供的物料报价数量类别有所差异而导致行数有所不同——我们可以利用WPS中的“VSTACK”函数轻松实现数据合并。
操作时,只需事先在目标合并区域预设好足够容纳所有供应商数据的行数范围,然后在VSTACK函数的参数中正确引用各供应商数据源范围,即可顺利完成数据整合工作,为后续的报价查询奠定坚实基础。
录入以下函数:
=VSTACK(供应商01:供应商03!B2:F23)
公式含义:
此公式将供应商01、供应商02及供应商03工作表中B2至F23单元格范围内的所有数据垂直堆叠排列。
函数说明:
VSTACK:这是一个数组函数,用于将两个或多个数据区间按垂直方向(即列方向)合并成一个新的数组。
参数解析:
供应商01:供应商03!B2:F23:表示选取供应商01至供应商03这三个工作表中,从第2行开始至第23行结束,B至F列的全部单元格。此处使用冒号“:”作为间隔符号,用于一次性指定多个连续工作表的相同单元格范围。若需涵盖更多供应商,只需将首个与最后一个供应商的工作表名以同样方式用冒号相连,如“供应商01:供应商09!B2:F23”,即可实现对供应商01至供应商09工作表中相应单元格范围的数据合并。
效果如下图所示:
筛选结果
上述操作生成的结果可被视为一个“内存数据”集合,这一集合中的数据具有可移植性,能够作为参数被嵌套到其他相关函数中进行进一步的计算与分析。完成数据合并后,接下来的工作便是编制采购报表单。在此过程中,我们将依据实际采购的物料信息,从已整合的供应商报价数据集中筛选出与之对应的特定供应商报价。针对每一种物料,可能查找出一家或多家供应商的报价信息
录入以下函数:
=LET(A,VSTACK(供应商01:供应商03!B2:F23),FILTER(A,CHOOSECOLS(A,2)=C3))
公式含义:
首先,通过LET函数定义了一个名为A的变量。A的值由VSTACK函数生成,该函数将工作表“供应商01”,“供应商02”,和“供应商03”的B2:F23区域内的数据垂直堆叠在一起,从而整合了多个供应商的报价信息。
随后,对整合后的数据集A应用FILTER函数进行筛选。筛选条件设定为:当A的第2列(即合并后的供应商物料代码列)的值等于采购订单中指定物料代码单元格C3时,该行数据被视为满足条件并被保留。
综上所述,此公式实现了从多个供应商报价表格中提取出与采购订单中物料代码(位于C3单元格)相符的所有供应商报价记录,便于进一步比对和处理。
效果如下图所示:
数量判断
由于采购数量的多少直接影响到供应商的报价,而供应商通常会依据采购数量将其报价划分为三个标准区间:数量小于100件、介于100至500件之间以及大于500件。为此,我们需要在处理采购订单明细时,根据其中的数量值判断其所属的数量段。我们用数字1、2、3分别代表这三个数量段:1对应“小于100件”,2对应“100至500件”,3对应“大于500件”。
录入以函数:
=XLOOKUP(D3,{0;100;500},{1;2;3},,-1)
公式含义:
XLOOKUP函数在此处用于查找采购订单明细中单元格D3所记载的采购数量,将其与预先设定的边界值数组 {0, 100, 500} 进行比较。这些边界值定义了三个数量段的上下限。当D3中的数量落在某一区间内时,函数返回对应区间在结果数组 {1, 2, 3} 中对应的数字,即数量段编号。
参数 -1 表示进行升序查找且允许查询值小于查找范围内的最小值。在这种情况下,如果采购数量小于100件,函数将返回数值1;若采购数量在100至500件之间,则返回2;若采购数量超过500件,则返回3。通过这种方式,我们可以快速确定采购订单中每个物料的数量所属的数量段,以便后续进行相应的价格计算或分类统计。
效果如下图所示:
价位判断
在确定了采购物料对应数量所归属的数量段(用数字1、2、3表示)后,我们便能据此在已筛选出的各供应商对该物料的报价数据中,精准定位到相应的报价区间。这里,我们将筛选后的结果定义为变量B,将数量段数字返回结果定义为变量C。考虑到报价数据区域前两列分别为“供应商”与“物料代码”,我们在后续引用时需在其索引位置基础上增加2。供应商的位置在第1列,只需要在选择列函数中继续加上数字1即可。
基于以上逻辑,录入以下函数:
=LET(B,LET(A,VSTACK(供应商01:供应商03!B2:F23),FILTER(A,CHOOSECOLS(A,2)=C3)),C,XLOOKUP(D3,{0;100;500},{1;2;3},,-1),CHOOSECOLS(B,2+C,1))
公式含义如下:
首先,通过嵌套的LET函数定义变量:
B:内部LET函数中,先定义变量A,其值为使用VSTACK函数将工作表“供应商01”、“供应商02”和“供应商03”的B2:F23区域数据垂直堆叠合并。接着,利用FILTER函数筛选A,筛选条件为合并后的数据集中第2列(供应商物料代码列)与采购订单中物料代码单元格C3相等。最终,将筛选结果赋值给外部LET函数的变量B,即得到针对指定物料的各供应商报价数据。
C:使用XLOOKUP函数查找采购订单明细中单元格D3所记载的采购数量,将其与边界值数组 {0, 100, 500} 比较,以确定该数量所属的数量段(1、2或3),并将结果赋值给变量C。
最后,调用CHOOSECOLS函数,以变量B(筛选后的供应商报价数据)为数据源,选择从第(2 + C)列开始的列。由于C代表数量段编号(1、2或3),加上2后即对应于报价数据中的“数量小于100件”、“100至500件”或“大于500件”报价列的索引位置。因此,此函数将返回指定物料在对应数量段下所有供应商的报价信息。其中数字1代表的是供应商列;
效果如下图所示:
最小判断
到这里就基本解决了不同供应商,不同数量范围的最小价判断了,只需要加入一个排序函数,对返回的阶进行升序排序,并对结果就第行即可;因为公式是需要向下填充的,所以需要注意锁定合并供应商报价的引用范围。录入以下函数:
=TAKE(SORT(LET(B,LET(A,VSTACK(供应商01:供应商03!$B$2:$F$23),FILTER(A,CHOOSECOLS(A,2)=C3)),C,XLOOKUP(D3,{0;100;500},{1;2;3},,-1),CHOOSECOLS(B,2+C,1))),1)
公式含义如下:
LET 函数内嵌套使用,依次定义变量 B 和 C,其含义与之前解释相同,此处不再赘述。
SORT 函数对由 CHOOSECOLS(B, 2 + C, 1) 得到的、含有指定数量段报价及对应供应商名称的数据进行升序排序。排序依据为报价列(即第 (2 + C) 列),供应商名称列(即第1列)随报价列一同参与排序。
TAKE 函数接收排序后的数据作为输入,取其第一行(索引值为1),即为指定物料在对应数量段下所有供应商报价中的最低报价及其供应商名称。
综上,此公式实现了对采购订单明细中每个物料,根据其采购数量所属数量段,在各供应商报价中快速找出最低报价及其供应商,并以单元格形式呈现。在向下填充时,公式中的合并供应商报价引用范围已锁定,确保了在处理不同订单明细时引用范围的稳定性。
效果如下图所示:
一键填充
上面已经完成公式“填充”版本的设计,基本上能够满足普通用户的设计需求了,但是对于一些完美用户需要实现真正意义的一键填充,也就是一个公式实现的话,还需要把公式更改为如下:
=REDUCE({"最低报价","供应商"},C3:C7,LAMBDA(X,Y,VSTACK(X,TAKE(SORT(LET(B,LET(A,VSTACK(供应商01:供应商03!B2:F23),FILTER(A,CHOOSECOLS(A,2)=Y)),C,XLOOKUP(OFFSET(Y,,1),{0;100;500},{1;2;3},,-1),CHOOSECOLS(B,2+C,1))),1))))
由于公式复杂,仅仅供有兴趣的人学习
最后总结:
在工厂供应链管理中,采购环节对成本控制和生产计划至关重要。面对多变的市场需求和供应商报价,采购部门需高效筛选出最低报价的供应商。为此,我们设计了一款集成于采购订单报表系统的自动化表格,通过一键操作,自动识别不同采购量下的最低报价及其供应商。
该表格利用WPS的“VSTACK”函数整合分散的供应商报价,使用“FILTER”和“XLOOKUP”函数筛选和判断报价区间,结合“CHOOSECOLS”精准定位报价,并通过“SORT”和“TAKE”函数提取最低报价。此外,“REDUCE”和“LAMBDA”函数的结合实现了一键处理所有物料的报价查询,生成完整的二维数组,极大提升了采购决策效率。
这款自动化表格有效解决了报价筛选难题,帮助采购人员快速找到成本效益最高的方案,优化了供应链管理,降低了成本,确保了生产计划的顺利进行。案例展示了现代办公软件功能的强大和使用高级函数解决实际问题的能力。
331 破解多车型适配难题:汽车零配件厂PMC数据转换与决策支持
330 告别繁琐计算:GROUPBY函数引领采购价格监控新时代
328 从一维到二维:教你灵活运用GROUPBY与PIVOTBY优化零件工艺排程
327 革新数据透视体验:WPS PIVOTBY函数在销售订单分析中的实战运用
326 数据洞察:PMC中的单条件与多条件筛选技巧与案例剖析
325 告别杂乱:基于WRAPROWS与REDUCE的二维项目跟进表高效重整
324 告别手动更新:WPS动态数组公式助力项目跟进表实现全自动化统计
322 多表并一,费用归类:WPS VSTACK函数助力PMC高效整合项目开支
创作者俱乐部成员