HSTACK函数是WPS表格新增函数之一,是2023及以上版本才支持。它是将多个数组按水平方向(逐列)合并,返回一个新的动态数组。

语法:=HSTACK(数组1,[数组2],…)

参数:数组1, 数组2…(可直接引用单元格区域或嵌套函数生成的数组,最多支持254个参数)。

合并后数组的行数为所有参数中行数的最大值,行数不足的数组会用#N/A填充(可通过IFERROR处理)。支持动态数组扩展,源数据更新时结果自动刷新。

以上是HSTACK函数的语法和参数介绍,下面通过一些应用实例来进一步介绍它的具体应用。

1.基础用法

需求:将“门店”列和“销量”列横向合并为新表格。

数据示例:

公式:=HSTACK(A1:A15,C1:C15)

解释:横向堆叠两数据,即将(A1:A15,C1:C15)横向堆叠这两列数据。

公式:=HSTACK(TRIMRANGE(A:A),TRIMRANGE(C:C))

解释:通过TRIMRANGE函数提取有效数据,再进行横向堆叠。

需求:对数据列重新编排。

公式:=HSTACK(B2:B8,A2:A8,C2:D8)

解释:可以据需要的列顺序重新排列列顺序。

2.合并不同工作表的指定列

需求:将“Sheet1!A1:B5”的区域数据和“Sheet2、Sheet3”的“B1:B5”列合并。

数据示例:

公式:=HSTACK(Sheet1!A1:B5,Sheet2!B1:B5,Sheet3!B1:B5)

解释:将不同表格的数据区域横向堆叠合并。

3.与UNIQUE+SUMIFS嵌套生成动态汇总表

需求:对“门店”列去重后,横向合并“门店”和对应的“销售量总和”。

数据示例:

公式:=HSTACK(UNIQUE(A2:A15),SUMIF(A2:A15,UNIQUE(A2:A15),C2:C15))

解释:先用UNIQUE去重门店,再用SUMIF对应销售量求总和,完成后用HSTACK横向堆叠。

4.表格转换后横向堆叠

需求:将二维表转换为一维表。

数据示例:

公式:=HSTACK(TOCOL(IF(B2:D7<>”,A2:A7,1/0),3),TOCOL(B2:D7,3))

解释:

IF(B2:D7<>”, A2:A7, 1/0):‌作用‌:生成一个与 B2:D7 区域大小相同的数组。‌条件‌:B2:D7<>”,检查 B2:D7 每个单元格是否 ‌非空‌。‌真值时‌:返回 A2:A7 对应行的值(即项目名称)。示例:若 B3 非空,则返回 A3(项目B)。‌假值时‌:返回 1/0(即错误值 #DIV/0!)。

TOCOL(…, 3):‌作用‌:将上一步的数组 ‌转换为一列‌,并 ‌忽略错误值‌。参数3表示:跳过所有错误值(#N/A、#DIV/0! 等)。

WPS表格中HSTACK函数应用深度详解及实例分享

HSTACK(第一部分, 第二部分):‌作用‌:将两个单列数组 ‌水平合并‌ 成一个两列表格。‌第一列‌:来自 TOCOL(IF(…),3)(项目名称)。‌第二列‌:来自 TOCOL(B2:D7,3)(对应的值)。

5.统计重复出现资数

需求:将数据和出现次数形成一个数组。

数据示例:

公式:=HSTACK(UNIQUE(A2:A16),COUNTIF(A2:A16,UNIQUE(A2:A16)))

解释:UNIQUE(A2:A16):‌作用‌:提取区域 A2:A16中的‌唯一值‌(去除重复项)。COUNTIF(A2:A16, UNIQUE(A2:A16)):‌作用‌:针对UNIQUE返回的每个值,在 A2:A16中‌统计其出现次数‌。HSTACK(数组1, 数组2):‌作用‌:将 UNIQUE和COUNTIF 的结果‌水平堆叠成两列‌。

6.配合XLOOKUP实现多列数据查询

需求:根据“员工姓名”查询对应的“员工编号”“部门”“工资”三列信息。

数据示例:

公式:=XLOOKUP(F3,B3:B8,HSTACK(A3:A8,C3:D8),,0)

解释:利用HSTACK重新堆叠数组,作为XLOOKUP返回值。

7.配合SORT按指定列排序

需求:合并“姓名”和“工资”列,并按“工资”降序排序。

数据示例:

公式:=SORT(HSTACK(B2:B8,D2:D8),2,-1)

解释:HSTACK堆叠员工姓名和工资行列数,再利用SORT对工资列进行降序排序。(2表示按第2列排序,-1表示降序)

8.配合FILTER筛选后合并

需求:筛选“工资>3000”的员工,并合并其“员工编号”、“部门”和“工资”列。

数据示例:

公式:=FILTER(HSTACK(A3:A8,C3:D8),D3:D8>3000)

解释:HSTACK重组数组,再用FILTER筛选大于3000的结果。

9.处理不同长度数组(用IFERROR填充空白)

需求:合并“姓名”列(7行)和“部门”列(5行),缺失值用“-”填充。

数据示例:

公式:=IFERROR(HSTACK(A1:A7,C1:C5),’-‘)

解释:HSTACK堆叠行数不一致时,以最大行为基础,小于最大行数的列将以错误值(#N/A)填充,IFERROR将错误值进行替换。(原合并结果部门列第6-7行为#N/A,用IFERROR替换)

10.态生成带序号的标题行

需求:生成“序号+姓名+部门”的标题行,其中序号自动从1开始递增。

数据示例:

公式:=HSTACK(VSTACK(‘序号’,SEQUENCE(ROWS(A2:A7))),A1:A7,C1:C7)

解释:SEQUENCE生成序列号数组,HSTACK横向堆叠。

通过以上在WPS表格中的应用实例场景介绍,HSTACK函数可高效解决数据合并、动态汇总、跨表整合等问题,大幅减少手动操作并提升表格自动化程度。但需要注意的是#N/A错误处理:当合并数组行数不一致时,缺失行显示#N/A,可通过IFERROR(HSTACK(…), ‘缺失’)替换为指定文本。