首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

101 365新函数 VSTACK HSTACK

VSTACK HSTACK这两个函数和前几天讲过的TOCOL、TOROW,以及CHOOSECOLS和CHOOSEROWS都是属于兄弟函数,同类别的,只需要掌握其中一个,基本上就掌握了两个,Excel中不光光是365版本新函数这样,老版本也有很多这样的,如ROW 和COLUNMS、LEN和LENB等;

函数参数:

=HSTACK(array1,[array2],...);

=VSTACK(array1,[array2],...);

从参数中可以发现,HSTACK是按顺序水平追加数组,以返回更大的数组,VSTACK按顺序垂直追加数组,以返回更大的数组。理解一个为水平方向的合并,一个是垂直方向的合并,而且两边的合并的大小范围要一致,如果不一致就会返回在不一致的地方返回#N/A;

基础用法

如果上面的文字难以理解,用实际数据来理解,有3个表(为了截图方便显示在一个区域),录入函数:=VSTACK(A1:B8,D2:E5,G2:H6),后得到一个新的表格区域,把表1到表3红框处以垂直方向累加起来了;这就是

VSTACK按顺序垂直追加数组,以返回更大的数组。其中的更大数组就是下图中的表4;

一样有3个表(为了截图方便显示在一个区域),录入函数:

=HSTACK(A1:B8,D1:E5,G1:H6),后得到一个新的表格区域,把表1到表3红框处以水直方向累加起来了;这就是HSTACK是按顺序水平追加数组,以返回更大的数组,其中的更大数组就是下图中的表4;这里发现有错的原因是因为水平方向高度不一致,对于不一致的地方返回错误值;

只需要把函数HSTACK的区域调整成一致后,录入函数:=HSTACK(A1:B8,D1:E8,G1:H8),就得到正确的结果了;如果只是单单的合并区域,这个函数看不出有什么特别,如果在一些多表查询、多表汇总中就可以返回非常大的优势了;

多表查询

同样有一组数据,放在不同的页面,如菜单1、菜单2,此时需要设计一个查询系统,录入查询的编号就可以查询出对应菜名、进货单价、售价;如果你会VLOOKUP函数的话,想到肯定是先查1表,1表找不到,找2表这样的思路,这里只有2个表,就可以用以下图表中的公式,如果3个表以上呢?需要写多次嵌套了,公式会非常长,而且不能一个公式搞定;

换成新函数的思路就比较简单了,无论有多少个区域,先把需要查询的区域合并起来就行了,生成一个大的垂直区域,录入函数:

=VSTACK(A2:A10,F2:F10),作为XLOOKUP的第2参数

=VSTACK(B2:D10,G2:I10),作为XLOOKUP的第3参数

通过下图可以看到,是一个区域

我们录入函数:

=XLOOKUP(A14,VSTACK(A2:A10,F2:F10),VSTACK(B2:D10,G2:I10)),一个公式就把想要的结果全部查询出来了,XLOOKUP支持批量返回;甚至我们标题都可以不用输入,再加一层就可以把标题也直接用一个动态数组生成;

录入函数:

=VSTACK(G1:I1,XLOOKUP(A14,VSTACK(A2:A10,F2:F10),VSTACK(B2:D10,G2:I10))),就形成一框框处的动态数组结果区域,所以VSTACK还有一功能就是加标题,需要加标题就用VSTACK;

多表求和

同样有一系列报表,每张报表的标题列都是一致的,但是内容不一样,需要对多张报表中的数据进行汇总求和,如下图表1到表6分别有不同家电的销量,需要汇总家电名称的汇总销量;

对于这样报表,不会函数的解法就是把多张表,一张表一张表的合并,合并起来再把产品列复制出来去重复,再用SUMIFS函数汇总,其实这个思路非常正确,转成函数就这样

步骤1:合并多表数据,因为不知道每张表的行数是多少,所以可以把行的范围拉大一点,录入函数:

=VSTACK('3.1'!A1:C1,'3.1:3.6'!A2:C48),第一个范围区域是3.1表的标题,第二个参数表示3.1到3.6表中所有A2到C48的范围全部,这样通过VSTACK函数就合并到一起来了,有了这个区域,再汇总求和就不是问题了;

E1=FILTER(UNIQUE(B:B),UNIQUE(B:B)0),对B列去重复,再筛选不为0的值;

F1=VSTACK(C1,SUMIFS(C:C,B:B,E2:E7)),根据E列的条件汇总C列的销量;

可以看到,用VSTACK汇总多表、多区域进行统计、求和、引用的时候毫无压力,特别是可以合并成一个公式,再配合LAMBDA自定义函数,非常高效,如需要转成一个公式,录入函数:

=VSTACK({"产品","数量"},HSTACK(DROP(FILTER(UNIQUE(B:B),UNIQUE(B:B)0),1),SUMIFS(C:C,B:B,DROP(FILTER(UNIQUE(B:B),UNIQUE(B:B)0),1))))

我是古哥:

从事制造行业18年,在企业运营、供应链管理、智能制造系统等方面具有丰富的实战经验。企业智能化,柔性化计划运营管理专家,擅长通过企业流程优化规范,企业管理、导入计划运营提升企业效率;对提高企业准时交货率,降低企业库存,输出智能制造人才有丰富的经验。学习PMC生产计划,关注古哥计划!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230314A09XPY00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券