Excel

【Excel】VBAマクロでフィルタで空白以外・~以外を抽出・削除・コピー・貼り付けする方法【AutoFilter, Range, Delete】

当サイトでは記事内に広告を含みます

この記事では、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】について確認しました。

マクロをマスターしてさらに快適な生活を送っていきましょう!!!(^^)/