AutoFilterの設定

example(VBA)

Sub Main()
  Sheet1.Range("A1:C23").AutoFilter
  If Not Sheet1.AutoFilter Is Nothing Then
      Sheet1.Range("A1").AutoFilter
  End If
End Sub

フィルターをかけたい範囲を指定して、AutoFilterメゾットを実行するだけでフィルターの設定が出来る。AutoFilterの範囲内の適当なセルでもう一度AutoFilterメゾットを実行すれば、フィルターが解除される。


表示されているセルの取得

example(VBA)

Sub Main()
  Dim d As Range
  If Not Sheet1.AutoFilter Is Nothing Then
      Sheet1.Range("A1").AutoFilter
  End If
  Sheet1.Range("A1:C23").AutoFilter Field:=1, Criteria1:=">12"
  With Sheet1.AutoFilter.Range
  For Each d In .Cells.SpecialCells(xlCellTypeVisible)
    Debug.Print d.Value
  Next
  
  For Each d In .Columns(1).Cells.SpecialCells(xlCellTypeVisible)
    Debug.Print d.Value
  Next
  End With
End Sub

SpecialCells(xlCellTypeVisible)で表示されているセルを取得できる。 単純に取得するだけだと、ループの回数も増えて大変なので、Columns(列番号)で列を絞ってあげることも出来る。