Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 5802|回复: 4

请问如何将筛选条件定义为变量?

[复制链接]
发表于 2019-7-9 17:49 | 显示全部楼层 |阅读模式
2学分
Sub 循环复制1()
    Dim X As Integer
    X = 11
    For X = 11 To 60 Step 1

    Sheet6.Range("A2:S1701").AutoFilter Field:=1, Criteria1:=Array("X"), Operator:=xlFilterValues
    Sheet6.Range("A2:S1701").AutoFilter Field:=14, Criteria1:=Array("青苗"), Operator:=xlFilterValues
    Sheet6.Range("J1716").Copy
    Sheet9.Range("F21").PasteSpecial xlPasteValues
    Sheet6.Range("A2:S1701").AutoFilter Field:=1, Criteria1:=Array("X"), Operator:=xlFilterValues
    Sheet6.Range("A2:S1701").AutoFilter Field:=14, Criteria1:=Array("地上附着物"), Operator:=xlFilterValues
    Sheet6.Range("J1716").Copy
    Sheet9.Range("G21").PasteSpecial xlPasteValues

    Next X

End Sub

    以上代码筛选条件定义的变量无法生效(我表格中的第一列数据为1-66的整数,想将66行数据都筛选一次并复制筛选后的数据到其它表格,但是以上代码直接将筛选条件变为了“X"而导致没有数据···

最佳答案

查看完整内容

Array("X")改成X,不要加引号。
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2019-7-9 17:49 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2019-7-9 17:51 | 显示全部楼层
刚接触VBA没几天,在利用录制宏尝试做宏,所以可能有些很傻的错误,还请各位见笑之余多多帮忙,谢谢了。
回复

使用道具 举报

发表于 2019-7-10 08:40 | 显示全部楼层
如果是学vba代码,不建议用这种方式获取数据。
系统的筛选功能是为了方便手工操作,具有数据筛选和交互显示的复杂功能。但其实多数情况下,我们只是需要简单的筛选过滤数据,并不需要交互显示。这种交互显示会增加事情的复杂度,而且对于大数据的速度是明显的拖累。
代码筛选的思路很简单,通常是利用循环+条件判断,读取你需要的数据,并存放在合适的地方即可。
下面是这种结构的大致形式:
for i=1 to [a10000].end(3).row     '从第一行循环到最后一行,如果第一行是标题,改成i=2
    if 判断条件写在这里  then
     ' 对符合条件的数据进行处理
     '可以把数据写入数组或其他表格的自定义区域
   endif
next i
可以看出,单纯的数据筛选其实很简单,for循环+if条件构成的组合就能全部找出来。
系统筛选因为还附带有其他的复杂功能,反而把问题搞复杂了,对学习代码不利。
回复

使用道具 举报

 楼主| 发表于 2019-7-10 08:55 | 显示全部楼层
hfwufanhf2006 发表于 2019-7-10 08:40
如果是学vba代码,不建议用这种方式获取数据。
系统的筛选功能是为了方便手工操作,具有数据筛选和交互显 ...

感谢你的建言,我会注意的{:9_303:}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-26 08:16 , Processed in 0.131645 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表