Excel 函数教程:FILTER+CHOOSECOLS,筛选后只提取指定列
- 2026-11-08 06:04:26
Excel 函数教程:FILTER+CHOOSECOLS,筛选后只提取指定列
业务场景 日常做人员、商品台账时,经常遇到这种需求:按条件筛选出行,但是不需要返回全部列,只挑其中几列输出。 就像本例:筛选出生产部员工,只保留【姓名】和【年龄】,直接丢弃部门这一列。 传统做法:先用 FILTER 把整行数据全部捞出来,再手动删除不需要的列;一旦原始数据更新,又要重复操作。 而 CHOOSECOLS 可以直接在筛选结果里挑选列,一步到位。 案例公式 输入在 F2 单元格,一键溢出生成结果。 
逐层拆解公式 CHOOSECOLS 是按列序号选取列的函数。{1,3}代表:只保留返回结果里的第 1 列、第 3 列,直接舍弃第 2 列(部门)。 最终输出只有姓名 + 年龄两列,完美匹配需求。 通用模板 传统方案对比 ✅ FILTER+CHOOSECOLS 组合 ❌ 旧版方案(辅助列 / 复制后删除) 拓展玩法 & 避坑 例如筛选生产部,并且年龄大于 30: 报错提示 搭配 VSTACK 拼接表头 直接带上表头一次性输出完整表格。 小结 CHOOSECOLS 核心能力:对数组结果,自由挑选、重排输出的列。 和 FILTER 搭配,是动态数组里非常高频的组合:先筛选行,再挑选列,按需提取数据,不用多余操作。 

01
02
=CHOOSECOLS(FILTER(A2:C11,B2:B11="生产部"),{1,3})
03
FILTER (A2:C11,B2:B11="生产部")
FILTER 先完成筛选:在 A2:C11 区域,把 B 列部门等于 “生产部” 的所有整行全部提取出来。 此时得到的结果是 3 列:姓名、部门、年龄。CHOOSECOLS (结果,{1,3})
04
=CHOOSECOLS(FILTER(数据源区域,筛选条件),{需要保留的列序号数组})列序号:是 FILTER 输出结果中的列号,不是原工作表的列标。 示例: {1,2,4}代表选取第 1、2、4 列,顺序可以调换,写{3,1}还能实现列顺序互换。
05
优点:一步筛选 + 选列,动态溢出;原表新增 / 修改数据,结果自动刷新;不用辅助列,不用复制粘贴再删列。 缺点:仅 Microsoft 365 / Excel2021 及更高版本支持。
优点:低版本 Excel 可用。 缺点:数据变动后,结果不会自动更新,每次都要重新筛选、删减列,维护麻烦,容易出错。
06
调换输出列顺序
公式改成=CHOOSECOLS(FILTER(A2:C11,B2:B11="生产部"),{3,1}),输出顺序变成【年龄,姓名】。多条件筛选
=CHOOSECOLS(FILTER(A2:C11,(B2:B11="生产部")*(C2:C11>30)),{1,3})#CALC!:版本不支持动态数组函数;#VALUE!:写的列序号超出 FILTER 返回的总列数。
=VSTACK({"姓名","年龄"},CHOOSECOLS(FILTER(A2:C11,B2:B11="生产部"),{1,3}))07

本文来自网友投稿或网络内容,如有侵犯您的权益请联系我们删除,联系邮箱:wyl860211@qq.com 。