分类:查找和引用函数
这是最新的Excel函数。我们前面介绍过这一批函数的作用,功能非常强大。现在,我们开始详细介绍这些函数。
VSTACK函数的作用就是在垂直方向上合并多个区域(数组)。
语法如下:
VSTACK(数组1,[数组2],......)
VSTACK函数的功能类似于M语言(Power Query)中的Table.Combine函数和DAX语言中的UNION函数。使用非常简单:
一般来说,使用VSTACK合并的数组应该具有相同的列。但是,这并不是强制要求,两个列数不同的数组也可以通过VSTACK合并:
当合并两个列数不同的数值时,VSTACK函数返回的数据列数与列数组最多的数组相同,对于其中对应于列数不足最大值的数组的部分,以#N/A代替。
可以使用IFNA函数来去掉#/N/A:
在这个场景中,我们需要将多个区域的数据合并在一起,然后去掉重复值。
公式如下:
=UNIQUE(VSTACK(B3:C6,E3:F7))
结果如下:
动态数组公式(如UNIQUE,FILTER,SORT或其他可以返回数组的函数)往往只成立数据区域,得到的结果是没有标题行的:
可以通过VSTACK函数一起返回标题行:
这是一种很常见的场景。
我们的数据存放在多个工作表中,工作表以月份命名(或区域,部门,产品类别等):
在每个表中,我们的表格结构相同,只是其中数据不一样,数据的行数也不同。
现在我们需要将它们合并在一起。
可以使用公式:
=VSTACK('1月'!A2:C5,'2月'!A2:C6)
如果工作表比较多,可以输入如下的公式:
=VSTACK('*月'!A2:C100)
这里用*代表所有的月份,区域写A2:C100(因为各表中行数不同,所以可以写一个最大行数)。
回车后,公式变成:
这时,我们看到,公式变成了合并所有表格中的A2:C100区域。结果中多了很多全是0的行,这些是我们不需要的,可以通过FILTER函数去掉:
=LET(arr,VSTACK('1月:2月'!A2:C6),FILTER(arr,INDEX(arr,0,2)>0))
这个公式中的FILTER函数的用法具体请参见:FILTER函数详解。
如果希望跟标题一起返回,可以使用公式:
=LET(arr,VSTACK('1月:2月'!A2:C6),data,FILTER(arr,INDEX(arr,0,2)>0),VSTACK('1月'!A1:C1,data))
注:VSTACK函数目前只在Office 365中的Excel中Beta频道中可以使用。
Excel+Power Query+Power Pivot+Power BI
自定义函数 底部菜单:知识库->自定义函数
面授培训 底部菜单:培训学习->面授培训
也可以在历史文章中学习Excel,Power Query,Power Pivot,Power BI,Power Automate各种技巧。
联系客服