Excel精英培训网

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

[已解决]怎样用VBA数组筛选

[复制链接]
发表于 2009-9-14 20:47 | 显示全部楼层 |阅读模式

FlkTotsH.rar (6.09 KB, 下载次数: 4)

怎样用数组筛选

怎样用数组筛选
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2009-9-14 20:51 | 显示全部楼层
回复

使用道具 举报

发表于 2009-9-14 20:52 | 显示全部楼层

EIx6sfxQ.rar (3.98 KB, 下载次数: 6)

回复

使用道具 举报

发表于 2009-9-14 20:52 | 显示全部楼层

=INDEX(Sheet1!A:A,SMALL(IF(Sheet1!$C$2:$C$27>59,ROW(Sheet1!$C$2:$C$27),65536),ROW(A1)))&""

数组

[em01][em01][em01]
回复

使用道具 举报

发表于 2009-9-14 20:53 | 显示全部楼层

[em04]不会是VBA中的数组吧?
回复

使用道具 举报

发表于 2009-9-14 20:53 | 显示全部楼层

貌似楼主是想用VBA
回复

使用道具 举报

 楼主| 发表于 2009-9-14 21:03 | 显示全部楼层

谢谢各位!

我纠正过来了[em04]

[此贴子已经被作者于2009-9-14 21:04:45编辑过]
回复

使用道具 举报

发表于 2009-9-14 21:59 | 显示全部楼层

Sub MyFilter()
    Dim ArrYS, ArrJG, i&, j&, K&
    ArrYS = Sheet1.Range("A1:D" & Sheet1.Range("A65536").End(xlUp).Row)
    ReDim ArrJG(1 To 4, 0 To 0)
    For j = 1 To 4
        ArrJG(j, 0) = ArrYS(1, j)
    Next j
    K = 0
    For i = 2 To UBound(ArrYS, 1)
        If ArrYS(i, 3) >= 60 Then
            K = K + 1
            ReDim Preserve ArrJG(1 To 4, 0 To K)
            For j = 1 To 4
                ArrJG(j, K) = ArrYS(i, j)
            Next j
        End If
    Next i
    Sheet2.Range("A1").Resize(UBound(ArrJG, 2) + 1, 4) = Application.Transpose(ArrJG)
End Sub
[此贴子已经被作者于2009-9-14 21:59:42编辑过]
回复

使用道具 举报

发表于 2009-9-14 23:30 | 显示全部楼层    本楼为最佳答案   

Sub x()
Dim a, arr, i%, j%
a = Sheet1.UsedRange
ReDim arr(1 To UBound(a), 1 To 4)
For i = 1 To UBound(a)
If a(i, 3) >= 60 Or AscW(a(i, 3)) > 57 Then
m = m + 1
For j = 1 To 4
arr(m, j) = a(i, j)
Next
End If
Next
Sheet2.[a1].Resize(m, 4) = arr
End Sub
回复

使用道具 举报

发表于 2009-9-15 05:15 | 显示全部楼层

学习

[em02][em02]
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-3 04:14 , Processed in 0.307792 second(s), 6 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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