做过项目管理或者产品管理的小伙伴或多或少都会对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模块筛选高级应用场景!相关推荐

  1. VBA小代码-语句-使用VBA取消Excel的筛选状态

    ActiveSheet.AutoFilterMode = False

  2. Excel总VBA相关类模块

    VBA操作Excel类模块的综合运用: Public 条件 Private rngs Private n Dim cc Property Set 单元格(rng As Range) If rng &g ...

  3. excel中的高级筛选

    excel中除了有一个是自动筛选的功能之外,还有一个比较强大的功能是高级筛选,使用高级筛选可以从原来的表格中筛选出满足条件的信息,下面是简单的应用(数据是在百度的相关视频中找到的):分别通过三个问题来 ...

  4. excel自动筛选_在Excel自动筛选器中隐藏箭头

    excel自动筛选 When you turn on the filter in an Excel worksheet list, or if you create a named Excel tab ...

  5. 【VBA】Excel根据指定字段自动分页sheet功能的实现

    Excel根据指定字段自动分页sheet功能的实现 1.背景 2.演示过程 3.vb代码实现 4.总结 1.背景 业务方提了个需求,一个excel的明细宽表,需要根据指定的字段(字段不确定),将宽表分 ...

  6. excel自动筛选_具有范围内条件的Excel自动筛选

    excel自动筛选 In Excel 2003, and earlier versions, an AutoFilter allows only two criteria for each colum ...

  7. 用计算机把不及格筛出,excel怎么筛选任意科目不及格的人

    这个是要看具体表格结构的 如果楼主的表格内,所有学生的分数在一列 那么可以排序,升序排的话,分数低的外表上面 另外可以使用筛选功能,自定义,小于相应分数即可 如果学生成绩有多科目,需要将不及格都统计出 ...

  8. 中国版Access上市,用户600万,告别VBA,Excel用户也能搭建软件

    中国版Access它来啦! 微软的Access在数据库管理软件上一直是独具一格的存在,在世界范围内拥有数百万的用户. 但近日,一款全新的中国版Access开始崭露头角,它以更友好的操作界面.更强大的功 ...

  9. VBA:Excel选中单元格后,相同值高亮显示

    VBA:Excel选中单元格后,相同值高亮显示 场景 代码释义 Excel中实际执行效果 场景 在Excel数据核对中,要检查同样的数据在表格里是否重复出现,可以利用重复值筛选的方式,但是重复值筛选这 ...

  10. ChatGPT与VBA:Excel操作一键搞定的全能助手

    摘要 Excel是一款广泛应用于数据处理和分析的工具,而VBA(Visual Basic for Applications)是一种用于编程自动化Excel操作的语言.然而,对于非专业的Excel用户来 ...

最新文章

  1. IDC:全球大数据和业务分析收入预计到2019年突破1870亿美元
  2. linux trap命令
  3. 【SeeMusic】下载安装并注册 SeeMusic 软件
  4. 【FluidSynth】FluidSynth 简介 ( 相关资源链接 | 简介 | 特征 )
  5. python requests cookie_Python requests模块cookie实例解析
  6. B-Suffix Array
  7. Linux的目录结构与磁盘分区
  8. 一主多备几影响 oracle,1个主库配置多个备库的问题
  9. GreenDao清空数据库的方法
  10. 边写SQL边学数据库入门实验2(持续更新)
  11. 医疗时钟系统的设计方案
  12. The kernel appears to have died. It will restart automatically.
  13. mysql nemesis后缀,YOUR FILES ARE ENCRYPTED
  14. JS时间处理插件MomentJS
  15. ios android 联机游戏平台,iOS 和安卓游戏终于互通了
  16. 麻省理工学院从算法层面揭示男女配对的自然法则(扎心真相!!!)
  17. HQChart使用教程31- 走势图异动数据设置
  18. socket连接方法,socket使用方法。js连接socket
  19. 用photoshop更换照片背景步骤
  20. 福昕阅读器手型光标中出现向下的箭头,无法选中文本问题

热门文章

  1. 遗传算法--旅行商问题(TSP问题)-Matlab
  2. springboot房屋租赁管理系统
  3. Java身份证号码识别系统(开源项目)
  4. java htmlelement_Java Element.outerHtml方法代码示例
  5. matlab2019b的gui界面在哪_MATLAB(3)——GUI界面设计入门
  6. 纬地道路纵断面设计教程_纬地道路辅助设计系统教程 (纵断面设计).doc
  7. 基于CAS4.0.0的单点登陆
  8. 微信扫一扫扫描二维码带参
  9. Python函数调用
  10. 编织机上下料西门子S71200PLC和KTP700触摸屏程序博途