乐于分享
好东西不私藏

Excel函数避雷:教你用TOCOL合并表格的,不是菜,就是坏!

Excel函数避雷:教你用TOCOL合并表格的,不是菜,就是坏!
新版Excel推出了一系列功能非常强大的新函数,TOCOL就是其中之一。
关于TOCOL函数的功能,官方说明是“Returns the array in a single column”(返回单列数组)。
TOCOL函数内置了屏蔽错误值和空值的功能,这一功能被很多所谓的大佬玩出各种花样,其中之一就是跨表合并。
如下图,要将3张子表合并,看看TOCOL是如何操作的。
操作步骤如图:
这种操作的思路是:将TOCOL函数第一参数的范围放大一点(比所有表的行数都大),第二参数设置为忽略空白,就实现了跨表合并。
如此操作,貌似没问题。
但是,有一个前提,被合并的子表必须100%规范,不能有空白单元格。而且,合并表和子表中的字段顺序必须完全一致(姑且不算条件吧)。
如果,任意表中有空白单元格,结果必然出错。
我们把最后一张表删掉两个数据:
再看TOCOL合并的结果:
很明显,因为忽略空值而错位,导致合并出错!
标头字段顺序完全一致,属于跨表合并中最简单的,TOCOL都能出错!所以,那些把TOCOL合并子表的方法吹上天的,大家自个儿去评价。
本文案例中的跨表合并,如果用函数方法,FILTER+VSTACK才是正道。
=FILTER( VSTACK(表1:表3!A2:D200)&"", VSTACK(表1:表3!A2:A200)<>"")
返回如下:
我们日常拿到的各类数据表,不可能100%都是非常规范的,如果使用TOCOL函数跨表合并,导致最终计算错误,后果难以想象。
更复杂的跨表合并,最推荐的是Power Query方式,可以参考下面视频。
如果跨工作簿合并,可以参考此文:透视表进阶01篇:跨工作簿透视
《孙子兵法》中的“以正合,以奇胜”这六个字,对于我们学习Excel也有极大的指导意义。先学习规范的用法,在熟练的基础上,再结合自身所学技能,在深度和广度上作适当的扩展。

精彩合集:

Excel基础进阶

编程式函数

函数专题


练习文件自取:私信回复0625不是留言