相关疑难解决方法(0)

过滤数据的行数

我正在使用下面的代码来获取VBA中已过滤数据行的计数,但在获取计数时,它会显示运行时错误:

"所需对象".

有些人可以告诉我需要哪些更改?

Set rnData = .UsedRange

With rnData
    .AutoFilter Field:=327, Criteria1:=Mid(provarr(q), 1, 2)
    .Select
    .AutoFilter Field:=328, Criteria1:=Mid(provarr(q), 3, 7)
    .Select
    .AutoFilter Field:=330, Criteria1:=Mid(provarr(q), 10, 2)
    .Select
    .AutoFilter Field:=331, Criteria1:=Mid(provarr(q), 12, 2)
    .Select

     Rowz = .AutoFilter.Range.SpecialCells(xlCellTypeVisible).Rows.count

     ....
End With
Run Code Online (Sandbox Code Playgroud)

excel vba

16
推荐指数
2
解决办法
13万
查看次数

自动筛选-使用SpecialCells

背景:

我已经申请了很多次AutoFilter,但从未真正问过自己为什么有时会如此运作。有时,处理过滤后的数据的结果可能会造成混乱,尤其是在SpecialCells发挥作用时。

让我详细说明以下情形:


测试数据:

| Header1 | Header2 |
|---------|---------|
| 50      |         |
| 10      |         |
| 30      |         |
| 40      |         |
| 20      |         |
Run Code Online (Sandbox Code Playgroud)

代码1-普通AutoFilter

With Sheets("Sheet1").Range("A1:B6")
    .AutoFilter 1, ">50"
        .Columns(2).Value = "Check"
    .AutoFilter
End With
Run Code Online (Sandbox Code Playgroud)

这将起作用(即使不使用SpecialCells(12)),但也会填充B1

在此处输入图片说明 在此处输入图片说明


代码2-使用.Offset

为了防止上述行为,我们可以这样实现Offset

With Sheets("Sheet1").Range("A1:B6")
    .AutoFilter 1, ">50"
        .Columns(2).Offset(1).Value = "Check"
    .AutoFilter
End With
Run Code Online (Sandbox Code Playgroud)

但是,这现在将填充我们的数据cell下方的行B7

在此处输入图片说明 在此处输入图片说明


代码3-使用.Resize

为了防止.Offset填充,B7 …

excel vba autofilter

5
推荐指数
2
解决办法
423
查看次数

标签 统计

excel ×2

vba ×2

autofilter ×1