Excel:用vba高级筛选做超级查询器

2025-10-28 20:31:15

1、先来看一下数据源和设置吧!

Excel:用vba高级筛选做超级查询器

Excel:用vba高级筛选做超级查询器

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

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

Excel:用vba高级筛选做超级查询器

3、接下来请看测试动画吧

Excel:用vba高级筛选做超级查询器

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

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:是否筛选不重复记录,这里我没做设置,意思是提取所有记录

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

Excel:用vba高级筛选做超级查询器

5、第一坑:条件区域

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

来,从动画片里看区别吧。

Excel:用vba高级筛选做超级查询器

6、第二坑:结果区域

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

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

接着看一下这动画片吧:

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

Excel:用vba高级筛选做超级查询器

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

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

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

接着看动画片

Excel:用vba高级筛选做超级查询器

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

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

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

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

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

Excel:用vba高级筛选做超级查询器

9、个人建议

    整体操作流程如下。

Excel:用vba高级筛选做超级查询器

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢