原文标题:《吊打 PowerQuery,气走 VBA,史上最简单的多表合并公式来了!》
Excel 一个工作簿中可以存放多张工作表。
比如分月分表登记工资明细 👇
又或者多部门的登记,也是一张工作表登记一个部门发生的所有业务等等。
这些在工作中数不胜数。
很多人以为这样能够清晰明了的反映和查看数据,但实际上,却是给后续数据统计分析带来麻烦。
那么,如果想把所有工作表数据合并到一起,除了复制粘贴,还有什么更快的方法吗?
下面就给大家介绍 2 个技巧,小白也很容易上手哦!
1、VSTACK
这个函数的优点是:用起来非常简单,而且即使原始数据有增减变化,也能轻松引用。
缺点是:非 Office 365 版本和 WPS 无法使用。
它的语法如下:
只用一个参数,就能合并多表。
比如我们在【汇总表】的【A1】单元格中输入如下公式:
=VSTACK('1月12月'$A$1$D$7)
公式的意思是:依次将工作表【1 月】至【12 月】中的【A1:D7】单元格区域垂直堆放在一起。
如下图所示:
这样就将 12 张工作表中的工资数据汇总在一起了。
当然,也可以先把表头写好,然后从每张工作表的【A2】单元格开始引用。
公式改成:
=VSTACK('1月:12月'!A2:D7)
PS:这个方法有一个小小的缺点,就是如果引用的区域中没有数据,将会以 0 值来填充。
比如:在【2 月】工作表中,第七行中并没有任何数据。
我们引用了每一张工作表中的【A2:D7】之后:
汇总表中缺少数据的单元格,会显示为 0。
2、TOCOL
TOCOL 也是 Office 365 和 WPS 才能使用的函数。
它的语法如下:
意思是:可以将多行多列转换成一列形式。
如下图:
在【汇总表】的【A2】单元格中输入如下公式:
=TOCOL('1月:12月'!A2:A7)
即可将工作表【1 月】至【12 月】的【A2:A7】单元格区域按列排列在一起。
然后将公式向右拖动,复制到【D2】单元格,就能完成多表合并。
是不是非常简单?
PS:相比 VSTACK,TOCOL 可以忽略空白单元格,只显示有数据的内容。
比如下图中的 0:
如果不想让它出现在表格中,只需要将公式改成 ↓
=TOCOL('1月12月'A2:A7,1)
公式中的第二参数:1,就起到了忽略空白单元格的作用。
3、写在最后
今天与大家分享了 2 种多表合并的方法。
❶ VSTACK 函数。
❷ TOCOL 函数。
除此之外,还可以用 PowerQuery 和 VBA 来进行多表合并。
本文来自微信公众号:秋叶 Excel (ID:excel100),作者:明镜在心