【VBA】オートフィルタで抽出したデータを、別シートへコピーする

オートフィルタで抽出した

データを…

列「名前(1列目)」を「佐藤」で抽出
列「名前(1列目)」を「佐藤」で抽出


別シートへコピーできます!

抽出したデータを別シートへコピー
抽出したデータを別シートへコピー
PR

VBAコード

ここでは例として、
 ・シート「コピー元」のセル「B2」から続く一連の範囲の表の
 ・列「名前(1列目)」を「佐藤」で抽出して
 ・抽出したデータをシート「抽出」へコピー
します。
※コピー後、シート「抽出」の列幅を自動調整します。

シート「コピー元」のセル「B2」から続く一連の範囲の表
シート「コピー元」のセル「B2」から続く一連の範囲の表
Option Explicit

Sub sample()

    Dim srcSheet As Worksheet
    Dim destSheet As Worksheet
    Dim startRange As String
    
    'コピー元シート
    Set srcSheet = Worksheets("コピー元")
    'コピー先シート
    Set destSheet = Worksheets("抽出")
    '表の開始セル
    startRange = "B2"
    
    With srcSheet.Range(startRange).CurrentRegion
        'コピー元シートの表にオートフィルタを設定してデータを抽出
        .AutoFilter 1, "佐藤"
        '抽出した結果をコピー先シートへコピー
        .Copy destSheet.Range(startRange)
        'コピー元シートの表のオートフィルタを解除
        .AutoFilter
    End With
    
    'コピー先シートの列幅を自動調整
    destSheet.Range(startRange).CurrentRegion.Columns.AutoFit

End Sub

以下を指定します。
※状況に応じて任意の値を指定してください。

・コピー元シート(10行目)
・コピー先シート(12行目)
・表の開始セル(14行目)

「Rangオブジェクト」の「CurrentRegion」プロパティにより、セル「B2」から続く一連の範囲を示す「Rangeオブジェクト」を取得します(16行目)。

「コピー元シート」の表にオートフィルタを設定して、データを抽出します(18行目)。
※上記では1列目を「佐藤」で抽出しています。

抽出した結果を「コピー先シート」へコピーします(20行目)。

PR

実行結果

オートフィルタで抽出したデータを、別シートへコピーできました。

実行結果
実行結果
PR

参考①

上記のVBAコードは以下の記事を参考にして作成しました。

●オートフィルタの設定/解除をする

PR

参考②

上記のVBAコードで使用した以下の詳細は、公式サイトをご確認ください。

●「Rangオブジェクト」の「CurrentRegion」プロパティ