过滤VBA后返回行号

时间:2017-08-18 14:48:01

标签: excel vba excel-vba

有什么办法可以在过滤后选择或返回第一个可见单元格的单元格地址?到目前为止我有这个,并且在过滤后选择了第一个可见单元格。

fileSheet.Name = "Test"

With fileSheet
    .Range("A2").Activate
    ActiveWindow.FreezePanes = True
    .Range("A2").AutoFilter field:=4, Criteria1:=">1"
    'select the first visible cell after column header
End With

我实际上有列标题。

4 个答案:

答案 0 :(得分:0)

dim firstCell as Range
set firstCell = fileSheet.usedRange.offset(1,0).SpecialCells(xlCellTypeVisible)(1)

UsedRange返回正在使用的工作表范围(好吧,有时太多但在这种情况下并不重要),offset(1, 0)向下移动一行,以便忽略标题行,SpecialCells(xlCellTypeVisible)获取所有可见单元格的列表,因此最后(1)返回第一个可见单元格。

答案 1 :(得分:0)

给定范围为A1,这将为您提供第一个可见单元格:

Range("A1").Offset(1, 0).SpecialCells(xlCellTypeVisible)(1).Row
  1. 偏移将跳过标题行
  2. SpecialCells会将控件移动到可见细胞。
  3. 从可见单元格中选择第一项。
  4. 查找行

答案 2 :(得分:0)

试试这个

lastrow=cells(rows.count,"A").end(xlup).row 
  For x=1 To lastrow 
    If cells(x,"A")=criteria1 Then 
       rowfound=x 
     endif 
   Next x 

在开始时调暗变量

答案 3 :(得分:0)

这是一个代码,如果您想在过滤器之后选择第一行,我已经尝试了

代码:

activesheet.AutoFilter.Range.offset(1).SpecialCells(xlCellTypeVisible).Cells(1, 2).select