エクセルマクロの解説:値を探して、その値の行データを別シートにコピー
はじめに
エクセルマクロは、VBA(Visual Basic for Applications)を使用してエクセルの操作を自動化するための強力なツールです。今回は、特定の条件を満たす行のデータを別のシートにコピーするマクロについて解説します。
マクロの目的
このマクロは、以下の目的で作成されました。
- Sheet1のL列を検索し、「テスト」という文字が含まれている行を特定する。
- 該当する行の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
コードのポイント
ws1
とws2
はそれぞれ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の基本的な構文を理解し、カスタマイズして自分の用途に合わせて活用してみてください。