Excel VBA オートフィルタで絞り込みしたデータをコピーする

オートフィルタ操作

今回はオートフィルタで絞り込みされたデータをコピーする方法をご説明します。

簡単にコピーする方法は、2つあります。

と言いますか、オートフィルタで絞り込みしたからと言って特殊な方法でコピーする必要はありません。

2つの方法を順番にご説明します。

また、その他のオートフィルタの操作については次の記事をご覧ください。

1.CurrentRegionプロパティでコピー

「絞り込みされている=連続しているデータ」ということで、CurrentRegionプロパティでまとまったデータを選択する事でコピーします。

オートフィルタで絞り込まれている状態でデータをまとめてコピーしても、非表示のデータは除外された状態でコピーされます。

ですので、可視セル選択などの方法を組み込む必要はありません。

CurrentRegionプロパティ」でコピーする場合は下記のコードの「Range(“A1”)」のA1をA2にしても項目は含まれてしまいます。

次のコードは絞り込みされた範囲をコピーして「貼り付けシート」というシートに貼り付けします。

Sub Sample1()

Range("A1").CurrentRegion.Copy Sheets("貼り付けシート").Range("A1")

End Sub

2.任意にセル範囲を指定してコピー

Rangeで任意に範囲選択をしてコピーする方法です。

上記の「CurrentRegionプロパティ」では1行の項目からコピーされてしまいます。

2行目から等、任意の範囲をコピーしたい場合は次のように指定します。

Sub Sample2()

Dim MaxRow  As Long
Dim MaxCol  As Long

MaxRow = Cells(Rows.Count, 1).End(xlUp).Row
MaxCol = Cells(1, Columns.Count).End(xlToLeft).Column

Range(Cells(2, 1), Cells(MaxRow, MaxCol)).Copy Sheets("貼り付けシート").Cells(1, 1)

End Sub

データの最終行と最終列が動的に対応できるように、MaxRow、MaxColで各最終行列を取得しています。

「Range(Cells(2, 1), Cells(MaxRow, MaxCol))」でA2~D最終行を選択してコピーしています。

貼り付け部分は一緒です。

最終行、最終列の取得について詳細は「セルの最終行と最終列の取得」をご覧ください。

タイトルとURLをコピーしました