EP06. “Search Box 制作搜索框”
🔒 登录后可标记已读- 这篇教怎么用几个函数组合,在 Excel 表格里做一个"输入关键字、自动列出所有相关结果"的搜索框,效果类似一个简易的模糊搜索工具
- 前置知识是 SEARCH、ROW、RANK、VLOOKUP、IFERROR 这几个函数各自的基本用法(不熟悉也没关系,这篇会说明每个函数在这里扮演的角色)
- 学完能做出一个能实际套用的关键字搜索框
重点内容
适用版本
桌面版通用(Excel 365 / 2021 / 2019 等)。
整体结构
- B2 单元格:用户输入搜索关键字的地方(搜索框)
- 数据清单放在某一列(例如 E 列),是搜索的来源
- 一组辅助列(D、C 列)负责算出"谁跟关键字匹配、匹配的排名顺序"
- 最终结果显示在 B 列
第一步:用 SEARCH 找出关键字出现的位置
在辅助列(例如 D4)输入 SEARCH 函数,对搜索框 B2 建立绝对引用($B$2),在数据清单里逐一查找关键字出现的位置。SEARCH 函数不区分大小写,找到就返回关键字在字符串里的起始位置,找不到就报错。
把公式往下复制到清单其他行。
第二步:加 ROW 和 IFERROR,确保结果唯一且不报错
纯用 SEARCH 容易出现"多行返回同一个位置数字"导致后面排名时数值重复,所以调整公式:
- 用 ROW 函数取得当前行号,把行号除以一个够大的数字(例如 1000)后加到 SEARCH 的结果上,让每一行算出来的数值都独一无二
- 外层包一层 IFERROR,SEARCH 找不到关键字(原本会报错)时,直接返回空字符串,避免辅助列出现一堆 #VALUE! 错误
逻辑示意:IFERROR(SEARCH($B$2, 数据单元格) + ROW()/1000, "")
第三步:用 RANK 排名
在另一个辅助列(例如 C4)用 RANK 函数,把上一步算出来的数值排名,第三参数设为 1(代表数值越小排名越前,也就是关键字出现位置越靠前的排名越高)。往下复制公式。
第四步:用 VLOOKUP 抓出对应结果
在结果列(B 列)用 VLOOKUP,以排名数字为查找依据,去数据清单里抓出对应的名字/结果,显示在搜索框下方。
第五步:美化界面
- 把辅助列(排名数字所在的 A 列或其他显示用的序号列)文字颜色改成白色,视觉上"隐形"
- 隐藏 C、D 两个辅助列,只留搜索框和结果显示区
[截图:完成后的搜索框效果,B2 输入关键字后,下方自动列出匹配结果、辅助列已隐藏]
函数速查
| 函数 | 作用 | 在这个搜索框里的角色 | 例子 |
|---|---|---|---|
| SEARCH | 找出子字符串在字符串中的位置,不区分大小写 | 判断哪些资料含有搜索关键字 | =SEARCH($B$2,E4) |
| ROW | 返回单元格所在行号 | 让每行算出的数值唯一,避免并列 | =ROW()/1000 |
| IFERROR | 捕捉公式错误并替换成指定值 | 关键字找不到时不显示错误 | =IFERROR(SEARCH($B$2,E4)+ROW()/1000,"") |
| RANK | 在一组数字里返回某数值的排名 | 把匹配到的结果按位置先后排序 | =RANK(D4,$D$4:$D$20,1) |
| VLOOKUP | 垂直查找 | 根据排名抓出对应的结果显示出来 | =VLOOKUP(A4,$C$4:$E$20,3,FALSE) |
学完你会
- ✅ 会用 SEARCH + ROW + IFERROR 组合出一条不会报错、且每行数值唯一的辅助公式
- ✅ 会用 RANK 把匹配结果按位置先后排序
- ✅ 会用 VLOOKUP 根据排名抓出对应结果,做出一个能实际套用的搜索框
常见错误
- 忘记给 B2(搜索框)加绝对引用
$B$2,公式往下复制后引用跑掉,导致每行搜索的关键字都不一样 - RANK 的第三参数没设成 1,导致排名顺序反过来
- 辅助列没隐藏,表格看起来乱糟糟,失去"搜索框"的简洁感
📌 原始教程页面上的函数截图无法直接抓取成文字,以上公式为根据页面逻辑说明整理,实际单元格位置可依自己的表格结构调整。
Sources
Blog / Website: