この記事では、VBAマクロでフィルタで空白以外・~以外を抽出・削除・コピー・貼り付けする方法【AutoFilter, Range, Delete】について解説していきます。
ポイントとしては
`AutoFilter`メソッドと
`Range`オブジェクト、
`Delete`メソッド
を使用することです。
下記の解説では完全な初心者でもわかりやすいように、変数名を少々変わった名称にしています。あなた自身がご活用の際には、これらを適切な(英語表記でしっくりくるものが一般的)ものに変更してご活用くださいね。
それでは詳しく見ていきましょう!
VBAマクロでフィルタで空白以外を抽出・コピー・貼り付けする方法
それではまず、フィルタを用いて空白以外のデータを抽出・コピー・貼り付けする方法について解説していきます。
Alt + F11にてVBE画面を開いて、以下のコードをコピペしましょう。
Sub NonBlankCopy()
Dim wsSource As Worksheet, wsDest As Worksheet
Set wsSource = ThisWorkbook.Sheets("Sheet1")
Set wsDest = ThisWorkbook.Sheets("Sheet2")
' B列が空白セル以外の場合にフィルタリング
wsSource.Rows(1).AutoFilter Field:=2, Criteria1:="<>"
' 抽出されたデータを別シートにコピー
Dim copyRange As Range
Set copyRange = wsSource.AutoFilter.Range
copyRange.Copy Destination:=wsDest.Range("A1")
' フィルタを解除
wsSource.AutoFilterMode = False
End Sub
コードのAlt+F8を押し、マクロ選択画面で`NonBlankCopy`関数を実行します。
このコードでは、シート1のB列で空白以外のセルをフィルタリングし、別のシートにコピーします。
具体的には`AutoFilter`メソッドを使用して条件に合う行を選び、`Range`オブジェクトで抽出された範囲をコピーし、目的のシートに貼り付けていますね。
最後にフィルタを解除し、元の状態に戻します。
VBAマクロでフィルタで~以外を削除したものを貼り付けする方法
続いては、フィルタを使って特定の条件に合わない(~以外の)データを削除し、残ったデータを別のシートに貼り付ける方法について解説します。
Alt + F11にてVBE画面を開いて、以下のコードをコピペしましょう。
Sub TonakaiDeleteCopy()
Dim wsSource As Worksheet, wsDest As Worksheet
Set wsSource = ThisWorkbook.Sheets("Sheet1")
Set wsDest = ThisWorkbook.Sheets("Sheet2")
' B列のトナカイ以外をフィルタリング
wsSource.Rows(1).AutoFilter Field:=2, Criteria1:="<>トナカイ"
' 可視セルを選択し、削除
wsSource.AutoFilter.Range.Offset(1, 0).SpecialCells(xlCellTypeVisible).Delete
' フィルタを解除
wsSource.AutoFilterMode = False
' 残ったデータを別シートにコピー
wsSource.Cells.Copy Destination:=wsDest.Range("A1")
End Sub
コードのAlt+F8を押し、マクロ選択画面で`TonakaiDeleteCopy`関数を実行します。
このコードでは、B列の文字列がトナカイ以外のデータをフィルタリング(オートフィルタにて)し、それらを削除します。
`SpecialCells`メソッドを使用して可視セル(フィルタによって表示されるセル)のみを選択し、削除します。
その後、フィルタを解除し、残ったデータを別のシートにコピーします。
まとめ VBAマクロでフィルタで空白以外や~以外を削除・コピー・貼り付けする方法【AutoFilter, Range, Delete】
この記事では、VBAマクロでフィルタで空白以外・~以外を抽出・削除・コピー・貼り付けする方法【AutoFilter, Range, Delete】について確認しました。
マクロをマスターしてさらに快適な生活を送っていきましょう!!!(^^)/