新旧交织,效率升级:WPS表格新函数REDUCE、BYROW等在复杂业务场景下的灵动 295
优秀创作者
WPS表格新近推出的一批函数已在实际使用中得到了一段时间的应用验证,同时,其正在内部测试阶段的最新版WPS表格又新增了诸如REDUCE、BYROW、SCAN等功能强大的函数。古老师在对这些新函数进行测试的过程中,注意到它们能够很好地满足诸多经典行业应用场景的需求,尤其当与现有WPS表格新函数相结合时,可谓如虎添翼,显著提升了工作效率。
今天,古老师将以电商行业中的物流发货场景为例,分享一个实用案例:面对客户需求的不同数量,如何快速且准确地按照预设的标准包装箱规格(例如100件、300件或500件等)来进行货物打包和发货操作。具体的方法是如何呢?
案例场景
在下图1中,B列和C列分别代表客户所需产品的种类及其对应的需求量。现在,我们需要设计一个公式模板,该模板能够自动依据预设的标准包装箱规格,在D列中为每种产品匹配合适的包装方案。最终,通过此模板实现数据自动转换并呈现于F列到G列所示的分行效果。
目前仓库内所采用的标准包装规格共有三种,分别是包含100个单位、300个单位以及500个单位的产品包装规格。
图1
确定包装箱规格
基于上图1中的需求分析,我们发现若要实现产品及其数量按照包装箱规格进行分项显示,首要任务是明确各类产品对应数量应遵循的装箱标准,即针对不同数量的产品,应当选择何种规格的包装箱进行合理分配。
根据当前信息,我们了解到仅有三种标准包装箱可供选择,它们各自对应的产品装载数量分别为100件、300件和500件。对于这种仅需处理少于五个条件判断的需求场景,运用IFS函数来进行决策判断将是最为适宜的选择。
D3录入动态数组函数(无需填充):
=IFS(C3:C5<=300,100,C3:C5<=500,300,C3:C5<=10000,500)
函数释义:
上面公式中条件C3:C5是动态数组的写法,旨在是让公式不用填充,如果需要引用此范围的时候可以用C3#来替代C3:C5。正常的单个单元格填写的 IFS 公式如下:
=IFS(C3<=300, 100, C3<=500, 300, C3<=10000, 500)
当单元格 C3 中的数值小于等于 300 时,该函数返回的结果为 100。
如果单元格 C3 中的数值大于 300 但小于等于 500,则返回的结果变为 300。
若单元格 C3 中的数值大于 500 但小于等于 10000,函数将返回 500。为什么是10000能,因为仓库规定单次入库不能高于10000。
完成后的效果如下图2:
图2
按标准箱分拆
在上图2中,我们已经确立了产品的入库数量与相应的打包标准。接下来的任务是根据这一标准,对产品的入库数量进行细分并按行展示。例如,若A产品的入库数量为245件,而设定的装箱标准为每箱100件,则我们需要将其拆分为100件、100件及剩余的45件,并在表格中以垂直堆叠的方式,按行逐一清晰显示这些数量分配情况。
需要实现这一需求的函数涉及到以下几个:
SEQUENCE:返回一个数字序列
WRAPROWS:将一维数组按行转换为二维数组
BYROW:将LAMBDA函数应用于每行并返回结果的数组
LAMBDA:将创建一个可在公式中调用的函数值;
COUNT:返回包含数字的单元格以及参数列表中的数字的个数。
F3录入动态数组函数(无需填充):
=BYROW(WRAPROWS(SEQUENCE(C3),100),LAMBDA(X,COUNT(X)))
完成后的效果如下图3:
图3
考虑到该函数的复杂性和多层次嵌套的特点,为了确保大家详尽理解和恰当应用,古老师有必要对涉及的每个独立函数进行细致剖析,并结合它们各自独特的功能属性,逐步展开解释。这样不仅有助于厘清函数间的逻辑关联,也能更直观地展现整个表达式的运算过程,进而大家更好地掌握并灵活运用此类复杂的WPS表格新函数公式,以满足各种实际工作场景的需求。
步骤一:
录入函数:
=SEQUENCE(245):
此函数生成一个从1开始、包含245个连续整数的序列。也就是1;2;3;4;5;6;7;8;9;10……,一直到245,一共245行;
效果如下图4所示:
图4
步骤二:
录入函数:
=WRAPROWS(F3#,D3),引用写法
或者:
=WRAPROWS(SEQUENCE(C3),D3),合并写法
WRAPROWS是WPS表格引入的一个动态数组函数,其功能在于将一维数组按照指定列数转换为二维数组布局。
第一参数:数组,是一经由SEQUENCE函数生成的包含245个连续数字的一列数据,可视作具有245行的单列数据阵列。
第二参数:列数,此处引用的是单元格D3的值,其中D3存储的是标准箱装数量100。
执行该函数后,所得结果将是一个二维数组,其行数取决于原始数据按100列为单位进行分割的情况。在此案例中,由于总共有245个数字,因此:因为按100列分的情况下,将分三3行:
第一行:含从1至100的100个数字;;
第二行:同样包含从101至200的另外100个数字;
第三行:包含从201至245的剩余45个数字,同时,由于不足100列,该行余下的空间则是由错误值填充。
效果如下图4所示:
图5
步骤三:
录入函数:
H8=BYROW(H3#,LAMBDA(X,COUNT(X)))
函数解释:
BYROW函数是对数组的每一行应用一个指定的LAMBDA函数。X在这里表示传入LAMBDA函数的每一行数据。LAMBDA(X,COUNT(X))定义了一个匿名函数,作用是计算传入数组X中的元素个数。
因此,BYROW会依次对WRAPROWS得到的每一行进行计数操作,并返回每一行的元素数量。简单的理解就是对三行的数字统计,因为COUNT函数的功能是返回包含数字的单元格,所以:
第一行:数字有100个单元格,返回100
第二行:数字同样有100个单元格,返回100
第三行:数字只有45,返回45;
BYROW的函数相当于直接一键对每一行的数字进行了统计。到此应用了WPS新函数的功能,得以巧妙地满足按产品入库数量,依据预设的标准包装箱规格来自动判断并逐行展示的需求。
最终效果如下图6所示:
图6
此时还剩下最后一个需求,因为公开版本没有这个函数,只公布结果,不进行函数释义。
录入函数:
F2=VSTACK(B2:C2,DROP(REDUCE("",C3:C5,LAMBDA(X,Y,VSTACK(X,IFNA(HSTACK(OFFSET(Y,,-1),BYROW(WRAPROWS(SEQUENCE(Y),OFFSET(Y,,1)),LAMBDA(X,COUNT(X)))),OFFSET(Y,,-1))))),1))
一个动态数组公式搞定产品自动分拆,并分行显示。
效果如下图7所示:
图7
最后总结:
在处理某些复杂的业务场景时,WPS表格所引入的新函数功能表现出色,特别是在进行动态扩展、一维数组向二维数组的转换以及数组堆积等操作时,提供了极大的便利性。
然而,值得注意的是,这些新功能伴随着许多新概念,如动态数据处理、数组溢出、一维数组与二维数组的区别、定义名称等,如果不经过系统性的学习,可能会影响到使用者对新版本WPS表格函数公式的深入理解和有效运用。尽管如此,新函数的强大之处仍不可忽视,但预先熟悉这些新概念是充分发挥其效能的关键所在。
294 WPS内测版新功能揭秘:“SCAN”迭代函数的运用与实践
293 借助WPS动态数组公式实现智能扩展填充与数据转换自动化
运用WPS/Lambda及Scan函数实现动态数组累计需求分析 No291
巧用WPS AI,为上百名女员工打造3·8女神节专属祝福与精美卡片 290
从单一公式到复杂逻辑:通过实战案例揭示PMC面试中数据分析与解决问题的能力区分 No 289
MRP多阶需求运算报表-WPS表格版本 (7) No 287
MRP多阶需求运算报表-WPS表格版本 (6) No 286
MRP多阶需求运算报表-WPS表格版本 (5) No 285
MRP多阶需求运算报表-WPS表格版本 (4) No 284
MRP多阶需求运算报表-WPS表格版本 (3) No 283
MRP多阶需求运算报表-WPS表格版本 (2) No 282
MRP多阶需求运算报表-WPS表格版本 (1) No 281
巧用WPS中UNIQUE与SUM函数,一步解决跨门店商品库存成本合计问题 No 280
利用XLOOKUP快速实现培训未参加人员的扣分 NO 279
277 超预期,原来WPS AI也可以写出复杂的多层嵌套公式
276 巧妙用VSTACK、HSTACK实现出货货柜合并的表格变形
275 录入查询产品型号的首字,提取对应首字相同的所有型号,并按销量降序
WPS新函数:巧妙利用DROP 去重UNIQUE函数留下的“0” NO 270
优秀创作者