この記事では、VBAマクロで一致したら転記・抽出(別シートや別ブック:複数条件も)する方法【Find, Copy, Paste, Loop】について詳しく解説します。
特に、初心者の方にもわかりやすくするために、
ポイントとして
`Find`、
`Copy`、
`Paste`メソッド
とループ処理
を使用します。
また、変数名にはわかりやすいよう日本語のローマ字表記を用いています。
それでは、具体的な方法を見ていきましょう!
VBAマクロで一致したら別シートに転記・抽出する方法【C列の文字列がにがりで完全一致したら行ごと別シートに転記】
それではまず、「VBAマクロで一致したら別シートに転記・抽出する方法」について解説していきます。Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。
Sub SheetTransferIfMatch()
Dim motosheet As Worksheet, atosheet As Worksheet
Dim motogyou As Range, atogyou As Long
Set motosheet = ThisWorkbook.Sheets("元のシート名")
Set atosheet = ThisWorkbook.Sheets("転記先のシート名")
atogyou = 1
For Each motogyou In motosheet.Range("C1:C" & motosheet.Cells(motosheet.Rows.Count, 3).End(xlUp).Row)
If motogyou.Value = "にがり" Then
motogyou.EntireRow.Copy Destination:=atosheet.Rows(atogyou)
atogyou = atogyou + 1
End If
Next motogyou
End Sub
コードのAlt+F8を押し、マクロ選択画面で`SheetTransferIfMatch`関数を実行します。
このマクロは、指定された条件(この場合はC列の値が「にがり」である行)に一致する行を別のシートに転記します。
`motosheet`変数で元のシートを指定し、`atosheet`で転記先のシートを指定します。
`For Each`ループを使い、条件に一致する行を転記先のシートにコピーする処理となってます(^^)/
VBAマクロで一致したら別ブックの別シートに転記・抽出する方法【D列の数値が10で一致したら行ごと別ブックに転記】
続いては、「VBAマクロで一致したら別ブックの別シートに転記する方法」について解説していきます。
具体的にはD列に着目しここが10で一致したら転記してみますね。
Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。
Sub WorkbookTransferIfMatch()
Dim motosheet As Worksheet, atosheet As Worksheet
Dim motogyou As Range, atogyou As Long
Dim atobook As Workbook
Set motosheet = ThisWorkbook.Sheets("元のシート名")
Set atobook = Workbooks.Open("転記先のブックのパス")
Set atosheet = atobook.Sheets("転記先のシート名")
atogyou = 1
For Each motogyou In motosheet.Range
("D1:D" & motosheet.Cells(motosheet.Rows.Count, 4).End(xlUp).Row)
If motogyou.Value = 10 Then
motogyou.EntireRow.Copy Destination:=atosheet.Rows(atogyou)
atogyou = atogyou + 1
End If
Next motogyou
End Sub
コードのAlt+F8を押し、マクロ選択画面で`WorkbookTransferIfMatch`関数を実行します。
このマクロでは、指定された条件(D列の値が10である行)に一致する行を別のブックのシートに転記します。
この場合、転記先のブックとシートを別に指定し、条件に一致する行を転記先のシートにコピーします。
VBAマクロで複数条件で一致したら別シートに転記する方法【B列の数値が5以上10以下かつ、E列が豆腐で一致したら行ごと別シートに転記】
最後に、「VBAマクロで複数条件で一致したら別シートに転記する方法」について解説します。
具体的には、B列の数値が5以上10以下かつ、E列が豆腐で一致したら行ごと別シートに転記する処理としてみます。
Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。
Sub MultipleConditionsTransfer()
Dim motosheet As Worksheet, atosheet As Worksheet
Dim motogyou As Range, atogyou As Long
Set motosheet = ThisWorkbook.Sheets("元のシート名")
Set atosheet = ThisWorkbook.Sheets("転記先のシート名")
atogyou = 1
For Each motogyou In motosheet.Range("B1:B" & motosheet.Cells(motosheet.Rows.Count, 2).End(xlUp).Row)
If motogyou.Value >= 5 And motogyou.Value <= 10 And motosheet.Cells(motogyou.Row, 5).Value = "豆腐" Then
motogyou.EntireRow.Copy Destination:=atosheet.Rows(atogyou)
atogyou = atogyou + 1
End If
Next motogyou
End Sub
コードのAlt+F8を押し、マクロ選択画面で`MultipleConditionsTransfer`関数を実行します。
このマクロでは、複数の条件(B列の値が5以上10以下、かつE列が「豆腐」)に一致する行を別のシートに転記します。
ここでも`For Each`ループを使用して、条件に一致する行を転記先のシートにコピーします。
まとめ VBAマクロで一致したら転記(別ブック:複数条件も)する方法【Find, Copy, Paste, Loop】
この記事では、VBAマクロで一致したら転記(別シートや別ブック:複数条件も)する方法【Find, Copy, Paste, Loop】について確認しました。
マクロをマスターしてさらにストレスフリー&ハッピー生活を送っていきましょう!!!(^^)/