VBA实现Excel模块筛选高级应用场景!
做过项目管理或者产品管理的小伙伴或多或少都会对Excel比较依赖,那么你了解过什么是VBA吗?
复杂场景下对Excel的高级应用可能需要借助VBA代码才能实现。有些小伙伴可能了解VBA,有些可能还没接触过。今天我给大家讲一个复杂场景下通过VBA实现Excel模块筛选的高级应用。
这里我们先通过图片和文字描述一下需要实现的一个需求场景:
首先有一个Excel,其中有两个Sheet,Sheet1是所有模块的汇总表,Sheet2是通过Sheet1整理出来所有模块的事件处理。
要求点击Sheet2中模块列中某一项,可以动态跳转到Sheet1中且需要实现对Sheet1进行对应模块项的筛选。
附带Sheet1如图:
附带Sheet2如图:
点击Sheet2中模块列的某一项,例如‘A1模块’,需要动态跳转到Sheet1中且需要实现对Sheet1进行‘A1模块’的筛选。
跳转Sheet1且展示的效果:
就是这样的一个需求场景。我这里采用VBA代码实现,如下。
' Sheet2点击事件
' 可以同时为对应的Sheet2做多个点击事件
' PS:SelectionChange、Activate、Change、BeforeDelete、BeforeDoubleClick事件等
' Author: 小辉哥 2019-09-01 pm 17:25'********************************全局变量声明BEGIN********************************'声明变量接收合并单元格Adress
Dim tempAddressValue As String'声明变量接收合并单元格Replace后Adress
Dim tempAddressReplaceValue As String'声明变量接收合并单元格Replace+Split后Adress
Dim tempAddressSplitValue As String'声明变量接收类型合并的单元格的Value
Dim moreTypeValue As String'声明变量接收类型非合并的单元格Value
Dim singleTypeValue As String'声明变量接收moreTypeValue匹配后的值
Dim matchMoreTypeValue As String'声明变量接收singleTypeValue匹配后的值
Dim matchSingleTypeValue As String'********************************全局变量声明END********************************'说明:Worksheet SelectionChange点击事件
'作用: Sheet2点击对应的所属模块, 自动让sheet1的用例汇总表格案子对应的所属模块筛选显示
'备注:该触发选择的做法是采用包含的策略, 后期需求变动可以任意调整
Private Sub Worksheet_SelectionChange(ByVal Target As Range)'每次进入SelectionChange点击事件,初始化全局变量tempAddressValue = ""tempAddressReplaceValue = ""tempAddressSplitValue = ""moreTypeValue = ""singleTypeValue = ""matchSingleTypeValue = ""matchMoreTypeValue = ""'区分是否是合并单元格,不然获取Target.Value 会报错If Target.MergeCells = True Then'合并单元格处理方式'MsgBox Target.Address'格式$I$13:$I$14tempAddressValue = Target.AddresstempAddressReplaceValue = Replace(tempAddressValue, "$", "")tempAddressSplitValue = Split(tempAddressReplaceValue, ":")(0)'得到合并单元格左上角第一列的值即为合并单元格的值moreTypeValue = Range(tempAddressSplitValue).Value'条件逻辑判断,对用例汇总sheet筛选(目前针对"A4模块"合并单元格的逻辑处理)If moreTypeValue = "A4模块" Then'代码中用变量通配代替减少代码工作量matchMoreTypeValue = "=*" + moreTypeValue + "*"'用例汇总sheet选中,创建自动过滤Sheets("汇总").Select'Selection.AutoFilterActiveSheet.ListObjects("表1").Range.AutoFilter Field:=3, Criteria1:= _matchMoreTypeValue, Operator:=xlAndElse'暂时不做处理代码启用后显示所有table内容,根据自己业务决定'ActiveSheet.ListObjects("表1").Range.AutoFilter Field:=3, Operator:=xlAndEnd IfElse'非合并单元格处理方式'MsgBox Target.Address 输出对应的地址'MsgBox Target.Value 输出对应非组合单元格的值'变量赋值singleTypeValue = Target.Value'条件逻辑判断,对用例汇总sheet筛选If singleTypeValue = "A1模块" Or singleTypeValue = "A2模块" Or singleTypeValue = "A3模块" Or singleTypeValue = "A5模块" Or singleTypeValue = "A6模块" Or singleTypeValue = "A7模块" Or singleTypeValue = "A8模块" Or singleTypeValue = "B1模块" Or singleTypeValue = "B2模块" Or singleTypeValue = "B3模块" Or singleTypeValue = "C1模块" Or singleTypeValue = "C2模块" Or singleTypeValue = "C3模块" Then'代码中用变量通配代替减少代码工作量matchSingleTypeValue = "=*" + singleTypeValue + "*"'用例汇总sheet选中,创建自动过滤Sheets("汇总").Select'Selection.AutoFilterActiveSheet.ListObjects("表1").Range.AutoFilter Field:=3, Criteria1:= _matchSingleTypeValue, Operator:=xlAndElse'暂时不做处理代码启用后显示所有table内容,根据自己业务决定'ActiveSheet.ListObjects("表1").Range.AutoFilter Field:=3, Operator:=xlAndEnd IfEnd IfEnd Sub
特别提示:
含有VBA代码的Excel,打开时候是需要开启‘宏’。有些VBA代码不同Excel版本略有差异。当然上面的VBA代码还有待很多优化的部分,考虑到大家对VBA了解程度不同,我这里就很简单的实现了。
以上代码仅供参考,如有不当之处,欢迎指出!!!
更多干货,欢迎大家关注和联系我。期待和大家一起更好的交流、探讨技术!!!
VBA实现Excel模块筛选高级应用场景!相关推荐
- VBA小代码-语句-使用VBA取消Excel的筛选状态
ActiveSheet.AutoFilterMode = False
- Excel总VBA相关类模块
VBA操作Excel类模块的综合运用: Public 条件 Private rngs Private n Dim cc Property Set 单元格(rng As Range) If rng &g ...
- excel中的高级筛选
excel中除了有一个是自动筛选的功能之外,还有一个比较强大的功能是高级筛选,使用高级筛选可以从原来的表格中筛选出满足条件的信息,下面是简单的应用(数据是在百度的相关视频中找到的):分别通过三个问题来 ...
- excel自动筛选_在Excel自动筛选器中隐藏箭头
excel自动筛选 When you turn on the filter in an Excel worksheet list, or if you create a named Excel tab ...
- 【VBA】Excel根据指定字段自动分页sheet功能的实现
Excel根据指定字段自动分页sheet功能的实现 1.背景 2.演示过程 3.vb代码实现 4.总结 1.背景 业务方提了个需求,一个excel的明细宽表,需要根据指定的字段(字段不确定),将宽表分 ...
- excel自动筛选_具有范围内条件的Excel自动筛选
excel自动筛选 In Excel 2003, and earlier versions, an AutoFilter allows only two criteria for each colum ...
- 用计算机把不及格筛出,excel怎么筛选任意科目不及格的人
这个是要看具体表格结构的 如果楼主的表格内,所有学生的分数在一列 那么可以排序,升序排的话,分数低的外表上面 另外可以使用筛选功能,自定义,小于相应分数即可 如果学生成绩有多科目,需要将不及格都统计出 ...
- 中国版Access上市,用户600万,告别VBA,Excel用户也能搭建软件
中国版Access它来啦! 微软的Access在数据库管理软件上一直是独具一格的存在,在世界范围内拥有数百万的用户. 但近日,一款全新的中国版Access开始崭露头角,它以更友好的操作界面.更强大的功 ...
- VBA:Excel选中单元格后,相同值高亮显示
VBA:Excel选中单元格后,相同值高亮显示 场景 代码释义 Excel中实际执行效果 场景 在Excel数据核对中,要检查同样的数据在表格里是否重复出现,可以利用重复值筛选的方式,但是重复值筛选这 ...
- ChatGPT与VBA:Excel操作一键搞定的全能助手
摘要 Excel是一款广泛应用于数据处理和分析的工具,而VBA(Visual Basic for Applications)是一种用于编程自动化Excel操作的语言.然而,对于非专业的Excel用户来 ...
最新文章
- IDC:全球大数据和业务分析收入预计到2019年突破1870亿美元
- linux trap命令
- 【SeeMusic】下载安装并注册 SeeMusic 软件
- 【FluidSynth】FluidSynth 简介 ( 相关资源链接 | 简介 | 特征 )
- python requests cookie_Python requests模块cookie实例解析
- B-Suffix Array
- Linux的目录结构与磁盘分区
- 一主多备几影响 oracle,1个主库配置多个备库的问题
- GreenDao清空数据库的方法
- 边写SQL边学数据库入门实验2(持续更新)
- 医疗时钟系统的设计方案
- The kernel appears to have died. It will restart automatically.
- mysql nemesis后缀,YOUR FILES ARE ENCRYPTED
- JS时间处理插件MomentJS
- ios android 联机游戏平台,iOS 和安卓游戏终于互通了
- 麻省理工学院从算法层面揭示男女配对的自然法则(扎心真相!!!)
- HQChart使用教程31- 走势图异动数据设置
- socket连接方法,socket使用方法。js连接socket
- 用photoshop更换照片背景步骤
- 福昕阅读器手型光标中出现向下的箭头,无法选中文本问题
热门文章
- 遗传算法--旅行商问题(TSP问题)-Matlab
- springboot房屋租赁管理系统
- Java身份证号码识别系统(开源项目)
- java htmlelement_Java Element.outerHtml方法代码示例
- matlab2019b的gui界面在哪_MATLAB(3)——GUI界面设计入门
- 纬地道路纵断面设计教程_纬地道路辅助设计系统教程 (纵断面设计).doc
- 基于CAS4.0.0的单点登陆
- 微信扫一扫扫描二维码带参
- Python函数调用
- 编织机上下料西门子S71200PLC和KTP700触摸屏程序博途