346破译订单堆叠难题:WPSSCAN函数在PMC生产计划中的应用实例

职场计划有古哥 2024-04-02 02:08:41

分享一个关于生产计划PMC的行业案例:在某表格中,列A的数据源自某信息化软件的导出格式,但因不明原因,所有订单信息被不恰当地堆叠至同一列。当前,该计划员面临的需求是,依据标准关键词“订单号”,将这一列数据进行拆分,确保每个订单号对应独立的一列。

如图所示,源数据包含约10000行记录。按照红色箭头指示,期望将首个订单号迁移至C列,第二个订单号移至D列,后续订单号依此类推,各占一列。为实现这一目标,亟需设计一个公式,以实现一键填充、自动拆分订单的功能。

需求分析

通过对上图所示源数据的分析,我们注意到主要难点在于确定各订单间的具体行数,鉴于不同订单间行数存在差异,即每个订单至其后相邻订单之间的间隔行数不固定。为实现对此类动态情况的精准判断,关键在于逐一找出每个订单起始位置及其后继订单的起始位置,以此规律持续进行识别。

基于上述原理,我们认识到可以借助锁定“订单号”这一关键词来进行判断。具体而言,每当遇到单元格内容等于订单号的情形,即累计计数加1,由此构建出一个逐行累加的判断机制。这一逻辑恰好能够利用WPS办公软件中的新函数SCAN得以实现。

订单号次数

为便于理解操作过程,我们首先在B列创建一个辅助列,用于对订单号进行累计编号。请在此列内输入如下公式:

=SCAN(0,A1:A1739,LAMBDA(X,Y,IF(A1<>Y,X,X+1)))

函数解释:

A1为“订单号”这个关键词

A1 <> Y:检测当前单元格Y的值是否与A1单元格的值不同。这里的Y并非指A1,而是指SCAN函数在迭代过程中处理的当前单元格值。例如,首次迭代时,Y为A1的值,之后迭代依次为A2、A3等。

逻辑分支:

A1 <> Y为真:即当前单元格Y的值与A1的值不同。在这种情况下,条件满足,函数返回X。这意味着计数器保持原值,不进行累加。

A1 <> Y为假:即当前单元格Y的值与A1的值相同。此时,条件不满足,函数返回X + 1,即累积值增加1,表示连续出现相同值时计数器递增。

初始值与累加效果:

初始值:X的初始值为0。在首次迭代时,A1与Y1是相等,X会变为1,因为至少有一个订单号。

累加效果:随着SCAN函数对A1:A1739范围内单元格的逐行扫描,每当遇到与A1单元格值相同的订单号(即连续订单),X值会递增1。因此,当遇到第二个相同的订单号时,X将变为2,以此类推,形成一个累计计数的效果。

筛选订单

在获得上述辅助订单号的数字序列后,我们可以利用筛选功能针对不同的订单号进行精准筛选。具体而言,将筛选条件设定为与订单号对应的数字序列(如1对应订单1,2对应订单2,3对应订单3等)。为此,可以采用如下步骤:

生成列号序列:在需要设置筛选条件的单元格中输入公式=COLUMN(A1),然后向右填充该公式以获取对应的列号序列。这样一来,从A列开始,每一列的列号将依次递增,即A列对应数字1,B列对应数字2,C列对应数字3,依此类推。

设置筛选条件:将上述生成的列号序列作为筛选条件,对应应用于订单数据。这意味着当您筛选数字1时,系统将筛选出与辅助列中数值为1(即对应订单1)相对应的订单数据;筛选数字2时,则筛选出订单2的数据,以此类推。

公式结果:

=LET(A,$A$1:$A$1739,FILTER(A,SCAN(0,A,LAMBDA(X,Y,IF(OFFSET($B$1,,-1)<>Y,X,X+1)))=COLUMN(A1)))

效果如下图:

最后总结

经观察,最新版WPS所引入的SCAN函数展现出显著的效能优势。在此之前,实现类似功能往往需要依赖复杂繁琐的函数组合。因此,对于从事PMC生产计划工作的用户而言,确保WPS表格版本的及时更新至关重要。借由新版软件所提供的创新功能与技术优化,工作效率有望获得大幅提升。

图文看不明白,周一到周五晚上:20:00-20:30

抖音 关注 “古哥计划”,古老师直播讲解

和古哥一起学习PMC生产计划运营,一辈子够不够?

0 阅读:0

职场计划有古哥

简介:感谢大家的关注