全文约2014字;
阅读时间:约6分钟;
听完时间:约12分钟;
在昨天完成《订单明细表》的设计之后,我们开始了第二张输入报表——《产品现存量报表》的设计工作。由于该报表的格式与《订单明细表》非常相似,我们可以直接复制第一张报表来快速获得所需的格式设置,这将有助于减少重复性的格式调整工作,比如条件格式、自动边框和字体设置等。
产品现存量复制表1后,将新工作表命名为“2.库存”。接着,在A1至B1单元格中录入标题“产品”和“库存数量”,并在D1至E1单元格同样录入这些标题。然后,在D2单元格输入动态数组公式以实现自动扩展:
=TAKE(A2:B10000,COUNTA(A2:A10000))
公式解释:
TAKE(A2:B10000, COUNTA(A2:A10000)) 这个公式的作用是从A2到B10000的范围内提取数据。
COUNTA(A2:A10000) 用于计算A列从A2到A10000范围内非空单元格的数量。
TAKE 函数根据COUNTA的结果来决定从指定区域提取多少行的数据。这样可以确保只显示实际存在的数据行,而忽略空白行,从而实现表格内容的自动扩展。
由于新表格的格式继承自表1,因此边框和字体样式会根据单元格内是否为空值来自动调整。
排序数据两张输入报表已经设计完成,接下来我们将设计输出报表。该报表将自动匹配库存,以判断订单是否能够满足发货需求。在进行库存匹配之前,我们需要设定一些约束条件。
这些约束条件包括:首先按照产品分类来处理订单,然后在同一类别的产品中,根据下单日期的先后顺序来分配库存;对于同一天内下达的多个订单,则优先处理数量较少的订单。
简而言之,这种设计原则意味着同类产品中较早下单的将优先发货。同时,对于同一天内的订单,会优先处理数量较小的订单。例如,如果产品A分别在3月1日和3月2日有订单,那么在扣减库存时,会先处理3月1日的订单。而在3月1日当天如果有多个订单,我们会优先处理那些数量较小的订单。这样的安排有助于尽可能多地满足客户的发货需求。如果总是先处理数量较大的订单,可能会导致后续的订单因库存不足而无法发货。
将上述逻辑转换为表格中的公式设计,我们需要对《产品订单明细表》进行排序。可以使用以下公式:
A2=SORT('1.订单'!F2#,{3,1,4})
公式解释:
这个公式的作用是对1.订单工作表中从F2#数据动态数组区域进行排序。
{3,1,4} 表示排序的依据列分别是第3列(产品)、第1列(日期)和第4列(订单数量)
排序方式没有录入,表示默认为升序排序。如果需要降序,则可以使用录入数字 -1来进行降序排序。
效果如下图所示:
分开数据为了方便后续公式的引用,我们需要将上述排序公式的结果(多列多行区域)转换成单列多行的区域。可以使用以下动态数组公式,并向右填充到D2以完成快速转换:
A2=INDEX(SORT('1.订单'!$F$2#,{3,1,4}),,COLUMN(A1))
公式解释:
SORT('1.订单'!$F$2#,{3,1,4}):这个部分对1.订单工作表中的数据进行排序,排序依据是第3列(产品)、第1列(日期)和第4列(订单数量)。这里的$F$2#假设是一个结构化的表格引用。
INDEX(...,, COLUMN(A1)):INDEX函数用于从排序后的结果中提取特定单元格的值。COLUMN(A1)返回当前列号。这样,随着公式的向右填充,INDEX函数会依次提取排序后数据的每一列。
具体步骤如下:
在A2单元格输入上述公式。
向右填充该公式到D2,以便分别提取排序后的每一列数据。
同样地,我们需要将《产品现存量报表》(表2)的数据也使用类似的公式进行拆分。在目标单元格中录入以下公式,并向右填充:
=INDEX(TAKE($A$2:$B$10000,COUNTA($A$2:$A$10000)),,COLUMN(A1))
效果如下图所示:
扣减库存对《订单明细表》中的数据进行排序并拆分后,接下来需要处理库存扣减的需求。如果直接使用产品名称作为索引字段来引用库存进行扣减,可能会遇到问题。因为同一产品在订单明细中可能有多行记录,每行的需求量不同,而每次引用的都是相同的库存数量,这会导致库存被多次扣减。
举例说明:
假设产品A在3月1日有三行需求,分别是30、40和50的数量。如果库存是100,直接扣减会得到70、60和50的结余库存,这样的结果显然是不正确的。正确的方法应该是从库存中减去累计需求量:
第一行需求30:100 - 30 = 70
第二行需求40:70 - 40 = 30
第三行需求50:30 - 50 = -20
这样显示最后一个需求50只能满足30,还有20无法满足。
所以直接匹配库存扣减肯定不行,需要先计算不同产品的累计需求,具体如何计算,明日继续分享。未完待续……
今日总结今天,我们在昨天完成的《订单明细表》基础上,开始了《产品现存量报表》的设计。通过复制第一张报表的格式,我们快速创建了新工作表“2.库存”,并设置了相应的标题和动态数组公式,以确保数据的自动扩展和格式的一致性。
接下来,我们设计了输出报表,该报表将自动匹配库存来判断订单是否能够满足发货需求。为了实现这一目标,我们设定了具体的约束条件,包括按产品分类、下单日期优先以及同一天内数量较小的订单优先处理的原则。这些原则有助于最大化地满足客户订单,避免因库存不足导致的发货问题。
我们还利用Excel和WPS中的SORT和INDEX函数对数据进行了排序和拆分,以便于后续公式的引用和计算。
最后,我们讨论了直接使用产品名称作为索引字段进行库存扣减的问题,并举例说明了这种方法可能导致的错误结果。因此,我们需要进一步计算不同产品的累计需求量,以确保准确的库存扣减。明天我们将继续分享如何具体实现这一计算过程。