Web制作

エクセルのマクロを使って不要な行・列を除いて簡単にコピーする方法

エクセルのマクロを利用すると、特定の行・列を除外し、必要なデータだけを別ファイルの指定シートにコピーすることができます。

例えば、2行目、4行目、6行目、8行目のデータ、F列目のエクセルデータが不要部分とします。

これら以外のデータを自動的に選んで、別のエクセルファイルにある週間管理表シートにコピーするといった作業が簡単な操作でできるようになります。

マクロ作成の準備

開発タブから、Visual Basicをクリックします。

上部メニュー「挿入」から標準モジュールをクリックします。

左側のプロジェクトにモジュール1が表示されるので、そちらにコードを記述していきます。

まず、Sub CopyFilteredDataToSelectedWorkbook()と記述します。

そうすると、End Subと表示されます。

Subはマクロの開始、End Subはマクロの終了ですので、この間にコードを記述していきます。

貼り付け先のファイルの設定

Dim destWb As Workbook
destWbをエクセルファイルを表すWorkbookオブジェクト型の変数として宣言しています。

Set destWb = Workbooks.Open(FilePath)

貼り付け先にしたいファイルを開いて、そのオブジェクトをdestWbに格納します。Setを使うのは、Workbooksがオブジェクト型だからです。

貼り付け先のシートの設定

Dim sheetName As String
sheetName = InputBox("貼り付け先のシート名を入力してください(例:週間管理表)")
Set destSheet = destWb.Sheets(sheetName)

貼り付け先のシート名を文字列として入力し、それをdestSheetに格納します。

コピー元の範囲選択

Set srcRange = Application.InputBox("コピー元の範囲を選択してください(例:A2:J8)", Type:=8)

コピーしたい範囲を、ドラッグで手動選択します。

偶数行とF列を除外してコピー

If actualRow Mod 2 <> 0 Then
行番号を2で割った余りが0でなければ(=奇数行)、その行をコピーします。

If j <> 6 Then
destSheet.Cells(pasteRow, j - colOffset).Value = srcRange.Cells(i, j).Value
6列目(=F列目)をスキップして、それ以外の列のみコピーします。

colOffset=1によって、F列をスキップしても列のずれを回避できます。

マクロの保存と実行

Excelファイルは通常「.xlsx」形式で保存されていますが、マクロを含めるには「.xlsm」形式に変更する必要があります。
そのためには、保存をクリックした時に表示されるダイアログで、いったん「戻る」をクリックして、ファイルの種類を「Excel マクロ有効ブック(.xlsm)」に変更します。

Visual Basicにある上部の三角ボタンをクリックすると処理がスタートします。

実行すると、マクロで記述したように、

貼り付け先のファイルの選択、貼り付け先シート名の入力、コピー元の範囲選択という順にダイアログが表示されますので、それぞれ指示に従い入力していきます。

以上が、マクロを利用して、自動的に偶数行、F列を削除したデータをコピーする方法です。

まとめ

このマクロを使えば、
偶数行や特定列の除外。
手作業によるコピー&削除の手間の削減。
ミスの軽減。
といった効果があり、定型処理を一気に効率化できます。

 

-Web制作

Copyright© サァーチpage , 2025 All Rights Reserved.