夜雨聆风学习资料网

ARTICLE · 1173334

EXCEL篇-多分表多列汇总求和,VSTACK+FILTER+BYCOL一招搞定

EXCEL篇-多分表多列汇总求和,VSTACK+FILTER+BYCOL一招搞定
日常工作中,做库存管理、销售统计的同事,常常会遇到这样的场景:
数据分散在多个分表里,但需要合并到一起,并且按照产品编码合并求和,该如何快速实现呢?
场景:假设你有3张分表:华东仓、华南仓、华北仓。每张表标题一样,但产品编码不一样:现在在「汇总表」B2写入公式,自动计算出每个产品编码在分仓的合计数。
一、实现思路

=BYCOL(FILTER(VSTACK(华东仓:华北仓!$B$1:$D$14),VSTACK(华东仓:华北仓!$A$1:$A$14)=A2),SUM)

1.合并:把多个分表的数据纵向堆叠成一张"虚拟总表"→VSTACK函数

2.筛选:从虚拟总表中,按产品编码筛选出目标行→FILTER函数

3.求和:对筛选出来的多行数据,按列分别求和→BYCOL函数

用一句话概括就是:先堆表 → 再筛行 → 后按列加总。

二、公式步骤
步骤
公式
作用
返回结果
①
VSTACK(华东仓:华北仓!$B$1:$D$14)
把各分表的B~D列(入库、出库、结余)纵向堆叠成一张总表
多行三列的数组
②
VSTACK(华东仓:华北仓!$A$1:$A$14)
把各分表的A列(产品编码)纵向堆叠起来
多行一列的数组
③
VSTACK(...)=A2
把堆叠后的产品编码逐行与A2比较
TRUE/FALSE 组成的数组
④
FILTER(①, ③)
根据条件数组,从总表中筛选出TRUE的目标产品的行
仅与总部产品编码的多行三列数组
⑤
BYCOL(第4步, SUM)
对筛选结果的每一列分别求和
三个值:总入库、总出库、总结余
  • 步骤①效果预览(步骤②同)

  • 步骤③效果预果     FILTER函数详细用法可参考这篇文章
  • 步骤④效果预览
三、注意点
工作表顺序:华东仓、中间表、华北仓,中间所有表都会被 VSTACK 读取。不需要的表不要放在中间。同理,需要增加读取汇总的新表,也可以直接在工作 表中间插入,即可自动读取。
四、函数语法[]内为可选填参数,剩余参数为必选项
VSTACK(数组1, [数组2], ...)
作用:将多个数组或单元格区域垂直(即上下)拼接成一个新数组。可以把它理解为“把数据从上到下堆叠起来”。
函数详语法可以参考这篇文章EXCEL篇-分表更新,总表一键自动汇总!再也不用手动复制粘贴了

FILTER(筛选区域,筛选条件,[无结果提示])

作用:照你设定的条件,自动从一张表中筛选出所有符合条件的数据行,并动态显示出来

函数详语法可以参考这篇文章Excel篇-XLOOKUP vs FILTER:Excel 一对一 / 一对多查找完整教程,做表必备

BYCOL(数组, 对每一列执行的计算)
作用:BYCOL 会“逐列”处理一个数组,把每一列单独拿出来,套用一个你自定义的计算规则,最后把每列的计算结果拼成一个新数组返回。
参数
中文说明
数组
需要处理的单元格区域或者数组
对每一列执行的计算
可以直接写 SUM、MAX、AVERAGE 这类聚合函数;标准写法搭配 LAMBDA,代表循环到的当前这一列
👉 收藏 + 在看,用的时候不迷路 

相关学习资料