全文约2200字

大家好,我是古老师。今天我收到了一位PMC计划员的请求,他遇到了一个复杂的订单处理问题。
该情况是这样的:一位客户下达了多份订单,每张订单的数量都较大,因此客户要求针对每张订单进行分批交货。具体规则为:从首张订单下达日期开始计算,每隔20天交货一次,共分为5次交货,每次交付数量为该订单总量的五分之一。
为了制定详细的生产计划并控制库存水平,这位PMC计划员需要根据上述分批交货的时间安排,精确计算出未来每个月的具体生产需求量。由于客户的订单数量庞大且每笔订单的下达时间各不相同,如果手动计算每个订单分5次交货的具体日期,工作量将非常巨大。
因此,他向我求助,希望我能帮助设计一个自动化公式,以快速准确地计算出每个月具体的生产需求量。这样一来,不仅可以减轻工作负担,还能提高效率和准确性。

解决这个问题的关键在于确定每张订单从下单日起,未来每隔20天的具体交货日期。这些交货日期按照固定的20天周期递增,即20天、40天、60天等,以此类推。为了自动生成这些具体的交货日期,我们可以使用WPS的SEQUENCE函数来创建一个递增的数字序列,然后将这个序列与下 单日期相结合:
=SEQUENCE(5,,A2,20)

公式解释如下:
参数1(行数):5 表示分5次交货,因此生成包含5个元素的数组。
参数2(列数):空,默认表示结果为单列,因为我们只需要一列表示每次交货的日期。
参数3(起始值):A2 是下单日期所在的单元格,代表序列的起始日期。
参数4(步长):20 表示每个后续日期之间的时间间隔为20天。
该公式的作用是从下单日期开始,以20天为增量生成5个日期。这意味着它会计算出从首次下单后第20天开始,接下来每隔20天的日期,总共计算5次交货的日期。。
拼接信息有了每次交货的日期后,还需要将具体的每次需求数量和订单号一并列出。这可以通过结合使用HSTACK函数、数组操作以及SEQUENCE函数来实现。具体来说,我们可以用以下公式:
=HSTACK(REPTARRAY(B2,5),REPTARRAY(C2/5,5),SEQUENCE(5,,A2,20))

公式解释如下:
REPT(B2, 5):重复订单号(假设在B2单元格)5次,以匹配分批交货次数。
REPT(C2/5, 5):计算每次交货的数量(即总订单数量C2除以5),然后重复这个数值5次。
SEQUENCE(5, 1, A2, 20):从下单日期(A2单元格)开始,按照20天的间隔生成5个交货日期。
该公式的目的是创建一个水平排列的数据表,其中包含每次交货的订单号、需求数量以及交货日期。HSTACK 函数用于将上述三个部分横向拼接在一起,形成一个完整的数据集。
一键堆叠为了实现一键分拆所有订单的需求日期,我们可以在拥有了每张订单分5批交货的数组后,使用REDUCE函数结合VSTACK进行堆叠。在堆叠之前,需要对数据进行转换,确保每次堆叠的Y轴(即列)值是单一的。转换完成后,可以使用以下动态数组公式来一次性处理:
=DROP(REDUCE("",A2:A8,LAMBDA(X,Y,VSTACK(X,LET(A,Y,HSTACK(REPTARRAY(OFFSET(A,,1),5),REPTARRAY(OFFSET(A,,2)/5,5),SEQUENCE(5,,A,20)))))),1)

公式解释如下:
REDUCE("", A2:A8, ...):从空字符串开始,遍历A2到A8范围内的每个单元格。
LAMBDA(X, Y, ...):定义一个匿名函数,其中X是累加器,Y是当前处理的行。
LET(A, Y, ...):将当前行Y赋值给变量A,用于后续引用。
HSTACK(...):水平堆叠三个部分的数据:
REPT(OFFSET(A, 0, 1), 5):重复订单号(假设在B列)5次。
REPT(OFFSET(A, 0, 2)/5, 5):计算每次交货的数量(即总订单数量C列除以5),然后重复这个数值5次。
SEQUENCE(5, 1, A, 20):从下单日期开始,按照20天的间隔生成5个交货日期。
VSTACK(X, ...):将当前行的数据垂直堆叠到累加器X上。
DROP(..., 1):去掉最顶部的空行(由初始的空字符串造成)。
一维转二维最后就是转成二维的数据,显示出每个月具体的需求数量,录入以下公式:
=PIVOTBY(E2:E36,DATE(YEAR(G2:G36),MONTH(G2:G36),1),F2:F36,SUM)

函数解释:
参数1:行标签 (E2:E36)
这是订单号所在的列。每个订单号将作为结果表中的行标签,表示不同的订单。
参数2:列标签 (DATE(YEAR(G2:G36), MONTH(G2:G36), 1))
这个表达式用于将交货日期(假设位于G列)转换为每个月的第一天。这样可以确保所有同一个月的记录被归类到同一列中,从而能够汇总每个月的需求量。
参数3:值标签 (F2:F36)
这里是指分批交货的数量,即每次交货的具体数量。这些数值将在数据透视表中根据订单号和月份进行汇总。
参数4:聚合函数 (SUM)
使用求和函数对每个月的交货数量进行汇总。这意味着对于每一个订单号和对应的月份,公式会计算出该月内的总交货量。。
最后总结通过上述步骤,我们为PMC计划员提供了一套完整的解决方案,不仅解决了复杂的订单处理和分批交货问题,还极大地提高了工作效率和准确性。这一系列方法不仅显著减轻了PMC计划员的工作负担,还确保了生产计划的准确性和及时性,有助于更好地响应客户需求,优化供应链管理。通过这次案例,我们可以看到,合理运用WPS中的高级函数和动态数组功能,可以有效地解决实际工作中遇到的复杂问题。