VBA数组如何筛选

VBA数组如何筛选,第1张

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如何智能筛选等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9615122.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存