Excel如何制作动态模糊匹配的下拉菜单?

2023-10-30

之前给大家分享了如何使用函数制作模糊匹配的下拉菜单,但函数那家伙的特点是小巧灵,数据量稍大,效率就比较差了。众所周知,在Excel里,高效率解决复杂问题,还是得靠又傻又愣的VBA。今天就再给大家分享一下,如何使用VBA制作更好用的动态模糊匹配下拉菜单。

完成后的效果演示如下:

如上图所示,点击A列单元格,Excel会自动跳出一个文本输入框和一个列表框。当在文本框中输入数据时,列表框的数据会随之动态更新。

1 丨 制作步骤

选中目标工作表,在【开发工具】→【插入】→【ActiveX控件】,先后插入一个文本框和一个列表框。控件的大小和存放的位置都随意,反正这事你说了也不算,后面代码会自己做调整。

需要注意的是,如果你不会调整VBA代码,那么此处文本框的名字必须为TextBox1,列表框的名字必须为ListBox1——正常而言,这俩名字也都是系统默认的。

保持目标工作表选中状态不变,按快捷键<Alt+F11>打开VBE编辑器,将以下代码粘贴到当前工作表的代码窗口。

代码解析见注释

代码看不全可以左右拖动..▼

'设置文本框和列表框的大小及位置Private Sub Worksheet_SelectionChange(ByVal Target As Range)    Dim b As Boolean, arr    If Target.Column <> 1 Or Target.Row < 2 Then b = True '如果用户选择的单元格不是第1列或者属于第1行    If Target.Columns.Count > 1 Or Target.Rows.Count > 1 Then b = True '如果用户选择的单元格数量大于1    If b Then        ListBox1.Visible = False '不可见        TextBox1.Visible = False '不可见        Exit Sub '退出程序    End If    With Worksheets("示例") '下拉列表来源内容的所在工作表        arr = .Range("d2:d" & .Cells(Rows.Count, "d").End(3).Row) '数据源    End With    With TextBox1        .Value = ""        .Visible = True '可见        .Top = Target.Top '文本框顶部位置        .Left = Target.Left '文本框左侧位置        .Height = Target.Height '文本框高度        .Width = Target.Width '文本框宽度        .Activate '激活文本框    End With    With ListBox1        .Visible = True '可        .Top = Target.Offset(0, 1).Top        .Left = Target.Offset(0, 1).Left        .Height = Target.Height * 5        .Width = Target.Width        .List = arr '写入数据源数据    End WithEnd Sub
'根据文本框的输入值动态匹配数据Private Sub TextBox1_Change()    Dim arr, brr, i&, k&    With Worksheets("示例") '下拉列表来源内容的所在工作表        arr = .Range("d2:d" & .Cells(Rows.Count, "d").End(3).Row) '数据源    End With    If TextBox1.Text = "" Then ListBox1.List = arr: Exit Sub    ReDim brr(1 To UBound(arr))    For i = 1 To UBound(arr)        If InStr(1, arr(i, 1), TextBox1.Text, vbTextCompare) Then  '忽略字母大小写            k = k + 1            brr(k) = arr(i, 1)        End If    Next    ListBox1.List = brr '写入匹配后的数据End Sub
'如果双击列表框的内容则写入活动单元格Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)    ActiveCell = ListBox1.Text    With ListBox1        .Clear '清空列表框        .Visible = False    End With    With TextBox1        .Value = ""        .Visible = False    End WithEnd Sub

最后关闭VBE,将当前工作簿另存为xlsm文件即可。

……

2 丨 其它

如果你不懂VBA,按以上步骤操作后,需要将代码中的"示例"替换为下拉列表数据源所在的工作表名,将"d2:d" & .Cells(Rows.Count, "d")部分,替换为实际数据源所在列。

With Worksheets("示例") '下拉列表来源内容的所在工作表    arr = .Range("d2:d" & .Cells(Rows.Count, "d").End(3).Row) '数据源End With
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Excel如何制作动态模糊匹配的下拉菜单? 的相关文章

  • C51实现流水灯

    文章目录 一 实验要求 二 实验代码和原理图 1 代码 2 原理图 总结 一 实验要求 1 先八盏灯从左至右依次点亮 同一时刻仅有一盏灯处于被点亮状态 每盏灯亮0 5s 然后八盏灯从右至左依次点亮 同一时刻仅有一盏灯处于被点亮状态 每盏灯亮
  • hdu 1074 Doing Homework

    Problem acm hdu edu cn showproblem php pid 1074 题意 n 份作业 分别给出名字 完成所需时间 cost 最迟上交时间 deadline 作业每迟交一天扣一分 问最少的扣分数 Analysis

随机推荐

  • 关于.sln和.suo文件

    sln 和 suo都是是解决方案文件 sln Visual Studio Solution 它通过为环境提供对项目 项目项和解决方案项在磁盘上位置的引用 可将它们组织到解决方案中 包含了较为通用的信息 包括解决方案所包含项目的列表 解决方案
  • TCL foreach的用法

    总结放于前 foreach var list body是foreach的的常见用法 foreach为关键字 var为形参 list为数据容器 数组等 body为函数块 程序每次在程序执行时从list中取到值并赋给形参var 函数块利用var
  • sql外连接内连接

    内连接 两表的交集 符合要求的数据列出来 外连接 左外连接就是查询 join左边表中的所有数据 并且把join右边表中对应的数据查询出来 主表的数据去跟从表一一比较 有就全部列出来 没有就也要列出一条 主表数据全要 他的从表数据变成Null
  • springboot集成Redis

    springboot集成Redis 1 windows平台安装Redis 2 引入依赖 3 修改配置文件 4 启动类添加注解 5 指定缓存哪个方法 6 配置Redis的超时时间 小BUG 测试 对于项目中一些访问量较大的接口 配置上Redi
  • python连接mysql数据库报错pymysql.err.OperationalError

    一 报错信息 pymysql err OperationalError 1045 Access denied for user root localhost using password YES Traceback most recent
  • docker基础:docker stats监控容器资源消耗

    docker stats docker stats 命令用来显示容器使用的系统资源 默认情况下 stats 命令会每隔 1 秒钟刷新一次输出的内容直到你按下 ctrl c 下面是输出的主要内容 CONTAINER 以短格式显示容器的 ID
  • 基于反事实因果推断的度小满额度模型

    本文约4400字 建议阅读9分钟 本文从三个角度与你分享基于反事实因果推断的度小满额度模型 1 因果推断的研究范式 1 相关性与因果性 2 三大基本假设 2 因果推断的框架演进 1 从随机数据到观测数据 2 反事实表示学习 3 反事实额度模
  • 四川百幕晟科技有限公司:抖音没有视频怎么开店铺?

    抖音是中国最受欢迎的短视频平台之一 吸引了数亿用户 很多电商卖家希望利用抖音平台开展业务 但他们可能没有视频资源 幸运的是 抖音还提供了非视频商店功能 允许卖家开设自己的商店并在抖音上推广产品 本文将详细介绍在抖音上开店的步骤 并探讨如何在
  • 破解windows明文密码

    之前看了法国人写的一个软件 mimikatz 可以直接获取windows下的明文密码 简直是丧心病狂 作者已经开源 大家可以去谷歌一下 用SVN下载了源码 是vs2010的工程 然后按照下面命令开始看代码 privilege debug i
  • SQLAlchemy映射已有数据表

    方法一 手动创建数据表模型类进行映射 映射的表必须要有主键 配置数据库连接参数 class Config SQLALCHEMY DATABASE URI mysql pymysql root 123456 localhost 3306 te
  • mysql5.7 免安装版的配置过程

    1 去官网下载mysql 5 7 2 解压压缩包 首先给压缩包重命名一下 修改为你自己想要的 将解压目录下默认文件 my default ini 拷贝一份 改名 my ini 3 修改一下my ini 文件里的内容 client port
  • 基于卷积神经网络结合注意力机制长短记忆网络CNN-LSTM-Attention实现风电功率多输入单输出回归预测附matlab代码

    作者简介 热爱科研的Matlab仿真开发者 修心和技术同步精进 matlab项目合作可私信 个人主页 Matlab科研工作室 个人信条 格物致知 更多Matlab仿真内容点击 智能优化算法 神经网络预测 雷达通信 无线传感器 电力系统 信号
  • Kafka安装及测试

    系统环境 Linux Ubuntu 16 04 jdk 7u75 linux x64 相关知识 Kafka是由LinkedIn开发的一个分布式的消息系统 使用Scala编写 它因可以水平扩展和高吞吐率而被广泛使用 目前越来越多的开源分布式处
  • WPF编程,通过Path类型制作沿路径运动的动画另一种方法。

    上一篇文章给了一个这方面的例子 那个文章里是通过后台按钮事件进行动画的开始 停止 继续等 这里给出的是通过前台XAML来实现 1 前台 定义路径 定义运动的主体 这里是一圆
  • IEEE 754 round-to-nearest-even

    IEEE 754 二进制的向偶舍入 舍入的值保证最靠近原浮点数值 如果舍入为中间值 即舍还是入距离相等 那么按其最末尾一位是奇数 则入 如果为偶数 则舍 下面例子说明 xxx yyyyy10000 x为实数任意值 y为任意值 最末尾y为需要
  • 用C++实现简单的小游戏

    采用面向对象的编程思想 在头文件中引入acllic图形库 实现c 控制图片以及生成可视化窗口 所需工具 acllib图形库下载地址 acl图形库下载地址 win32位项目的创建 通过visual studio创建win32项目 三张图片 t
  • python 数据分析--数据处理工具Pandas(2)

    数据处理模块 Pandas 4 Pandas处理字符串和日期数据 5 Pandas 数据清洗 5 1 重复观测处理 5 2 缺失值处理 5 2 1 删除法 5 2 2 替换法 5 3 异常值处理 6 获取数据子集 7 透视表 合并与连接 分
  • Transformer中的position encoding(位置编码一)

    本文主要讲解Transformer 中的 position encoding 在当今CV的目标检测最前沿 都离不开position encoding 在DETR VIT MAE框架中应用广泛 下面谈谈我的理解 一般position enco
  • Activity 的启动分析 ( 9.0 )

    Activity 的启动系统已经做了很多的封装 使得我们在开发的时候不用去关注底层的东西 需要一句代码就可以搞定拉起一个Activity Intent intent new Intent this TestActivity class st
  • Excel如何制作动态模糊匹配的下拉菜单?

    之前给大家分享了如何使用函数制作模糊匹配的下拉菜单 但函数那家伙的特点是小巧灵 数据量稍大 效率就比较差了 众所周知 在Excel里 高效率解决复杂问题 还是得靠又傻又愣的VBA 今天就再给大家分享一下 如何使用VBA制作更好用的动态模糊匹