エクセルマクロの解説:値を探して、その値の行データを別シートにコピー

 


エクセルマクロの解説:値を探して、その値の行データを別シートにコピー

はじめに

 エクセルマクロは、VBA(Visual Basic for Applications)を使用してエクセルの操作を自動化するための強力なツールです。今回は、特定の条件を満たす行のデータを別のシートにコピーするマクロについて解説します。

マクロの目的

このマクロは、以下の目的で作成されました。

  1. Sheet1のL列を検索し、「テスト」という文字が含まれている行を特定する。
  2. 該当する行のA~K列の値をSheet2の2行目に挿入する。

マクロのコード解説

以下は、マクロのコードの詳細な解説です。

Sub CopyDataToSheet2()
    Dim ws1 As Worksheet
    Dim ws2 As Worksheet
    Dim lastRow As Long
    Dim i As Long
    
    ' シートを指定
    Set ws1 = ThisWorkbook.Sheets("Sheet1")
    Set ws2 = ThisWorkbook.Sheets("Sheet2")
    
    ' Sheet1の最終行を取得
    lastRow = ws1.Cells(ws1.Rows.Count, "L").End(xlUp).Row
    
    ' データをコピー
    For i = 1 To lastRow
        If InStr(1, ws1.Cells(i, "L").Value, "テスト") > 0 Then
            ws1.Range("A" & i & ":K" & i).Copy
            ws2.Cells(ws2.Rows.Count, "A").End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
        End If
    Next i
    
    ' コピーしたデータを挿入
    Application.CutCopyMode = False
End Sub

コードのポイント

  • ws1ws2 はそれぞれSheet1とSheet2を表すワークシートオブジェクトです。
  • lastRow はSheet1の最終行を取得します。
  • InStr 関数を使用して、L列のセルの文字列に「テスト」が含まれているかどうかを判定します。
  • ws1.Range("A" & i & ":K" & i).Copy でA~K列の値をコピーします。
  • ws2.Cells(ws2.Rows.Count, "A").End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues でSheet2の2行目に挿入します。

まとめ

 このマクロは、特定の条件を満たす行のデータをSheet2にコピーするための便利なツールです。VBAの基本的な構文を理解し、カスタマイズして自分の用途に合わせて活用してみてください。