1. 首页 > 常识

录制宏得代码--高级筛选 excel高级筛选宏录制

本文为大家介绍了 录制宏得代码--高级筛选 ,还有的小伙伴在问excel高级筛选宏录制,下面小编给大家细致的讲述一下。

本文主旨:通过录制宏,并修改宏代码,将平常需要重复的操作变成实用简单的“VBA"。即使不会VBA,也可以录制一个!

题目要求:根据条件将数据筛选至新的工作表,具体见附件。

具体操作见GIF图片。

操作注意的地方:

1、高级筛选操作必须是从工作表《高级筛选》发起的,即《高级筛选》工作表为当前的活动工作表。

2、条件的标题--”敏捷“,一定要在源数据中存在,而且一模一样,否则筛选木有结果。

3、停止录制宏后,按快捷键ALT F11打开VB编辑器查看代码。

也可以依次点击 开发工具--Visual Basic打开VB编辑器查看代码。

至此,宏的代码就出来了。

Sub 宏1()

Sheets("数据").Range("A1:E19").AdvancedFilter Action:=xlFilterCopy, _

CriteriaRange:=Range("高级筛选!Criteria"), CopyToRange:=Range("A5"), Unique:= _

False

End Sub

列表区域 对应代码 Sheets("数据").Range("A1:E19").AdvancedFilter Action:=xlFilterCopy

条件区域 对应代码 CriteriaRange:=Range("高级筛选!Criteria")

复制到(T) 对应代码 CopyToRange:=Range("A5")

选择不重复的记录 对应代码 Unique:= False

至于代码神马意思,不需要懂,只需要会修改就好了!

——————————————————————————————————————————————————

接下来就是对上面的代码作修改了。

达到的要求:能根据数据的动态变化而筛选相应的结果。

基本思路:设定动态的数据范围,也就是动态的列表区域,而不是每次都要修改”列表区域“

Sheets("数据").Range("A1:E19").AdvancedFilter Action:=xlFilterCopy

中的单元格范围A1:E19。

于是,我们默默地打开了百度,搜索:vba返回指定列的最后一个非空行的行号

长话短说了,这里直接给出答案(答案很多,这只说一个)

cells(row.count,1).end(xlup).row --返回A列最后一个非空行的行号。

1是列号,表示A列;换成2,表示B列;依次类推。

修改后的代码如下:

Sub 宏1()

"定义最后一行,变量为整型

Dim lastrow As Integer

"对最后一行进行赋值,等于数据工作表A列的最后非空行的行号

lastrow = Sheets("数据").Cells(Rows.Count, 1).End(xlUp).Row

"因为需要重复操作,数据时多时少,每次筛选前将原数据清空,这里指定清空一个足够大的单元格范围

Sheets("高级筛选").Range("a5:e50000").ClearContents

"然后就是执行动态的高级筛选工作了。

Sheets("数据").Range("A1:E" &lastrow).AdvancedFilter Action:=xlFilterCopy, _

CriteriaRange:=Range("高级筛选!a1:a2"), CopyToRange:=Range("A5"), Unique:=False

End Sub

最后在工作表《高级筛选》,插入按钮,指定对应的宏!

即使数据变化,筛选也能跟着变化。那么如果涉及多个条件的筛选,该如何办呢?

答案是:只需要修改条件区域就可以了。

Sub 宏1()

"定义最后一行,变量为整型

Dim lastrow As Integer

"对最后一行进行赋值,等于数据工作表A列的最后非空行的行号

lastrow = Sheets("数据").Cells(Rows.Count, 1).End(xlUp).Row

"因为需要重复操作,数据时多时少,每次筛选前将原数据清空,这里指定情况一个足够大的单元格范围

Sheets("高级筛选").Range("a5:e50000").ClearContents

Sheets("数据").Range("A1:E" & lastrow).AdvancedFilter Action:=xlFilterCopy, _

CriteriaRange:=Range("高级筛选!a1:e2"), CopyToRange:=Range("A5"), Unique:=False

End Sub

例子1:查询智力和力量都大于等于80的数据。运行上述宏后得出结果:

例子2:查询智力大于等于80 或 力量大于等于80的数据。

例子3:查询智力大于等于80 或 力量大于等于80的,且 合计 大于等于200的数据。

按着思路来,先筛选智力大于等于80的。在源数据筛选得出。

再筛选力量大于等于80的,在源数据筛选得出。然后将两个数据合起来,也就是例子2的结果。在例子2生成的数据里再筛选合计 大于等于200的数据。

在用“肉眼”观察后(数据少),我们发觉安祖拉和露娜合计只有199,是不符合条件的。

然后我们在条件区域单元格额e2,e3添加条件 >=200,运行代码得出结果。

 录制宏得代码--高级筛选  excel高级筛选宏录制

excel高级筛选宏录制

可尝试筛选完一个条件后,在“视图”菜单下的“自定义视图”中保留一份视图,需要的时候只需要调出来就可以了.

imax=range("i65536").end(xlup).rowpmax=range("p65536").end(xlup).rowRange("I1:O" & imax).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range _ ("P1:P" & pmax), CopyToRange:=Range("Q1"), Unique:=False

点击右下角就绪旁边那个图标开始录制宏 录制宏就是把你的操作大部分录下来 但是一些循环什么的操作是无法录制完成的,需要后期加工修改 但是你要录制简单的筛选删除还是没问题了 点击开始后,直接操作就可以了,操作完,再点击一下图标就 完成录制了 具体,可以百度 如何录制宏,进行简单点的学习!