Excel:用vba高级筛选做超级查询器
来源:网络收集 点击: 时间:2024-03-06先来看一下数据源和设置吧!


执行筛选按钮指定了宏(右键,指定宏,选对相应的名称就行)
来看下这一行代码能有多强大

接下来请看测试动画吧

动画片看了,代码也这么少,应该能学会吧,还是先来个解释吧。
Range.AdvancedFilter(Action AsXlFilterAction, , , )这是高级筛选的语法
Range是要使用高级筛选的数据区域我用的是Sheet1.Range(A:G) 翻译成白话就是筛选序时薄这张工作表 的a:g列里的数据
Action:是指筛选结果显示方式 我使用的是xlFilterCopy表示 将结果复制出来
CriteriaRange;是筛选条件区域 我使用的是Range(k1:k2)
CopyToRange:是把结果复制到那里,我用的是Range(A3:G3)
Unique:是否筛选不重复记录,这里我没做设置,意思是提取所有记录
好啦,大致意思理解了,那再来详细说一下里面的“坑”吧。

第一坑:条件区域
条件K2单元格不使用公式的话,k1单元格字段名必须要指定,使用了公式就不能指定了。
来,从动画片里看区别吧。

第二坑:结果区域
结果区域中字段名必须与数据源中字段名一致,字段顺序可与数据源中不一致。
也就是说,你可以只要其中几个字段,代码中结果区域大小也要做相应的调整哟。
接着看一下这动画片吧:
结果区域中字段名不存在会报错的

怎么样,用vba来筛选数据香不香,就这么一行代码就能实现这么666的功能。
有vba相助,使用高级筛选的话,它的功能可以强大到让你无法相像
比如我想看一级科目是现金或者是包含存款二字的信息,只需要做简单的修改就可以了。
接着看动画片

看到这里,有没有在想,如果增加了条件,能不修改代码直接就能用吗?
这想法对vba来说也不是事儿啊,不过今天就不讲这个了,还是来讲一下条件规则吧。
高级筛选中 同一列里的条件是 或(或者)(or函数功能)动画片03已经演示了,同一行里的条件是 且(并且)(and函数功能)
再来看个同一行的效果吧。
这的需求是 一级科目是 现金 并且借方金额大于0给我筛选出来

个人建议
整体操作流程如下。

版权声明:
1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。
2、本站仅提供信息发布平台,不承担相关法律责任。
3、若侵犯您的版权或隐私,请联系本站管理员删除。
4、文章链接:http://www.1haoku.cn/art_264294.html