この記事では、VBAマクロで可視セルのみ処理(繰り返し・コピー貼り付け・配列格納・削除・フィルタ)する方法について解説します。
特にポイントとしては、フィルタをかけた後の可視セルに対するコピー貼り付け、削除、配列格納の処理が重要です。
完全な初心者にもわかりやすいように、変数名を独特の表記で示していますので、実際にご利用の際には適切な英語の変数名に変更してください。
それでは詳しく見ていきましょう!
VBAマクロで可視セルのみコピー貼り付け処理を繰り返す方法
それではまず、可視セルのみのコピー貼り付け処理について解説していきます。この方法では、B列にフィルタをかけ、特定の条件(例えば「マウス」に該当するセル)を別シートにコピー貼り付けします。
Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。
Sub CopyVisibleCells()
Dim ws As Worksheet
Dim filterRange As Range
Dim copyRange As Range
Set ws = ThisWorkbook.Sheets("Sheet1")
ws.Range("B:B").AutoFilter Field:=1, Criteria1:="マウス"
Set filterRange = ws.Range("B1:B100").SpecialCells(xlCellTypeVisible)
Set copyRange = ThisWorkbook.Sheets("Sheet2").Range("A1")
filterRange.Copy Destination:=copyRange
End Sub
コードのAlt+F8を押し、マクロ選択画面でCopyVisibleCells関数を実行します。
このコードでは、シート1のB列をフィルタリングし、「マウス」に一致する可視セルをシート2にコピーします。
VBAマクロで可視セルのみの削除をする方法
続いては、可視セルのみの削除について解説していきます。
ここでは、C列にフィルタをかけ、特定の条件(例えば「ココア」に該当する)セルを含む行を削除します。
Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。
Sub DeleteVisibleRows()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
ws.Range("C:C").AutoFilter Field:=1, Criteria1:="ココア"
ws.AutoFilter.Range.Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete
End Sub
コードのAlt+F8を押し、マクロ選択画面でDeleteVisibleRows関数を実行します。
このコードでは、シート1のC列で「ココア」に一致する行を削除します。
VBAマクロで可視セルのみに繰り返し処理し配列に格納する方法
最後に、可視セルのみに繰り返し処理を行い、結果を配列に格納する方法を解説します。この処理は、データの分析や処理に非常に役立ちます。
Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。
Sub ProcessVisibleCells()
Dim ws As Worksheet
Dim dataArray() As Variant
Dim cell As Range
Dim i As Integer
i = 1
Set ws = ThisWorkbook.Sheets("Sheet1")
For Each cell In ws.Range("A1:A100").SpecialCells(xlCellTypeVisible)
ReDim Preserve dataArray(i)
dataArray(i) = cell.Value
i = i + 1
Next cell
End Sub
コードのAlt+F8を押し、マクロ選択画面でProcessVisibleCells関数を実行します。このコードでは、指定した範囲内の可視セルをループし、その値を配列に格納していきます。
まとめ VBAマクロで可視セルのみ処理(配列格納・削除・フィルタ)する方法
この記事では、ExcelのVBAマクロを用いて可視セルに対する異なる処理方法を学びました。これらの技術は、データの整理や分析に大変役立ちます。ご自身のニーズに合わせて、これらのコードを活用してください。