1、先来看一下数据源和设置吧!
2、执行筛选按钮指定了宏(右键,指定宏,选对相应的名称就行)来看下这一行代码能有多强大
3、接下来请看测试动画吧
4、动画片看了,代码也这么少,应该能学会吧,还是先来个解释吧。Range.AdvancedFilter(Acti泠贾高框on AsXlFilterAction, [CriteriaRange], [CopyToRange], [Unique])这是高级筛选的语法Range是要使用高级筛选的数据区域我用的是Sheet1.Range("A:G") 翻译成白话就是筛选序时薄这张工作表 的a:g列里的数据Action:是指筛选结果显示方式 我使用的是xlFilterCopy表示 将结果复制出来CriteriaRange;是筛选条件区域 我使用的是Range("k1:k2")CopyToRange:是把结果复制到那里,我用的是Range("A3:G3")Unique:是否筛选不重复记录,这里我没做设置,意思是提取所有记录好啦,大致意思理解了,那再来详细说一下里面的“坑”吧。
5、第一坑:条件区域条件K2单元格不使用公式的话,k1单元格字段名必须要指定,使用了公式就不能指定了。来,从动画片里看区别吧。
6、第二坑:结果区域结果区域中字段名必须与数据源中字段名一致,字段顺序可与数据源中不一致。也就是说,你可以只要其中几个字段,代码中结果区域大小也要做相应的调整哟。接着看一下这动画片吧:结果区域中字段名不存在会报错的
7、怎么样,用vba来筛选数据香不香,就这么一行代码就能实现这么666的功能。有vba相助,使用高级筛选的话,它的功能可以强大到让你无法相像比如我想看一级科目是现金或者是包含存款二字的信息,只需要做简单的修改就可以了。接着看动画片
8、看到这里,有没有在想,如果增加了条件,能不修改代码直接就能用吗?这想法对vba来说也不是糙怍牢莱事儿啊,不过今天就不讲这个了,还是来讲一下条件规则吧。高级筛选中 同一列里的条件是 或(或者)(泠贾高框or函数功能)动画片03已经演示了,同一行里的条件是 且(并且)(and函数功能)再来看个同一行的效果吧。这的需求是 一级科目是 现金 并且借方金额大于0给我筛选出来
9、个人建议 整体操作流程如下。