MICROSOFT

EP06. “Search Box 制作搜索框”

首页 Microsoft 工具 Excel · Basics · Find & Select · EP06
约 5 分钟· #EP06#Excel#Find & Select
🔒 登录后可标记已读
  • 这篇教怎么用几个函数组合,在 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:

  1. Search Box