2009年07月21日
エクセルマクロ(VBA):オートフィルター可視セルの操作
前回から、データを抽出するマクロについて書いていますが、
今回は、オートフィルターで抽出したデータを、
1件目から順番に参照していくマクロを考えたいと思います。
オートフィルターで画面上に抽出されたデータは、マクロ側
から見れば、単純に1行目、2行目とは認識できないようです。
あくまでも、行番号で参照するようです。
その抽出されたデータの行番号を取得する必要があります。
そこで、前回も説明した可視セルを対象とする便利な命令があります。
細かい説明は省きます・・というか、よくわかりません。
こんな命令があったぐらいでいいと思います。
それでは、
オートフィルターで、「沖縄県」の方を抽出して、
年齢が30歳未満の方の対象者欄(F列)へ
〇印を編集する、マクロを作ってみます。
Sub Macro1()
Worksheets("Sheet1").Select
Range("A1").Select
Selection.AutoFilter
Selection.AutoFilter Field:=3, Criteria1:="沖縄県"
For Each c In Worksheets("Sheet1").Columns(1).SpecialCells(xlCellTypeVisible)
If c = "" Then
Exit Sub
End If
If Range("e" & c.Row) < 30 Then
Range("f" & c.Row) = "〇"
End If
Next c
End Sub
結果。
こんな感じでしょうか。
これができると、オ-トフィルターで抽出したデータを
別シートへコピーして、1行目から順序よく参照していく
処理は省けるかもしれませんね。
今回は、オートフィルターで抽出したデータを、
1件目から順番に参照していくマクロを考えたいと思います。
オートフィルターで画面上に抽出されたデータは、マクロ側
から見れば、単純に1行目、2行目とは認識できないようです。
あくまでも、行番号で参照するようです。
その抽出されたデータの行番号を取得する必要があります。
そこで、前回も説明した可視セルを対象とする便利な命令があります。
細かい説明は省きます・・というか、よくわかりません。
こんな命令があったぐらいでいいと思います。
それでは、
オートフィルターで、「沖縄県」の方を抽出して、
年齢が30歳未満の方の対象者欄(F列)へ
〇印を編集する、マクロを作ってみます。
Sub Macro1()
Worksheets("Sheet1").Select
Range("A1").Select
Selection.AutoFilter
Selection.AutoFilter Field:=3, Criteria1:="沖縄県"
For Each c In Worksheets("Sheet1").Columns(1).SpecialCells(xlCellTypeVisible)
If c = "" Then
Exit Sub
End If
If Range("e" & c.Row) < 30 Then
Range("f" & c.Row) = "〇"
End If
Next c
End Sub
結果。
こんな感じでしょうか。
これができると、オ-トフィルターで抽出したデータを
別シートへコピーして、1行目から順序よく参照していく
処理は省けるかもしれませんね。
Posted by ミール at 10:54│Comments(0)
│VBA