Excel教程

Excel函数
Excel技巧

【EXCEL教程】用vba高级筛选做超级查询器

当前位置:网站首页 > Excel教程

【EXCEL教程】用vba高级筛选做超级查询器

* 来源: 【office教程学习】 * 作者: 【EXCEL教程】 * 发表时间: 2020-06-11 15:49:05 * 浏览: 1618

小伙伴们还记得上次的财务人员必会之凭证查询】吗,设置简单使用方便,真是个一会就能学会的神技啊。


今天我们就来用被大家遗忘了的高级筛选做个更强大的筛选出来


高级筛选之所以被遗忘,是因为用起来实在太不方便了,可是用到vba里的话,那简直就是初学者的福音啊。


(使用wps的小伙伴就当看戏吧,因为你的wps可能根本无法使用vba,即使能使用,也有可能不能正常运行,wps遇到的问题我是不解答的哟。)


百闻不如一见,就先来看一下数据源和设置吧!

图01


图02


执行筛选按钮指定了宏(右键,指定宏,选对相应的名称就行)


来看下这一行代码能有多强大

图03


接下来请看测试动画吧,



动画片看了,代码也这么少,应该能学会吧,还是先来个解释吧。

Range.AdvancedFilter(Action As XlFilterAction, [CriteriaRange], [CopyToRange], [Unique])    这是高级筛选的语法


Range 是要使用高级筛选的数据区域 我用的是 Sheet1.Range("A:G")      翻译成白话就是筛选 序时薄 这张工作表 的 a:g 列里的数据

Action: 是指筛选结果显示方式 我使用的是 xlFilterCopy 表示 将结果复制出来


CriteriaRange; 是筛选条件区域 我使用的是 Range("k1:k2")


CopyToRange:是把结果复制到那里,我用的是 Range("A3:G3")


Unique:是否筛选不重复记录,这里我没做设置,意思是提取所有记录



好啦,大致意思理解了,那再来详细说一下里面的“坑”吧。


第一坑:条件区域

件K2单元格不使用公式的话,k1单元格字段名必须要指定,使用了公式就不能指定了。

来,从动画里看区别




雨夜:咳咳!!这需求难道不能用 ?建* 嘛?要写那么长的公式,真是逗比!!


当然,这个例子?建* 会更省事些,如果建是在第8个字符呢?难道你加8个问号嘛?


在用例子用来说明它特征的时候,请不要去考虑最优步骤!(只怪这数据源不好)


接下来看第二坑:结果区域

结果区域中字段名必须与数据源中字段名一致,字段顺序可与数据源中不一致。

也就是说,你可以只要其中几个字段,代码中结果区域大小也要做相应的调整哟。


接着看一下这动画片吧:

结果区域中字段名不存在会报错的


怎么样,vba来筛选数据香不香,就这么一行代码就能实现这么666的功能


vba相助,使用高级筛选的话,它的功能可以强大到让你无法相像


比如我想看一级科目 现金 或者是包含 存款 二字的信息,只需要做简单的修改就可以了


接着看动画片04

看到这里,有没有在想,如果增加了条件,能不修改代码直接就能用吗?


这想法对vba来说也不是事儿啊,不过今天就不讲这个了,还是来讲一下条件规则吧。


高级筛选中 同一列里的条件是 或(或者) (or 函数功能)动画片03已经演示了,同一行里的条件是 且(并且) (and函数功能)


再来看个同一行的效果吧。


的需求是 一级科目是 现金 并且 借方金额 大于 0 给我筛选出来


怎么样,用vba来做的查询是不是很方便呢?赶紧动手练习吧!!