前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >VBA:利用高级筛选自动筛选列表

VBA:利用高级筛选自动筛选列表

作者头像
fanjy
发布2022-11-16 13:01:51
2.1K0
发布2022-11-16 13:01:51
举报
文章被收录于专栏:完美Excel

标签:VBA,高级筛选

这是thesmallman.com上的一个示例,利用VBA、高级筛选和公式进行数据筛选。

这个示例的目的是根据数据验证下拉列表选择要在列表中筛选的数据,并显示相应的数据。

首先要做的是设置数据验证。这里有一些车辆碰撞信息,并建立了3个列表:星期几、碰撞类型和道路使用者。这三个条件将用于筛选列表数据。

示例的一个优点是能够对下拉列表中选择的项目进行筛选,或合并所选项目(所有项目以及单个项目)。例如,可能希望看到周日发生的事故,但也可能希望看到全天发生涉及多辆车的事故。

使用公式可以帮助实现,因为在通配符的帮助下,可以创建基于选择筛选所有内容的功能。

例如,公式:

=IF(K2=”All Days”,"*",K2)

如果单元格K2中选择“All Days”,则显示通配符*。

对于碰撞类型和道路使用者,按照相同的步骤。那么,现在有了显示每个条件的一个或全部的公式。

此时,如果从单元格K2到K4的任何单元格发生变化,则需要运行相应的过程,因此需要调用工作表的Change事件。

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, [K2:K4]) Is Nothing Then

AdvFilt '当上面的单元格内容变化时运行

End If

End Sub

如果单元格区域K2:K4中的任何单元发生变化,将触发上面的过程。下面是高级筛选的VBA代码。

Sub AdvFilt()

Dim rng As Range

Set rng = Range("A9", Range("T" & Rows.Count).End(xlUp))

rng.AdvancedFilter 1, [C5:E6], 0

End Sub

上文中的公式在单元格区域C5:E6中,这些单元格为高级筛选提供了条件。该过程可以快速有效地获取选择的数据。如下图1所示。

图1

有兴趣的朋友可以到原网站下载示例工作簿,也可以到知识星球App完美Excel社群下载示例工作簿。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-08-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档