桓楠百科网

编程知识、经典语录与百科知识分享平台

1秒合并1000个表!Excel大神绝不外传的7个HSTACK神操作

1秒合并1000个表!Excel大神绝不外传的7个HSTACK神操作

一、动态合并多表

场景:将多个表中行数相同但列位置不同的表横向合并。

公式:

=LET(X,HSTACK(Sheet1:Sheet3!A1:T5),FILTER(X,INDEX(X,1,)<>""))

解析:

自动合并不同工作表的列,结合 FILTER 过滤空行。

二、跨表关联数据

场景:根据ID横向关联多个表的详细信息。

公式:

=HSTACK(XLOOKUP(E3:E5,C2:C6,B2:B6),XLOOKUP(E3:E5,B9:B13,D9:D13),XLOOKUP(E3:E5,C2:C6,A2:A6))

解析:

XLOOKUP在多个表格中查找返回部门等信息,再用HSTACK合并多个结果,从而得到一个动态数组区域。

三、条件分列显示

场景:根据状态将数据拆分到不同列。

公式:

=IFNA(HSTACK(FILTER(B2:B9,A2:A9="A"),FILTER(B2:B9,A2:A9="B")),"")

解析:

用 FILTER筛选出部门A、部门B名单,再用HSTACK横向拼接成动态数组,IFNA处理无数据时的错误显示为空白""。

四、智能填充空缺

场景:合并列数不同的表时,自动填充占位符或默认值。

公式:

=LET(x,HSTACK(B2:B6,C9:C13),IF(x="","无数据",x))

解析:

HSTACK合并B2:B6、C9:C13数据区域,原数据区域单元格为空白的情况下,合并后会自动填充为0,与原始数据中的0产生混淆,用指定值填充空白避免产生这种问题。

五、动态生成工资条

场景:为每个员工生成横向扩展的工资明细条。

公式:

=BYROW(HSTACK(A4:A7,B3&":"&B4:B7,C3&":"&C4:C7,D3&":"&D4:D7),LAMBDA(a,TEXTJOIN(" |",,a)))

解析:

每列工资数据与工资类别连接后,HSTACK将所有数据横向拼接,作为BYROW的数组区域,逐行合并分隔符,从而实现将多列工资数据合并为单列明细(如 WPS1 |工资1:11 |工资2:22 |工资3:33)的效果。

六、横向拼接多个函数

场景:根据部门分类汇总求和、计算平均、最大值、最小值等。

公式:

=GROUPBY(A1:A9,B1:B9,HSTACK(SUM,AVERAGE,MAX,MIN),1,0)

解析:

GROUPBY第三参数用HSTACK横向拼接多个函数,可同时汇总出多个值。

七、VLOOKUP多行多列查找

场景:根据多个部门名称查找多列数据。

公式:

=LET(a,{"B";"D";"E"},REDUCE(a,{2;4},LAMBDA(X,Y,HSTACK(X,VLOOKUP(a,A2:D7,Y,0)))))

解析:

公式核心在于VLOOKUP({"B";"D";"E"},A2:D7,2,0),返回查找区域的第二列数据,如果直接把公式改为VLOOKUP({"B";"D";"E"},A2:D7,{2,4},0),不能实现多行多列查找;

结合REDUCE传递参数{2;4}作为VLOOKUP的第三参数,这样通过逐列查找的方式,再用HSTACK函数横向将初始值查找对象{"B";"D";"E"}与每次查找的结果拼接起来,从而实现了VLOOKUP第1、3参数均为多个值的多行多列查找。

实现的效果等同于:

=CHOOSECOLS(CHOOSEROWS(A2:D7,XMATCH(F4:F6,A2:A7)),XMATCH(F3:H3,A1:D1))

立即参与:评论区说出你的独门秘籍,让10万打工人受益!

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言