Excel

【Excel】VBAマクロで一致したら転記・抽出(別シートや別ブック:複数条件も)する方法【セルの値が:検索:Find, Copy, Paste, Loop】

当サイトでは記事内に広告を含みます

この記事では、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】について確認しました。

マクロをマスターしてさらにストレスフリー&ハッピー生活を送っていきましょう!!!(^^)/