夜雨聆风学习资料网

ARTICLE · 1037717

Excel365 组合函数:筛选 + 自定义提取多字段,一步到位

Excel365 组合函数:筛选 + 自定义提取多字段,一步到位

01

业务场景
日常筛选数据,很多人习惯用【筛选】功能手动勾选条件。但每次数据源更新,都要重新操作,而且筛选出来的列,是原表完整字段,没办法直接只保留自己想要的几列。
365 动态数组 Excel,FILTER+HSTACK组合,先挑选需要的列,再按条件筛选,一条公式直接溢出结果,原始数据变更,结果自动刷新。

02

案例演示
数据源 A2:H10,包含人员姓名、籍贯、身高信息。 
需求:提取【姓名、籍贯】两列,只保留身高小于 170的人员。

03

公式
=FILTER(HSTACK(A2:A10,E2:E10),H2:H10<170)
输入公式,自动溢出生成表格,一次性输出符合条件的姓名和籍贯。

04

公式逐层拆解
  1. HSTACK(A2:A10,E2:E10)HSTACK 水平堆叠,把 A 列姓名、E 列籍贯拼接成新二维数组,只保留我们需要的字段,原表其他字段直接舍弃。
  2. FILTER(待筛选数组,筛选条件)
  • 第 1 参数:HSTACK 拼接好的二维数组
  • 第 2 参数:H2:H10<170,筛选规则:身高小于 170
逻辑顺序:先用 HSTACK 挑选列,再用 FILTER 按行过滤,输出的结果列完全由我们自定义。

05

传统写法对比
传统方案:
  1. 全表开启筛选,身高列设置条件 < 170;
  2. 复制筛选后的姓名、籍贯两列,粘贴到新区域。
缺点:
  • 新增、修改原始数据,筛选结果不会自动更新;
  • 复制粘贴容易带错多余列;
  • 频繁重复操作,报表自动化差。
FILTER+HSTACK 优势:
  • 单公式完成【选列 + 筛选】两步;
  • 数据源改动,结果实时自动刷新;
  • 想增减输出字段,直接在 HSTACK 内增删区域。

06

拓展玩法
  1. 多条件筛选,身高 < 170,并且学历为大专
=FILTER(HSTACK(A2:A10,E2:E10), (H2:H10<170)*(B2:B10="大专"))
  1. 搭配 TRIMRANGE,动态有效区域,避免整列引用卡顿
=FILTER(HSTACK(TRIMRANGE(A:A),TRIMRANGE(E:E)),TRIMRANGE(H:H)<170)

07

避坑要点
  1. 仅 Microsoft365 动态数组版本支持,旧版 Excel 不支持 HSTACK、FILTER 溢出;
  2. HSTACK 里面所有区域,行数必须保持一致,否则数组错位;
  3. 公式输出区域不能存在其他文字,否则触发 #SPILL! 溢出报错;
  4. 筛选条件区域,行数要和 HSTACK 内区域行数对齐。

相关学习资料