Excel

【Excel】VBAマクロで条件に一致する行を取得(複数や、行番号も)や抽出する方法

当サイトでは記事内に広告を含みます
いつも記事を読んでいただきありがとうございます!!! これからもお役に立てる各情報を発信していきますので、今後ともよろしくお願いします(^^)/

この記事では、VBAマクロで条件に一致する行を取得(複数や、行番号も)や抽出する方法について解説していきます。

ポイントとしては

`Find`メソッド、

`Range`オブジェクト、

`Copy`

メソッドを使用することです。

初心者でもわかりやすいように、変数名を日本語のローマ字表記で紹介します。これらの変数名は、実際の使用時に英語表記の適切な名称に変更してご活用ください。

それでは、詳しく見ていきましょう!

 

VBAマクロで条件に一致する行を取得・抽出する方法【練習列の項目がカカオに相当する行のみを抽出し、別シートに順番に追記する】

それではまず、「練習列の項目がカカオに相当する行のみを抽出する方法」について解説していきます。

Alt + F11にてVBE画面を開いて、以下のコードをコピペしましょう。


Sub KakaoGyouHyouji()
    Dim mySheet As Worksheet
    Dim targetSheet As Worksheet
    Dim lastRow As Long
    Dim i As Long
    Set mySheet = ThisWorkbook.Sheets("元のシート名")
    Set targetSheet = ThisWorkbook.Sheets("出力先のシート名")
    lastRow = mySheet.Cells(mySheet.Rows.Count, "A").End(xlUp).Row

    For i = 1 To lastRow
        If mySheet.Cells(i, "練習列の列番号").Value = "カカオ" Then
            mySheet.Rows(i).Copy Destination:=targetSheet.Rows(targetSheet.Cells(targetSheet.Rows.Count, "A").End(xlUp).Row + 1)
        End If
    Next i
End Sub

コードのAlt+F8を押し、マクロ選択画面で`KakaoGyouHyouji`関数を実行します。

このコードでは、`mySheet`変数で指定されたシートから条件に合致する行を検索し、`targetSheet`にそれらの行をコピーしています。

`lastRow`変数はデータのある最終行を特定するために使われています。

 

VBAマクロで条件に一致する行を取得・抽出する方法【練習列の項目がカカオ、またはOK列がココアという複数条件に相当する行のみを抽出し、別シートに順番に追記する】

続いては、「練習列の項目がカカオ、またはOK列がココアという複数条件(OR条件)に相当する行を抽出する方法」について解説していきます。

Alt + F11にてVBE画面を開いて、以下のコードをコピペしましょう。


Sub KakaoCocoaGyouHyouji()
    Dim mySheet As Worksheet
    Dim targetSheet As Worksheet
    Dim lastRow As Long
    Dim i As Long
    Set mySheet = ThisWorkbook.Sheets("元のシート名")
    Set targetSheet = ThisWorkbook.Sheets("出力先のシート名")
    lastRow = mySheet.Cells(mySheet.Rows.Count, "A").End(xlUp).Row

    For i = 1 To lastRow
        If mySheet.Cells(i, "練習列の列番号").Value = "カカオ" Or mySheet.Cells(i, "OK列の列番号").Value = "ココア" Then
            mySheet.Rows(i).Copy Destination:=targetSheet.Rows(targetSheet.Cells(targetSheet.Rows.Count, "A").End(xlUp).Row + 1)
        End If
    Next i
End Sub

コードのAlt+F8を押し、マクロ選択画面で`KakaoCocoaGyouHyouji`関数を実行します。

このコードでは、上のよう複数の条件(OR)に基づいて行を抽出しています。

`If`文内で`Or`演算子を用いることで、どちらか一方の条件が満たされれば行を抽出します。

AND条件であれば条件式をORでなく、ANDをご活用くださいませ(^^)/

 

3. VBAマクロで条件に一致する行番号を取得し変数に格納する方法【練習列の項目がカカオのみ】

最後に、「練習列の項目がカカオのみの行番号を取得し、変数に格納する方法」について解説します。

Alt + F11にてVBE画面を開いて、以下のコードをコピペしましょう。


Sub KakaoGyouBanngouHoyuu()
    Dim mySheet As Worksheet
    Dim i As Long
    Dim gyouBanngou As Long
    Set mySheet = ThisWorkbook.Sheets("元のシート名")
    gyouBanngou = 0

    For i = 1 To mySheet.Cells(mySheet.Rows.Count, "A").End(xlUp).Row
        If mySheet.Cells(i, "練習列の列番号").Value = "カカオ" Then
            gyouBanngou = i
            Exit For
        End If
    Next i

    If gyouBanngou > 0 Then
        MsgBox "カカオが見つかった行番号: " & gyouBanngou
    Else
        MsgBox "カカオが見つかりませんでした。"
    End If
End Sub

コードのAlt+F8を押し、マクロ選択画面で`KakaoGyouBanngouHoyuu`関数を実行します。

このコードでは、最初に条件に合致する行番号を見つけると、ループを終了します。

その行番号は`gyouBanngou`変数に格納され、メッセージボックスで表示されます。

 

まとめ VBAマクロで条件に一致する行番号を取得(複数:OR:ANDも)や抽出する方法

この記事では、VBAマクロで条件に一致する行を取得(複数や、行番号も)や抽出する方法について確認しました。

マクロをマスターしてもっと快適な生活を送っていきましょう!!!(^^)/