今回はオートフィルタで絞り込みされたデータをコピーする方法をご説明します。
簡単にコピーする方法は、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最終行を選択してコピーしています。
貼り付け部分は一緒です。
最終行、最終列の取得について詳細は「セルの最終行と最終列の取得」をご覧ください。