LoginSignup
18
23

More than 5 years have passed since last update.

意外と使えるExcelでオートフィルタで表示しているセルだけ取得するVBA

Last updated at Posted at 2016-04-27

オートフィルタ等で表示しているセルだけ取得し、
非表示セルの情報は無視するコードサンプルです。

オートフィルタを使った処理と組み合わせると、とても便利です。
例えば、欲しい情報だけフィルタリングし、その情報を取得するような処理です。

以下がコードサンプルです。

サンプルでは行番号を取得していますが、この要領で値を取得することもできます。

VBA

Sub Visible_Search()

'変数定義
Dim p As Long , n As Long            'カウンタ変数
Dim r As Range, rr As Range, rs As Range      'Visibleセルを取得する変数
p = 0
n = 2

'Range("A1", Range("A" & Rows.Count).End(xlUp)):A1~データのある最下行
'SpecialCells(xlCellTypeVisible):表示されているセルのみを対象とする
Set r = Range("A1", Range("A" & Rows.Count).End(xlUp)).SpecialCells(xlCellTypeVisible)
'r:A1~データの存在する最大行セルまでの範囲(表示されているセルのみ)
'rr:A1~データの存在する最大行セルまで、A1から1つずつ格納される
For Each rr In r
    'rsへ選択セルの値を格納
    For Each rs In rr.Areas
        '選択セルの行数を取得
        p = (rs.Row)
        'Visible行の行番号を出力
         Sheets(X).Cells(n, 1).Value = p
         n = n + 1
        End If
    Next
Next

End Sub
18
23
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
23