新闻动态
NO.175# Excel多工作表合并--动态数组篇
发布日期:2025-04-13 11:13    点击次数:141
地 球 不 爆 炸    我 们 不 打 烊

图片

  · START ·>>>上课啦:实际工作中,无论是销售、生产或者财务等部门,都会面对Excel多工作表合并问题。如果是日报表或者是月报表,每天每月都要重复这些工作。本期小课堂我们分享借助动态数组VSTACK函数实现Excel多工作表合并▼本期案例截图

图片

图片

图片

图片

抛砖引玉:距离2024年除夕不到30天时间,为了在年前完成财务数据分析,小李从系统导出2023年01-12月报销明细表数据进行汇总整合。如上图所示小试牛刀:我们在往期小课堂中分享了借助VBA、POWERQUERY和SQL等方法实现Excel多工作表合并。但是,操作起来都相对复杂!比如,代码不明白的VBA方法、操作步骤多的POWERQUERY方法和原理不理解SQL方法等下面,我们将借助“简单粗暴”的动态数组方法因为12张报销明细表内的数据量有多有少,无法确定。比如:01月的数据量28条,02月的数据量30条,03月的数据量47条,04月的数据量38条,05月的数据量59条,06月的数据量65条,07月的数据量29条,08月的数据量22条,09月的数据量37条,10月的数据量44条,11月的数据量28条,12月的数据量45条所以为了保证报销明细表内的数据全部被合并,设定A2:F99单元格区域为合并区域(足够覆盖每张报销明细表内的数据)解答在“合并”表内的A2单元格编辑函数公式=VSTACK('01月:12月'!A2:F99),或者编辑函数公式=VSTACK('*'!A2:F99)。如下图所示▼操作示意图

图片

因为VSTACK函数会按照12张报销明细表内包含空行的最大数据区域A2:F99进行合并所以“合并”表内存在很多0值数据区域。如上图所示解答为了规避“合并”表内的0值数据区域,需借助FILTER函数。在“合并”表内的A2单元格重新编辑函数公式=FILTER(VSTACK('01月:12月'!A2:F99),VSTACK('01月:12月'!A2:A99)<>""),或者重新编辑函数公式=FILTER(VSTACK('*'!A2:F99),VSTACK('*'!A2:A99)<>"")☆☆注:有关FILTER函数的知识点,我们在<第106期小课堂:FILTER函数小课堂>中分享过,此处不再赘述!若如果合并12张报销明细表内科目名称为“差旅费”的数据则在“合并”表内的A2单元格编辑函数公式=FILTER(VSTACK('01月:12月'!A2:F99),(VSTACK('01月:12月'!A2:A99)<>"")*(VSTACK('01月:12月'!E2:E99)="差旅费")),或者编辑函数公式=FILTER(VSTACK('*'!A2:F99),(VSTACK('*'!A2:A99)<>"")*(VSTACK('*'!E2:E99)="差旅费"))庖丁解牛:下面,我们解析函数公式=VSTACK('01月:12月'!A2:F99)和=VSTACK('*'!A2:F99)之间的区别☆☆ =VSTACK('01月:12月'!A2:F99)所对应的Excel多工作表合并动态数组模板公式为=VSTACK('开始工作表:结束工作表'!合并区域),适用于“合并”表在首尾两端位置的情形。如下图所示▼示意图

图片

图片

☆☆ =VSTACK('*'!A2:F99)所对应的Excel多工作表合并动态数组模板公式为=VSTACK('*'!合并区域),适用于“合并”表在任意位置的情形。如下图所示▼示意图

图片

图片

图片

娓娓道来:下面,我们以“合并”表在“08月”表之后“09月”表之前为例在“合并”表内的A2单元格编辑函数公式=VSTACK('*'!A2:F99),回车后,发现函数公式自动转换为=VSTACK('01月:08月'!A2:F99,'09月:12月'!A2:F99)。如下图所示▼操作示意图

图片

下课啦>>>:目前,用通配符“*”代表多个工作表对应的数据区域,借助动态数组VSTACK函数实现Excel多工作表合并方法,即:=VSTACK('*'!合并区域)在国产WPS表格软件中会提示报错!!!如下图所示▼WPS报错提示框

图片

图片

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报。