この記事では、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マクロで条件に一致する行を取得(複数や、行番号も)や抽出する方法について確認しました。
マクロをマスターしてもっと快適な生活を送っていきましょう!!!(^^)/