过滤循环Excel宏

时间:2018-03-09 10:11:32

标签: excel vba excel-vba automation

我正在尝试使用AutoFilter并使用来自不同工作表的值来获取条件,但是它只获取循环中最后一条记录的计数值。

For iLoop = 1 To 10

    Selection.AutoFilter Field:=8, Criteria1:=Worksheets("Sheet3").Cells(iLoop, 1).Value

    Dim LR As Long
    LR = Range("A" & Rows.Count).End(xlUp).Row
    Range("A2:AD" & LR).SpecialCells(xlCellTypeVisible).Select

    ActiveSheet.Range("$A$1:$AD$146").AutoFilter Field:=5, Criteria1:=RGB(255, _
        0, 0), Operator:=xlFilterCellColor

    cCnt = ActiveSheet.AutoFilter.Range.Columns(5).SpecialCells(xlCellTypeVisible) _
        .Cells.Count - 1

    ActiveSheet.ShowAllData
    Worksheets("Sheet3").Range("B2:B11").Value = cCnt

Next iLoop

1 个答案:

答案 0 :(得分:0)

看起来你的问题是:

Worksheets("Sheet3").Range("B2:B11").Value = cCnt

一遍又一遍地将cCnt中存储的(唯一)值分配给相同的范围。所以它在循环的每次迭代中得到(可能)不同的值,但是你只看到最后一个。

也许您打算做的事情是:

Worksheets("Sheet3").Range("B" & iloop + 1).Value = cCnt

因此,在循环的第一次迭代中(当iLoop=1时),它会将cCnt中的值分配给单元格B2。在iLoop=2时,它会将cCnt分配给B3等等......

更多信息: