📊 Excel VBA Top100
🔄

CopyRowsIfCondition

データ処理

A列の値が指定したキーワードに一致する行を新しいシートにコピーします

🎬 デモGIF準備中

📖 使い方

  1. VBAエディタを開く(Alt + F11)
  2. モジュールを挿入(挿入 > モジュール)
  3. 下記VBAコードをコピー&ペースト
  4. ブック上で実行(Alt + F8 でマクロ選択)
💡 実行例: CopyRowsIfCondition を実行し、検索キーワードを入力します

💻 VBAコード

' CopyRowsIfCondition
' -----------------
' Macro Name: CopyRowsIfCondition
' Description: A列の値が指定したキーワードに一致する行を新しいシートにコピーします
' Parameters: なし
' Returns: なし
' Usage: CopyRowsIfCondition を実行し、検索キーワードを入力します
' -----------------

Sub CopyRowsIfCondition()
    On Error GoTo ErrorHandler

    Dim ws As Worksheet
    Dim destWs As Worksheet
    Dim keyword As String
    Dim lastRow As Long
    Dim destRow As Long
    Dim i As Long

    Set ws = ActiveSheet

    keyword = InputBox("A列で検索するキーワードを入力してください", "条件指定")
    If keyword = "" Then Exit Sub

    lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row

    If lastRow < 2 Then
        MsgBox "データが見つかりません", vbCritical, "エラー"
        Exit Sub
    End If

    Set destWs = Worksheets.Add
    destWs.Name = "抽出結果_" & Format(Now, "hhmmss")

    ws.Rows(1).Copy destWs.Rows(1)
    destRow = 2

    For i = 2 To lastRow
        If InStr(1, CStr(ws.Cells(i, 1).Value), keyword, vbTextCompare) > 0 Then
            ws.Rows(i).Copy destWs.Rows(destRow)
            destRow = destRow + 1
        End If
    Next i

    MsgBox (destRow - 2) & " 行をコピーしました", vbInformation, "完了"

    Exit Sub

ErrorHandler:
    MsgBox "エラーが発生しました:" & vbCrLf & Err.Description, vbCritical, "エラー"
End Sub