
Filter函数实现数组筛选: 数组的筛选就是根据一定的条件,从数组中筛选符合条件的值,组成一个新的数组,实现数组筛选的VBA函数是: Filter函数 用法:Filter(数组, 筛选的字符, 是否包含) Sub DD()arr1 = VBAFilter(arr, "A", True) '筛选所有含A的数值组成一个新数组 arr2 = VBAFilter(arr, "A", False) '筛选所有不含A的数值组成一个新数组 MsgBox Join(arr2, ",") '查看筛选的结果End Sub遗憾的是函数只能进行模糊筛选,不能精确匹配。
当筛选结果为空时,出现了Range("a65536")End(xlUp)Row=3,小于了你的首行值4,所以你再使用Range("a4:a"
&
Range("a65536")End(xlUp)Row)也就是Range("a4:a3")就出错了。
如果修改的话你最好在使用这个range时先判断Range("a65536")End(xlUp)Row是否大于等于首行值4,只有大于等于才能用,如果小于4就说明筛选结果为空。
修改代码如下:
Dim
i
As
Integer
i
=
Range("a65536")End(xlUp)Row
If
i
<
4
Then
MsgBox
"已筛选出来的记录行数一共0行"
Else
For
Each
cel
In
Range("a4:a"
&
i)SpecialCells(xlCellTypeVisible)
MsgBox
"已筛选出来的记录行数:"
&
celRow
Next
MsgBox
"已筛选出来的记录行数一共"
&
Range("a4:a"
&
i)SpecialCells(xlCellTypeVisible)Count
&
"行"
End
If
包含数上色,可以直接用循环就可以。对符合条件的range对象设置单元格格式。
统计符合多条件的单元格数量,也可以使用循环。判断每一行的对应几列的几个单元格是否符合条件,符合条件就用数字自加即可。如果需要筛选出来,则需要用单元格并集intersect函数,并集之后提取出来就行。也可以一边循环一遍复制出来。只是这样比较慢一点而已。
因为写代码耗时耗力,我这里只给提供一点思路。需要写代码的话可以私信我。如果还有其他问题,可以即系追问或者私信。
三次循环嵌套
可以筛选出所有的可能
Sub match()
Dim a, b
a = Range("A65536")End(xlUp)Row
b = 1
For i = 1 To a
For j = 1 To a
For k = 1 To a
If Cells(i, 1)Value + Cells(j, 2)Value = Cells(k, 3)Value Then
Cells(b, 5)Value = Cells(i, 1)Value
Cells(b, 6)Value = Cells(j, 2)Value
Cells(b, 7)Value = Cells(k, 3)Value
b = b + 1
End If
Next
Next
Next
End Sub
以上就是关于VBA数组如何筛选全部的内容,包括:VBA数组如何筛选、vba 筛选后计算行数、excel用VBA如何智能筛选等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)