如何在EXCEL单元格内实现输入数据下拉菜单自动匹配数据源中的内容?

就比如在sheet1中有个食物名称表,当我在sheet2 F3中输入鱼时,能够自动出现下拉菜单并筛选出sheet1D列中带有“鱼”字的食物名称

如果不用下拉菜单,用一道公式搞定:

在Sheet2的F4输入

IF(F$3="","",INDEX(Sheet1!D:D,SMALL(IF(ISNUMBER(FIND(F$3,Sheet1!D$1:D$100)),ROW($1:$100),4^8),ROW(1:1)))&"")

数组公式,输入后先不要回车,按Ctrl+Shift+Enter结束计算,再向下填充。

温馨提示:内容为网友见解,仅供参考
第1个回答  2021-07-14
Private Sub worksheet_SelectionChange(ByVal Target As Range)
'启用EXCEL宏使用的环境,具体方法可问度娘
'按ALT+F11打开VBE编辑器,找到左侧VBAproject工程树下方的(sheet2)表;
'双击该表,将代码粘贴进表右侧代码窗,保存。
'文件另存为.XLSM或.xls格式
Dim d, iRow%, i%

Set d = CreateObject("scripting.dictionary")
arr = Sheets("Sheet1").Range("D2").CurrentRegion '表1食物清单,表首在D2
'***********************事件触发设置****************************
'所选单元格数量只能是1个
If Target.Rows.Count * Target.Columns.Count > 1 Then Exit Sub
'所选单元格内容非空
If Len(Target) = 0 Then Exit Sub
'所选单元格位于F列
Set Rng = Intersect(Target, Columns("F:F"))
If Rng Is Nothing Then Exit Sub
'删除所选单元格中存在的有效性设置(初始化)
Target.Validation.Delete

'将表1的D列食物清单中包含F列所选单元格的文字的不重复项写入字典
For i = 2 To UBound(arr)
If InStr(arr(i, 1), Target) Then
If Not d.exists(arr(i, 1)) Then
d(arr(i, 1)) = ""
End If
End If
Next i

'***********************有效性设置******************************
If d.Count > 0 Then
With Target.Validation
.Add 3, 1, 1, Formula1:=Join(d.keys, ",")
.IMEMode = xlIMEModeNoControl
.ErrorMessage = "" '取消错误提示
.ShowError = False '取消错误提示
End With
End If
d.RemoveAll:Set d = Nothing
End Sub追问

谢谢你的回答,我试了下在运行时出现了错误提示,是什么原因呢

追答

    首先检查下IE浏览器下关于ACTIVEX的设置,选择“Internet选项”-“本地Internet”-“自定义”-在“安全设置”下找到,ACTIVEX相关项并启用。

    第1步设置后若继续无效,则电脑可能缺少相应的dll文件。可以根据操作系统结合“ACTIVEX 429错误”在网上下载相应DLL或对DLL重新注册,最好让网管或懂电脑的帮助处理下,这个几句话解释不了。但千万不要去重装系统。

本回答被网友采纳
第2个回答  2021-07-14
自带没有这样的功能,写代码可以实现类似的功能
第3个回答  2021-07-14
这个要用代码和文本框辅助输入的啊!
第4个回答  2021-07-14
需要写VBA,文件给我来改,什么你问怎么给我,你那么聪明

Excel怎么实现下拉选项自动对应数据
1. 建立数据有效性:选择需要下拉选项的单元格,点击“数据”菜单栏中的“数据验证”,在设置选项卡中选择“序列”,并在来源中输入对应的菜单选项。2. 定义名称:选中第一行的数据,点击“定义名称”,在输入区域名称这里输入名称,例如“首行”,然后点击确定。这样,一级下拉菜单就设置好了。3. 自动...

如何在EXCEL单元格内实现输入数据下拉菜单自动匹配数据源中的内容?
数组公式,输入后先不要回车,按Ctrl+Shift+Enter结束计算,再向下填充。

如何在EXCEL单元格内实现输入数据下拉菜单自动匹配数据源中的内容
'按ALT+F11打开VBE编辑器,找到左侧VBAproject工程树下方的(sheet2)表;'双击该表,将代码粘贴进表右侧代码窗,保存。'文件另存为.XLSM或.xls格式 Dim d, iRow%, i Set d = CreateObject("scripting.dictionary")arr = Sheets("Sheet1").Range("D2").CurrentRegion '表1食物清单,表首在D2...

excel下拉菜单对应数据设置步骤
1、1点击打开一个EXCEL文件进入2进入到该EXCEL文件以后点击对应的单元格,然后选择数据,点击数据有效性的下拉箭头3在出现的选项中点击数据有效性4此时在出现的对话框中点击允许的下拉箭头,选择序列,再在来源中;步骤一先打开excel,找到想要设置的那一列步骤二依次选择顶部的数据数据有效性,步骤三在弹出...

如何在excel中设置下拉框选择输入内容
1. 打开Excel文件,选择需要设置下拉框的单元格。2. 在Excel顶部菜单栏中,找到并点击“数据”选项卡。3. 在“数据工具”组中,点击“数据验证”。4. 在弹出的对话框中,选择“允许”列表中的“序列”。5. 在“来源”栏中输入下...

怎么在excel里输入下拉选项的内容?
第一步:打开excel文档,选中需加入下拉选项的单元格。第二步:点击菜单中的“数据”->“数据有效性”->“数据有效性”。第三步:在弹出的页面中设置菜单下,点击“允许”下选择“序列”按钮。第四步:在来源中输入单元格中需设置的下拉选项,用英文的逗号“,”隔开,然后点击确定按钮。即可得到我们...

如何在excel2010中实现数据选择后单元格数值变化的下拉菜单功能?
在弹出的对话框中,选择“允许”下的“序列”,然后在“来源”区域,输入你想要的下拉菜单内容,例如,从Sheet2的A1至A3单元格选择数据(如图例2所示)。设置完毕后,点击“确定”,下拉菜单的准备工作就完成了。此时,点击对应的单元格,你会看到一个带有下拉箭头的菜单(如图例3)。要实现动态效果,...

怎么让excel下拉选项自动填充内容
1. 打开Excel表格。2. 选中需要设置下拉列表的单元格。3. 转到“数据”选项卡。4. 在数据菜单中点击“插入下拉列表”。5. 在弹出的下拉列表中添加所需的内容,例如输入“一年1班”。6. 如有需要,可继续添加其他选项。7. 点击“确定”完成设置。8. 选中设置了下拉列表的单元格,旁边会出现一个...

Excel中自适应下拉菜单的设置方法
这个公式的整体作用就是在A列数据源中提取出了以C2单元格当中字符开始的所有项目。以这个提取出来的区域作为数据有效性序列的引用源,就可以形成一个可以动态变化、自动适应单元格输入内容的下拉菜单。步骤3:选中【数据有效性】的【出错警告】选项卡,取消勾选【输入无效数据时显示出错警告】选项。这个操作...

在Excel中制作能自动选择的填充的下拉菜单
在Excel里,利用数据有效性与offset、match和countif等函数配合,可以制作出根据输入字符生成可选范围的自适应下拉菜单。利用Excel“数据有效性”当中的“序列”功能,在单元格内创建了一个下拉菜单,在进行输入时可以在下拉菜单中选择项目。这样的下拉菜单可以提高他输入时的准确性和便利性。但是,由于项目...

相似回答