在 Excel 中进行“数组筛选”通常指的是从一组数据中,根据一个或多个条件提取出符合要求的子集。
根据你的 Excel 版本和具体需求,主要有以下几种方法:
使用 FILTER 函数(推荐,Excel 2021 或 Office 365)
这是最现代、最简洁的方法。FILTER 函数可以直接返回一个动态数组结果。
语法:
=FILTER(数组, 包含, [如果为空])
示例:
假设 A 列是“姓名”,B 列是“部门”,C 列是“销售额”,你想筛选出“销售部”的所有人员及其销售额。
=FILTER(A2:C10, B2:B10="销售部", "无结果")
多条件筛选(AND 逻辑):
要筛选出“销售部”且“销售额大于 10000”的记录:
=FILTER(A2:C10, (B2:B10="销售部") (C2:C10>10000), "无结果")
注意:在 FILTER 中,多个条件之间用 `表示 AND(且),用+` 表示 OR(或)。
使用高级筛选(无需公式,适合一次性操作)
适用于所有 Excel 版本,不需要写公式,但结果是静态的(不会随源数据自动更新)。
步骤:
- 设置条件区域:在空白区域(如 E1:F2),复制表头,并在下方输入筛选条件。
- E1 写“部门”,E2 写“销售部”;F1 写“销售额”,F2 写
>10000。
- E1 写“部门”,E2 写“销售部”;F1 写“销售额”,F2 写
- 打开高级筛选:
点击【数据】选项卡 -> 【排序和筛选】组 -> 【高级】。
- 设置参数:
- 列表区域:选择你的原始数据范围(如 A1:C10)。
- 条件区域:选择你刚才设置的条件区域(如 E1:F2)。
- 筛选方式:选择“在原有区域显示筛选结果”或“将筛选结果复制到其他位置”。
- 点击【确定】。
使用 INDEX + SMALL + IF 数组公式(经典方法,适用于旧版 Excel)
在 Excel 2019 及更早版本中,没有 FILTER
函数,常用这个组合来实现动态数组筛选。
场景: 从 A2:C10 中筛选 B 列为“销售部”的行,并返回 A 列的姓名。
公式:
=INDEX(A$2:A$10, SMALL(IF(B$2:B$10="销售部", ROW(B$2:B$10)-ROW(B$2)+1), ROW(1:1)))
操作步骤:
- 输入上述公式。
- 关键步骤:因为是数组公式,在 Excel 2019 及之前版本中,必须按 Ctrl + Shift + Enter 而不是仅按 Enter。
- 向下拖动填充柄,即可依次提取所有符合条件的数据。
说明:ROW(1:1) 用于生成 1, 2, 3… 序列,让 SMALL 函数依次提取第 1 小、第 2 小… 的行号。
使用 Power Query(适合大数据量、复杂清洗)
如果数据量很大或需要频繁刷新,Power Query 是最佳选择。
步骤:
- 选中数据区域 -> 【数据】选项卡 -> 【从表格/区域】。
- 在 Power Query 编辑器中,点击列标题旁的下拉箭头进行筛选。
- 点击【主页】-> 【关闭并上载】,结果会输出到一个新工作表中。
- 源数据更新后,只需右键点击结果表 -> 【刷新】即可。
总结建议
| 方法 | 适用版本 | 优点 | 缺点 |
|---|---|---|---|
| FILTER 函数 | Excel 2021 / 365 | 语法简单,动态更新,支持多条件 | 仅新版 Excel 可用 |
| 高级筛选 | 所有版本 | 无需公式,直观 | 结果是静态的,需手动操作 |
| INDEX+SMALL+IF | 所有版本 | 兼容性好,动态更新 | 公式复杂,需数组输入(Ctrl+Shift+Enter) |
| Power Query | 所有版本 | 处理大数据,可重复使用,自动化 | 学习曲线稍陡 |
对于大多数现代用户,强烈推荐使用 FILTER 函数。 如果你有旧版 Excel 且需要动态结果,则使用 INDEX+SMALL+IF 数组公式。
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/479152.html



