我想过滤Excel工作表中的特定列,然后选择它的范围,直到最后一次使用的行。
获取特定列我正在使用
ActiveSheet.Range("$A$1:$D30").AutoFilter Field:=3 , Criteria1:= "1"
找到我正在使用的最后一行
Cells(ActiveSheet.Rows.Count,1).End(xlUp).Row
我无法将两者结合在一起。如果我同时运行这两个命令,我将得到整个结果而不是过滤结果。
我知道这可能很简单,但我无法做到。有人可以帮我这么做吗?
我的要求是应该过滤第一列,然后选择直到最后一个未使用行的范围。这样我就可以使用选择来做一些命令。
答案 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