可实现带模糊搜索的动态下拉菜单,方法包括:一、FILTER函数+数据验证(适用于Excel 365/2021);二、INDEX+AGGREGATE+COUNTIF组合(兼容Excel 2010及以上);三、辅助列+高级筛选+定义名称(无需复杂公式)。

如果您在Excel中需要用户从下拉列表中快速定位并选择目标项,但列表较长导致手动滚动困难,则可借助数据验证结合公式实现带模糊搜索功能的动态下拉菜单。以下是实现该功能的多种方法:
一、使用FILTER函数+数据验证(Excel 365 / Excel 2021)
此方法利用FILTER函数实时筛选包含搜索关键词的条目,并将结果作为动态源绑定至数据验证下拉菜单。需配合名称管理器与INDIRECT函数实现下拉引用。
1、在工作表中准备原始数据列表,例如A2:A100为商品名称。
2、在B1单元格输入搜索关键词,作为触发筛选的条件。
3、按Ctrl+F3打开名称管理器,新建名称“SearchList”,引用位置设为:=FILTER($A$2:$A$100,ISNUMBER(SEARCH($B$1,$A$2:$A$100)),"")。
4、选中目标下拉单元格(如D2),点击【数据】→【数据验证】→【允许】选择“序列”,来源输入:=SearchList。
5、确保B1内容变更时,FILTER自动重算,下拉选项随之更新。
二、使用INDEX+AGGREGATE+COUNTIF构建动态数组(兼容Excel 2010及以上)
该方法不依赖FILTER函数,通过数组公式组合模拟模糊匹配逻辑,生成连续非空结果区域,再以名称方式供数据验证调用,适用于无动态数组功能的旧版Excel。
1、在空白列(如C2)输入数组公式(按Ctrl+Shift+Enter确认):=IFERROR(INDEX($A$2:$A$100,AGGREGATE(15,6,ROW($A$2:$A$100)-ROW($A$2)+1/(ISNUMBER(SEARCH($B$1,$A$2:$A$100))),ROW(A1))),"")。
2、向下填充该公式至足够行数(如C2:C100),形成匹配结果列。
3、在名称管理器中新建“LegacyList”,引用位置设为:=OFFSET($C$2,0,0,COUNTA($C$2:$C$100),1)。
4、对目标单元格设置数据验证,来源填写:=LegacyList。
三、借助辅助列+高级筛选+定义名称(无需公式基础)
此方法通过人工触发高级筛选生成临时匹配列表,再用名称关联该区域,适合对公式敏感或需阶段性控制筛选时机的场景。
1、在D1输入标题“筛选结果”,D2输入公式:=IF(ISERROR(SMALL(IF(ISNUMBER(SEARCH($B$1,$A$2:$A$100)),ROW($A$2:$A$100)-ROW($A$2)+1),ROW(A1))),"",INDEX($A$2:$A$100,SMALL(IF(ISNUMBER(SEARCH($B$1,$A$2:$A$100)),ROW($A$2:$A$100)-ROW($A$2)+1),ROW(A1)))),按Ctrl+Shift+Enter后向下填充。
2、选中D2:D100区域,按Ctrl+G→定位条件→选择“常量”→确定,复制可见单元格。
3、粘贴至新列(如E2),右键【选择性粘贴】→【数值】,清除公式依赖。
4、在名称管理器中新建“ManualList”,引用位置设为:=Sheet1!$E$2:INDEX(Sheet1!$E:$E,COUNTA(Sheet1!$E:$E))(请将“Sheet1”替换为实际工作表名)。
5、为目标单元格配置数据验证,来源填入:=ManualList。










