2012-01-24 23 views
1

我有一些代码可以基于第一个标准自动筛选工作表,然后在没有条件返回的情况下自动筛选工作表。该条件语句是我需要帮助,它不断示数即使数据在第二行的第一个单元格(我显然不希望包括标题):AutoFilter - 找出第二行可见单元是否为空

With ActiveSheet 
    .AutoFilterMode = False 
    With .Range("A1:F1") 
     .AutoFilter Field:=1, Criteria1:="FirstTest" 

     'See if first cell in second row is blank 
     If (.Offset(2,1).SpecialCells(xlCellTypeVisible).Value = "") Then 

      'if blank, change criteria 
      .AutoFilter Field:=1, Criteria1:="SecondTest" 
     End If 

    End With 
End With 

我知道你可以使用VBA.Array的多个条件,但这变得更加复杂,我现在只需要现在如何引用第二行中的可见数据。

提前谢谢任何帮助。

回答

3

试试这个:

With ActiveSheet 
    .AutoFilterMode = False 
    With .Range("A1:F1") 
     .AutoFilter Field:=1, Criteria1:="FirstTest" 

     'See if first cell in second row is blank 
     If (.Parent.AutoFilter.Range.SpecialCells(xlCellTypeVisible).Count < 2) Then 

      'if blank, change criteria 
      .AutoFilter Field:=1, Criteria1:="SecondTest" 
     End If 

    End With 
End With 
+0

对不起,我跳枪,这是工作没有错误,但不准确。 我在屏幕上有10行(1是标题),它返回126.如果我过滤到3可见,它返回18.任何想法如何这甚至可能? –

+0

哦!它正在计算细胞,而不是行。雅克泽。感谢队友,你的解决方案绝对正确,我稍微更新它来计算行数。 –

+0

.Rows.Count有时会返回一些奇怪的结果,但为了解决这个问题,我只是将单元格数除以我的列数: rowCount = .Parent.AutoFilter.Range.SpecialCells(xlCellTypeVisible).Count/6 –