过滤列并选择上次使用的行

时间:2015-10-26 21:00:50

标签: excel vba excel-vba

我想过滤Excel工作表中的特定列,然后选择它的范围,直到最后一次使用的行。

获取特定列我正在使用

ActiveSheet.Range("$A$1:$D30").AutoFilter Field:=3 , Criteria1:= "1"

找到我正在使用的最后一行

Cells(ActiveSheet.Rows.Count,1).End(xlUp).Row

我无法将两者结合在一起。如果我同时运行这两个命令,我将得到整个结果而不是过滤结果。

我知道这可能很简单,但我无法做到。有人可以帮我这么做吗?

我的要求是应该过滤第一列,然后选择直到最后一个未使用行的范围。这样我就可以使用选择来做一些命令。

2 个答案:

答案 0 :(得分:1)

试试这个:

With Range("A1:D" & Range("a1048576").End(xlUp).Row)
    .AutoFilter Field:=3, Criteria1:="1"
    .Resize(, 1).Offset(1).SpecialCells(xlCellTypeVisible).Select
End With

答案 1 :(得分:0)

SpecialCells方法与xlCellTypeVisible参数一起使用。我还对工作表进行了限定,因为它比使用ActiveSheet更稳定(应该始终避免,除非绝对必要。)

Dim ws as Worksheet
Set ws = Sheets("mySheet") 'change to the sheet name you need

Dim lRow as Long
lRow = ws.Cells(ws.Rows.Count,1).End(xlUp).Row
ws.Range("$A$1:$D" & lRow).AutoFilter Field:=3 , Criteria1:= "1"

Dim rRng as Range, cel as Range
Set rRng = ws.Range("A2:A" & lRow).SpecialCells(xlCellTypeVisible) 'assumes header row in column 1

'Updated code based on your comments.
For each cel in rRng
   objRecipients.Add cel
Next

ws.AutoFilterMode = False