WPS 新函数 VSTACK 多表查询合并【No.258】
优秀创作者
今日分享的WPS 新函数就是VSTACK,这个函数最大的好处就是让多表之间的数据可以通过合并的方式建立一个新的数组,实现统一,进而实现多表变一表查询,一表统计,一表求和等后续的数据分析需求。 与它配套的函数是HSTACK,这个函数也是功能非常强大,所以古老师今天必须把它们分开了详细讲解。
函数说明
函数名称: VSTACK;
函数说明: 返回通过以逐行方式拼接每个数组参数而形成的数组;
通俗说明:选中数据后按列(垂直方向)合并。
函数参数: VSTACK (数组1,数组2,……);
函数简写: 录入=VS,按下TAB键自动补全=VSTACK(
基本用法:
同一张表合并录入: =VSTACK(B3:C5,E3:F5)
函数释义:数组1:B3:C5(蓝色区)和数组2:E3:F5(红色区),这个两个区通过函数VSTACK合并到垂直方向H3:I8(下图所示)。
同一张表不同页合并录入:
连续写法:=VSTACK('2.基本表1:2.基本表3'!B3:C5) 表如果连续推荐
表不连续写法:=VSTACK('2.基本表1'!B3:C5,'2.基本表2'!B3:C5,'2.基本表3'!B3:C5),也就每个页面分别选择。
函数释义:这张工作表有3个页面,分别为:基本表1、表2、表3,此时如果表是连续的话,可以用符号“:”来批量选择所有页面。
鼠标选择的技巧:先点表1的第一个单元格,然后按住Shift键到最后一个表(这里是表3),就选择了需要合并的多表。
直接写的方法:按此格式“'开始表:结束表'!引用区域”就可以一次选择多张表了。
效果如下图所示:
使用场景1:
工作场景:在工厂中,有不同的装配车间,每个装配车间都有一张生产日报,把每一张工单的完成数量录入好,虽然每个车间的日报的格式都一样,但是因为工单是分布在不同的工作表中,所以需要查询的时候,如果没有此函数的话,查询就需要多次查询。
如用VLOOKUP的查询思路就是,先在表1找此工单,找不到后,继续在表2找,表2找不到,继续表3找……,表在3张以下,还能够勉强查询,如果表超过5张,甚至更多,就非常困难了。
此时,WPS的新函数就派上用场了,首先把3张表的数据合并在一起,这里为了截图方便,放在一起了,如是多页面的表合并,参考基本用法2。
录入函数:=VSTACK(B6:D10,F6:H10,J6:L8)
效果如下图所示:
此时有了这一列的数据话,可以作为VLOOKUP的第二参数了,这样直接嵌套在里面,如果担心表1到表3还会有数据的话,可以把每个数组区的范围增大就可以了,也就是把公式更改为以下:
=VSTACK(B6:D10000,F6:H10000,J6:L10000)
这样只要在预留范围内,都可以自动把数据合并在一个数组区内,效果如下图:
有了这个合并后的一维数组区,查询工单的需求就变得非常简单了。
录入数组公式:=VLOOKUP(B3,VSTACK(B6:D10,F6:H10,J6:L8),{2,3},0),同时返回合并后的第2列和第3列;
不想用数组的更改为:
=VLOOKUP(B3,VSTACK(B6:D10,F6:H10,J6:L8),2,0),返回合并后的第2列
=VLOOKUP(B3,VSTACK(B6:D10,F6:H10,J6:L8),3,0),返回合并后的第3列
使用场景2:
工作场景:在工厂中,多表查询只是需求之一,还有汇总求和的需求,如需要汇总所有产品在不同工作表中的数量。应该如何设计呢?
基本原理还是一样。把多表预久范围汇总到一个表上,配合选择列函数加多条件求和函数就可以了。
条件1:
=DROP(SORT(UNIQUE(CHOOSECOLS(VSTACK(B4:D996,F4:H996,J4:L992),2))),1)
函数释义:
不要看公式长,其实就是对合并后的范围删除重复项(UNIUQE),再排序(SORT),排序的目的是把0排序到最上面,最后用DROP删除数组的第一个元素;
汇总3表的和这里的话有点复杂,需要配全筛选函数和选择列函数创建一个条件区域和条件。为了方便大家理解,分别写以下函数作辅助列
=CHOOSECOLS(VSTACK($B$4:$D$1000,$F$4:$H$1000,$J$4:$L$1000),2)
函数释义:合并后显示第二列
=CHOOSECOLS(VSTACK($B$4:$D$1000,$F$4:$H$1000,$J$4:$L$1000),2)=N4
选择第2列后等于N4“电饭煲”的结题,以TRUE和FALSE返回,TRUE代表一致,这作为FILTER的筛选条件。
录入:=FILTER(VSTACK($B$4:$D$1000,$F$4:$H$1000,$J$4:$L$1000),CHOOSECOLS(VSTACK($B$4:$D$1000,$F$4:$H$1000,$J$4:$L$1000),2)=N4)
到这了这一步,基本上就解出来了,再次用TAKE函数保留最后一列后,用SUM函数汇总就可以了。
最后录入公式后,
=SUM(TAKE(FILTER(VSTACK($B$4:$D$1000,$F$4:$H$1000,$J$4:$L$1000),CHOOSECOLS(VSTACK($B$4:$D$1000,$F$4:$H$1000,$J$4:$L$1000),2)=N4),,-1)),下拉填充,效果如下图
我是古哥:
从事制造行本业20年,在企业运营、供应链管理、智能制造系统等方面具有丰富的实战经验。企业智能化,柔性化计划运营管理专家,擅长通过企业流程优化规范,企业管理、导入计划运营提升企业效率;对提高企业准时交货率,降低企业库存,输出智能制造人才有丰富的经验。学习PMC生产计划,关注古哥计划!
创作者俱乐部成员
优秀创作者