Excel VBA 必要な項目列のデータのみ別シートに抽出する

スポンサーリンク
スポンサーリンク

必要なデータ項目列のみ別シートに抽出する方法

データの中で必要な項目列だけのデータに整えたい場合が
あると思います。
そんなときは、不要な項目列を削除する方法もありますが
元データはそのままで、必要な項目列をコピーして
別シートに貼付けてデータを新たに作成した方が
問題が発生しないと思います。

ここでは、配列に必要な列番号を格納して
繰り返し処理で順に配列から列番号を取り出し
その列番号で列を参照してコピーし、新規作成した
シートに順に貼り付けるコードをご紹介します。

必要なデータ項目列のみ別シートに抽出するコード例

Sub 列抽出()
Dim データ範囲 As Range
Dim 抽出列 As Variant
Dim i As Long
Set データ範囲 = ActiveSheet.Range("A1").CurrentRegion
抽出列 = Array(1, 3)
Sheets.Add.Name = "抽出"
For i = 0 To UBound(抽出列)
データ範囲.Columns(抽出列(i)).Copy Sheets("抽出").Range("A1").Offset(0, i)
Next i
End Sub

コードの解説

2列目
【Dim データ範囲 As Range】
A1セルから始まる元データのデータ範囲を格納する
変数「データ範囲」をオブジェクト型(Range)で宣言しています。


3行目
【Dim 抽出列 As Variant】
抽出する列の番号の配列を格納する
変数「抽出列」に、配列を格納するのでバリアント型(variant)で
宣言しています。


4行目
【Dim i As Long】
繰り返し処理で使用する配列番号と繰り返し数を格納する
変数「i」を長整数型(Long)で宣言しています。


5行目
【Set データ範囲 = ActiveSheet.Range(“A1”).CurrentRegion】
A1セルから始まるデータの固まりをCurrentRegion【カレントリージョン】プロパティ
参照して変数「データ範囲」に代入します。
オブジェクト型変数なのでSetキーワードで指定します。


6行目
【抽出列 = Array(1, 3)】
Array【アレイ】関数を使用して
抽出する列の列番号を配列変数「抽出列」に代入します。
コード例では1列目と3列目を指定していますが、実際使用するときは
環境に合わせて変更してください。抽出する列番号をカンマで区切って
指定してください。


7行目
【Sheets.Add.Name = “抽出”】
SheetsコレクションのAdd【アド】メソッドを使用して
ワークシートを追加してName【ネーム】プロパティで「抽出」と
シート名を付けています。


8行目
【For i = 0 To UBound(抽出列)】
For文で繰り返し処理の始まりです。
配列内の要素数の最大値を返すUBound【ユーボンド】関数を使用して
カウンタ―変数の「i」に0~要素数を順に代入します。
0から始まる理由は配列番号が0から始まるからです。


9行目
【データ範囲.Columns(抽出列(i)).Copy Sheets(“抽出”).Range(“A1”).Offset(0, i)】
元データ範囲をColumns【カラムス】プロパティで参照して引数の配列変数「抽出列」から列番号を順に取り出して
その列をコピーし、抽出シートのA1セルに貼り付けます。
2回目からは、Offset【オフセット】プロパティ使用して
となりの行に貼り付けるようにしています。


以上で
必要な項目列のデータのみ別シートに抽出する方法についての解説を終了します。
ありがとうございました。

スポンサーリンク
スポンサーリンク

フォローする

スポンサーリンク
スポンサーリンク