VBA实现Excel模块筛选高级应用场景!

VBA—EXCEL操作集合—03 通过简单的抽奖游戏,认识一些VBA的事件。 阅读详情

做过项目管理或者产品管理的小伙伴或多或少都会对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$14
        tempAddressValue = Target.Address
        tempAddressReplaceValue = Replace(tempAddressValue, "$", "")
        tempAddressSplitValue = Split(tempAddressReplaceValue, ":")(0)
        
        '得到合并单元格左上角第一列的值即为合并单元格的值
        moreTypeValue = Range(tempAddressSplitValue).Value
    
        '条件逻辑判断,对用例汇总sheet筛选(目前针对"A4模块"合并单元格的逻辑处理)
        If moreTypeValue = "A4模块" Then
             '代码中用变量通配代替减少代码工作量
             matchMoreTypeValue = "=*" + moreTypeValue + "*"
        
             '用例汇总sheet选中,创建自动过滤
             Sheets("汇总").Select
             'Selection.AutoFilter
             ActiveSheet.ListObjects("表1").Range.AutoFilter Field:=3, Criteria1:= _
             matchMoreTypeValue, Operator:=xlAnd
        
        Else
             '暂时不做处理代码启用后显示所有table内容,根据自己业务决定
             'ActiveSheet.ListObjects("表1").Range.AutoFilter Field:=3, Operator:=xlAnd
        End If
        
   Else
        '非合并单元格处理方式
        '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.AutoFilter
             ActiveSheet.ListObjects("表1").Range.AutoFilter Field:=3, Criteria1:= _
             matchSingleTypeValue, Operator:=xlAnd
        
        Else
             '暂时不做处理代码启用后显示所有table内容,根据自己业务决定
             'ActiveSheet.ListObjects("表1").Range.AutoFilter Field:=3, Operator:=xlAnd
        End If
    
    
   End If
   
   
End Sub


特别提示:

含有VBA代码的Excel,打开时候是需要开启‘宏’。有些VBA代码不同Excel版本略有差异。当然上面的VBA代码还有待很多优化的部分,考虑到大家对VBA了解程度不同,我这里就很简单的实现了。

以上代码仅供参考,如有不当之处,欢迎指出!!!

更多干货,欢迎大家关注和联系我。期待和大家一起更好的交流、探讨技术!!!

 

VBA代码实例---高级筛选 首先介绍Excel工作簿的内容进行说明:一个工作簿两个工作表,学生/高级筛选,七个字段; 实现功能:在高级筛选中, 做一个快速的条件筛选。 Option Explicit Sub 高级筛选() '判断高级筛选条件区域有多少行 Dim x As Integer x = Sheets("高级筛选").Range("A1").CurrentRegion.Rows. 阅读详情

相关推荐

Excel中VBA编程学习笔记(十二)--自动筛选

Range.AutoFIlter方法可以进行自动筛选,语法结构如下: Range.AutoFilter(Field,Criteria1Operator,Criteria2,VIsibleDropDown); 参数说明: Field可选,筛按33选的字段的整型偏移量,;例如筛选A列的字段则取值1,筛选D列的字段则取值4; Criteria1,可选,字符串类型。筛选条件可以使用“=”,“&lt...

数据之道 1万+

VBA for Excel 筛选功能 autofilter

range().autofilter filed:=N,criteria 1:=***, operator:=xland,criteria2:=*** N 不是代表第N列,是range里的N列; range()区域可以不是第一行,也可以是整个表格 若想在第N列筛选基础上再加入M列的筛选,直接再写一行M列筛选 range().autofilter filed:=M,criteria:=*** ...

emdtoy的博客 2690

Excel VBA 多条件筛选及汇总统计

在日常工作中,面对Excel表格数据,为了分类进行统计,通过对表格数据筛选获取分类条目,再按条目实行汇总统计。要完成上面的工作,有人工操作和开发程序两种方法,本文通过一个实例,详细介绍这两种方法。

jfmyes的博客 2万+

vba得到经过自动筛选过的行数

利用excel的“录制宏”的功能,通过vba得到经过自动筛选过的行数

oldguncm的专栏 1万+

Excel VBA高级筛选实战:一键自动化复杂数据筛选

在数据处理领域,自动化是提升效率的核心驱动力。其原理是通过编程语言将重复性手动操作转化为可重复执行的指令序列,从而解放人力、减少错误。VBA(Visual Basic for Applications)作为内置于Office套件中的编程语言,是实现办公自动化的关键技术,它允许用户定制和扩展Excel等软件的功能。结合Excel内置的“高级筛选”功能,VBA能够将原本需要多步手动设置的条件筛选过程自动化,实现一键执行。这项技术的价值在于将复杂的多条件数据筛选任务标准化、流程化,尤其适用于需要频繁进行数据提取、

weixin_30536861的博客 268

Excel VBA高级筛选自动化:从原理到实战的完整指南

在数据处理领域,自动化筛选是提升效率的核心技术之一。其原理在于通过程序化逻辑替代手动操作,实现对海量数据的精准提取。VBA作为Office生态中的自动化利器,能够将复杂的数据筛选逻辑固化为可重复执行的脚本,极大提升了数据处理的可靠性和效率。这一技术尤其适用于需要频繁执行多条件、跨列组合筛选的场景,例如销售数据分析、库存管理和财务报告生成。通过掌握VBA调用AdvancedFilter方法,用户可以轻松实现动态条件构建、结果自动复制等高级功能,解决手动操作中的重复劳动问题。本文聚焦Excel高级筛选的自动化实

weixin_30846347的博客 320

vba筛选出满足条件的数据_VBA专题02:使用代码进行复制操作

学习Excel技术,关注微信公众号:excelperfect在Excel工作表中,复制粘贴是最常用的操作之一。在已经输入的数据中,找到并复制想要的数据,然后粘贴到指定的地方,是再自然不过的操作了。或者从工作表的一个单元格区域复制到同一工作表中另外的单元格区域,或者从工作表的一个单元格区域复制到另一工作表中的单元格区域,甚至从工作表的一个单元格区域复制到不同工作簿中的工作表单元格区域。那么...

weixin_39853210的博客 1万+

Excel VBA多条件查询及数据筛选详解

在Excel中,筛选是一种非常实用的功能,它允许用户快速地从大量数据中筛选出符合特定条件的行。以下是执行基本筛选操作的步骤:选择数据表中任意单元格。转至“数据”选项卡,在“排序与筛选”组中点击“筛选”按钮。这将在数据表的列标题上添加下拉箭头。点击所需列标题的下拉箭头,选择“数字筛选”或“文本筛选”(根据该列的数据类型)。在弹出的对话框中选择适当的筛选条件,例如“等于”、“大于”、“包含”等。输入筛选参数,确认筛选条件后点击确定。

weixin_35903223的博客 2313

excel vba筛选

excel 中有两个筛选 1、筛选,vba 代码为 set rg=range("a1:a100") rg.AutoFilter Field:=1, Criteria1:="内容" rg 为筛选区域, Criteria1为筛选的值,比如在A1列内筛选内容为北京区的 ,则 Criteria1="北京区" 2、高级筛选  Rg.AdvancedFilter Action:=xlFilte

muyuruo 1万+

在UI界面中播放视频_unity基础开发教程

之前我写过一篇在场景中播放视频的文章,但是在开发中有时候也会在UI的界面中播放视频,这期我们做一下在UI的界面中播放视频。操作步骤比较简单,到这里就完成了,如果有问题的话可以在评论区留言,下期见,拜拜!

为者常成,行者常至! 2006

从原理到实现:在《图灵完备》中构建一个144*256像素、1536时钟刻/帧的视频播放器

本文详细解析了在《图灵完备》游戏中构建144*256像素、1536时钟刻/帧视频播放器的全过程。从图灵完备原理出发,通过分层架构设计、视频数据预处理和关键电路实现,展示了如何用基础电子元件模拟现代显卡功能。重点介绍了像素坐标定位系统和颜色数据处理流水线的优化方案,为游戏内复杂电子系统设计提供实践指导。

weixin_42520025的博客 445

vba autofilter 筛选

国外网站介绍VBA autofilter 很不错 https://trumpexcel.com/vba-autofilter/#Example-Multiple-Criteria-With-Different-Columns 说实话国外的网站对于VBA的资料相对于国内来说内容更丰富更具有实用性。当然是Bing搜索引擎与百度引擎相比较。 1 显示所有数据,不隐藏数据 (仅在Autofilte...

weixin_38640809的博客 5999

IEEE Transactions on Industrial Informatics(TII) 投稿须知- Initial Submission

请注意,您可以在作者中心查看稿件的当前状态,如:在EIC办公室、分配给AE、AE邀请审稿人、AE指定审稿人、正在审稿、等待AE决定、等待EIC决定。为了确保公正的评审过程,我们要求在稿件中没有任何作者的身份(不包括作者的姓名、传记、隶属关系、求职信、签署的版权表格、识别脚注、致谢等)。如果你的手稿有很大一部分已经在会议上发表过,论文必须隐藏所有作者的身份,这样会议论文就可以被引用,就好像它是由不同的作者写的一样。请注意,通常你的技术成就是根据被引用的次数来评估的,而不是根据发表的论文数量。

loinleeai的博客 4426

Excel VBA AutoFilter 多字段筛选_用vba实现任意列包含字符的高级筛选

这段代码和Case 1最大不同就是筛选范围是动态的,即A列和C列包含数据的区域,需要注意的是,range(“A1”,[C1].end(xldown))来表示活动区域时,如果运行的工作表不止一个,需要写成range(“A1”,sheets(“Data”).[C1].end(xldown)).假定所有字段分别为“啤酒”,“面包”,“香肠”,“牛排”,“蛋糕”,“猪排”,需要筛选除“猪排”外所有字段,与此类似,如果反选有“猪排”和“蛋糕”两个字段,Criteria2参数加上即可,如下述。理想很丰满,现实很骨感。

m0_60567881的博客 1469

汇川Easy 301 和MCGS进行Modbus RTU通讯(485)浮点数读取和写入

4DF0001对应寄存器D0,4DF0003对应寄存器D2。注意:要选com2口,com1口是232通讯。

qq_61916672的博客 2900

【nerfStudio】1-在windows上安装nerfStudio

安装Git。安装Visual Studio 2022。在安装CUDA之前必须完成此步骤。必须在“桌面开发与C++”工作流程(在BuildTools版本中称为“C++构建工具”)中包含所需的组件。Nerfstudio要求。我们建议使用conda来管理依赖关系。在继续之前,请确保安装了Conda。 依赖关系 PyTorch 请注意,如果安装了低于2.0.1的PyTorch版本,则应卸载先前版本的pytorch、functorch和tiny-cuda-nn。 基于CUDA 11.8的Torch 2.0.1 安装基

dlhlSC的博客 1692

使用Excel高级筛选快速找到不同工作表中相同的值

例如,我们创建两个工作表"Sheet1"和"Sheet2",每个工作表中都有一个名为"ID"的列和一个名为"Name"的列。首先,我们需要打开"数据"选项卡,并点击"高级"按钮,打开高级筛选对话框。以上代码将在"Sheet3"工作表中找到"Sheet1"工作表和"Sheet2"工作表中相同的值,并复制到"Sheet3"工作表中。点击"确定"按钮,Excel将根据筛选条件,在指定位置复制出不同工作表中相同的值。在Excel菜单栏中点击"数据",然后点击"高级"按钮,打开高级筛选对话框。

理论都是虚的,代码才是王道。 6675

YOLOv8剪枝 l1剪枝测试精度仅掉0.8个点,速度提高10.7fps!

文章摘要: 本文提出了一种基于组归一化的重要性评分方法GroupNormImportance,用于神经网络剪枝中的通道选择。该方法支持多种变体,包括标准L1范数、组L1范数和BN缩放因子等计算方式。核心实现包括三个关键部分:1)支持p范数计算(默认为L2);2)提供7种组重要性归约方法(如均值、最大值等);3)提供8种归一化方案(包括标准化、高斯化、LAMP等)。该方法输入一个剪枝组,输出各通道的重要性分数,通过依赖图可实现结构化剪枝。实验对比图展示了剪枝前后的效果差异,验证了该方法的有效性。

FJN110的博客 397

excel匹配_python中实现excel的高级筛选

一Excel里的高级筛选功能,着实令人惊叹,VBA里实现起来也相对简单,就是手动操作的代码化,设置好三项参数,便可以随取随用,效果稳准快。 ...

weixin_39520393的博客 791

RT-DETR改进策略【Neck】| GFPN 超越BiFPN 通过跳层连接和跨尺度连接改进RT-DETR颈部网络

本文记录的是利用颈部结构优化RT-DETR的目标检测网络模型。利用改进后的颈部网络,通过跳层连接,避免了在进行反向传播时的梯度消失问题,并且引入跨尺度连接,可以实现不同级别和层次的特征充分融合,获取足够的高层语义信息和低层空间信息交换,从而在大规模变化场景下提高检测性能。GIRAFFEDET: A HEAVY-NECK PARADIGM FOR OBJECT DETECTION-GFPN包含了上述的跳层连接(dense-link和log2nlog _{2} nlog2​n-link)以及跨尺度连接(Quee

Limiiiing的博客 2228

工业级实战:C#实现欧姆龙PLC FINS-TCP通信(协议解析+完整源码+避坑指南)

// FINS主命令码+子命令码枚举(工业级常用指令)ReadData = 0x0101, // 读取数据WriteData = 0x0102, // 写入数据ReadPlcStatus = 0x0601, // 读取PLC状态ResetPlc = 0x0605 // 复位PLC(慎用)/// 欧姆龙PLC数据区枚举(工业常用)CIO = 0x30, // CIO区(核心数据区)WR = 0x31, // 工作区HR = 0x32, // 保持区。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 656

Excel VBA 多重筛选

Excel VBA 多重筛选 Sub FilterOnValues() 'PURPOSE: Filter on specific values Dim rng As Range Set rng = ActiveSheet.Range("B7:D18") FilterField = WorksheetFunction.Match("Country", rng.Rows(1), 0) 'Tur...

weixin_44303384的博客 3229

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

VBA经典应用69例:基于文本条件的一般筛选及条件OR筛选

VBA经典应用69例》(版权10178981),是我推出的第九套教程,教程是专门针对初级、中级学员在学习VBA过程中可能遇到的案例展开,这套教程案例众多,紧贴“实战”,并做“战术总结”,以便大家能很好的应用。教程的目的是要求大家。本套教程共三册六十九个专题,今日内容:VBA经典应用69例:基于文本条件的一般筛选及条件OR筛选。

VBA语言専攻 3209

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

excel高级筛选怎么用_python中实现excel的高级筛选

一Excel里的高级筛选功能,着实令人惊叹,VBA里实现起来也相对简单,就是手动操作的代码化,设置好三项参数,便可以随取随用,效果稳准快。 ...

weixin_39860064的博客 256

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

python 按列名称筛选_python中实现excel的高级筛选

一Excel里的高级筛选功能,着实令人惊叹,VBA里实现起来也相对简单,就是手动操作的代码化,设置好三项参数,便可以随取随用,效果稳准快。 ...

weixin_42100032的博客 3971
上一篇: Thread线程有哪几种状态,这篇文章带你深入了解!
下一篇: MongoDB mapReduce填补自带group的限制问题
饶艳辉
博客等级 码龄15年 20粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值