乐于分享
好东西不私藏

FILTER关键词搜索:Excel多列同时匹配,一个公式搞定智能筛选!

FILTER关键词搜索:Excel多列同时匹配,一个公式搞定智能筛选!

本文作者:表哥在此 | 专注 Excel 函数与 VBA 实战教学


🤔 订单太多,怎么快速找到想要的数据?

销售数据表有 20条订单:

  • 订单编号、客户名称、区域、城市、产品、渠道、订单金额、订单状态

想找「广州」的订单? 想找「线上商城」的订单? 想找「已发货」的订单?

❌ Ctrl+F 只能定位单个单元格,不能过滤整行! ❌ 筛选功能 每次都要手动点开下拉菜单! ✅ FILTER + BYROW + LAMBDA,一个公式,全列关键词匹配,输入即搜!


📊 原始订单数据

💡 核心公式

① 关键词搜索公式

=IF(C3="","",FILTER(客户订单明细!A1:H21,BYROW(客户订单明细!A1:H21, LAMBDA(x,OR(ISNUMBER(FIND(C3, x))))),"无匹配数据"))

② 匹配数量统计

=IF(C3="",0,SUM(--BYROW(客户订单明细!A1:H21,LAMBDA(x,OR(ISNUMBER(FIND(C3, x)))))))

🎯 公式拆解(六层嵌套)

第一层:FIND — 在单元格中查找关键词

FIND(C3,x)
  • C3 = 搜索关键词(如「广州」)
  • x = BYROW 传入的当前行数组
  • 在该行所有列中查找关键词
  • 找到 → 返回数字(位置);找不到 → 返回 #VALUE!

第二层:ISNUMBER — 判断是否找到

ISNUMBER(FIND(C3,x))
  • 找到(返回数字)→ TRUE
  • 未找到(返回错误)→ FALSE

第三层:OR — 该行任意一列命中即通过

OR(ISNUMBER(FIND(C3,x)))
  • 只要该行任意一列包含关键词 → TRUE
  • 全部列都没命中 → FALSE

第四层:BYROW — 逐行遍历

BYROW(客户订单明细!A1:H21, LAMBDA(x, ...))
  • 对 20 行数据逐行执行第三步逻辑
  • 返回 20 行的 TRUE/FALSE 数组

第五层:FILTER — 筛选结果

FILTER(客户订单明细!A1:H21,第四步结果,"无匹配数据")
  • 用 TRUE/FALSE 数组筛选原始数据
  • TRUE 的行保留,FALSE 的行过滤掉
  • 无匹配时显示「无匹配数据」

第六层:IF — 容错处理

IF(C3="","",第五步结果)
  • 关键词为空时返回空字符串,避免全表溢出

✅ 搜索效果演示

在 C3 单元格输入关键词「广州」:

搜索结果(自动溢出显示):


更多搜索示例

关键词
匹配数量
匹配列
线上商城
5条
产品、渠道
深圳
2条
城市
已发货
14条
订单状态
企业采购
8条
渠道
202606
20条
订单编号
华南
4条
区域

📝 操作步骤

Step 1:准备数据源

将原始数据放在一个命名区域或独立 Sheet:

  • 建议 Sheet 名:客户订单明细
  • 包含:订单编号、客户名称、区域、城市、产品、渠道、订单金额、订单状态

Step 2:创建搜索工作表

新建 Sheet,命名为「订单搜索」

Step 3:设置查询入口

在搜索表中:

单元格
内容
B3
查询关键词(用户输入区域)
E3
匹配数量
F3
=IF(C3="",0,SUM(--BYROW(...)))
A6
=IF(C3="","",FILTER(...))

Step 4:输入公式

在 A6 输入核心公式:

=IF(C3="", "", FILTER(客户订单明细!A1:H21, BYROW(客户订单明细!A1:H21, LAMBDA(x, OR(ISNUMBER(FIND(C3, x))))), "无匹配数据"))

按 Enter 键,公式自动溢出显示匹配结果!

Step 5:美化界面

  • 设置标题行格式(加粗、填充颜色)
  • 设置条件格式(匹配行高亮)
  • 添加边框和底色

🔑 关键技巧总结

技巧
说明
FIND 不区分大小写
搜索更智能,用户友好
BYROW 逐行遍历
对每行独立判断,无需辅助列
LAMBDA 匿名函数
定义 BYROW 的处理逻辑
OR 任意命中
该行任意列包含关键词即匹配
FILTER 溢出
自动扩展多行,无需 Ctrl+Shift+Enter

⚠️ 注意事项

注意点
说明
Excel 版本
需要 Excel 365 / 2021(FILTER/BYROW/LAMBDA)
数据范围
公式中的 A1:H21 需根据实际数据调整
空值处理
IF(C3="",...) 防止关键词为空时全表溢出
性能
数据量超过 10000 行时可能略有延迟

📋 完整公式模板

' 搜索结果(放到结果起始单元格)=IF(C3="","",FILTER(客户订单明细!A1:H21,BYROW(客户订单明细!A1:H21,LAMBDA(x,OR(ISNUMBER(FIND(C3,x))))),"无匹配数据"))' 匹配数量统计(放到数量单元格)=IF(C3="",0,SUM(--BYROW(客户订单明细!A1:H21,LAMBDA(x,OR(ISNUMBER(FIND(C3,x)))))))


    💬 关注公众号「表哥在此」,后台回复「关键词搜索」,获取本文配套练习文件! 你的 Excel 函数技巧,越来越好!


    本文原创,转载需授权

    回首页,搜索你想要的文档

    在首页搜索框输入关键词,快速定位资料

    文库首页搜索指引 立即搜索

    相关学习资料