Excel

【Excel】VBAマクロで一致するセルを探す・取得(文字列、同じ値、複数条件)し別シートへ抽出する方法【Find、If、For Each】**

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

この記事では、エクセルのVBAマクロで一致するセルを探す・取得(文字列、同じ値、複数条件)し別シートへ抽出する方法、について解説していきます。

ポイントとしては`Find`メソッド、`If`文、`For Each`ループを使用することです。

なお、マクロ初心者でもわかりやすいように変数名を`aaaaa変数aaaaa`といった名称にしています。そのため、あなた自身がご活用の際には、これらを適切な英語表記に変更してご活用くださいね。それでは詳しく見ていきましょう!

VBAマクロで一致するセルを探す・取得(同じ値)し別シートへ抽出する方法【ごまプリン列が3のセルを探し、行全体を別シートに抽出する】

それではまず、同じ値に一致するセルを探し、行全体を別シートに抽出する方法について解説していきます。

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


Sub ExtractMatchingRows()
    Dim aaaaaSheetSourceaaaaa As Worksheet
    Dim aaaaaSheetDestinationaaaaa As Worksheet
    Dim aaaaaLastRowaaaaa As Long
    Dim aaaaaRowaaaaa As Long
    Dim aaaaaCellaaaaa As Range
    
    Set aaaaaSheetSourceaaaaa = ThisWorkbook.Worksheets("Source")
    Set aaaaaSheetDestinationaaaaa = ThisWorkbook.Worksheets("Destination")
    aaaaaSheetDestinationaaaaa.Cells.Clear
    
    aaaaaLastRowaaaaa = aaaaaSheetSourceaaaaa.Cells(aaaaaSheetSourceaaaaa.Rows.Count, "A").End(xlUp).Row
    
    For aaaaaRowaaaaa = 1 To aaaaaLastRowaaaaa
        Set aaaaaCellaaaaa = aaaaaSheetSourceaaaaa.Cells(aaaaaRowaaaaa, "B") '仮にごまプリン列がB列とします
        If aaaaaCellaaaaa.Value = 3 Then
            aaaaaCellaaaaa.EntireRow.Copy Destination:=aaaaaSheetDestinationaaaaa.Range("A" & aaaaaSheetDestinationaaaaa.Rows.Count).End(xlUp).Offset(1)
        End If
    Next aaaaaRowaaaaa
End Sub

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

このコードは、`Source`シートから`Destination`シートに条件に一致する行をコピーします。ここでは、「ごまプリン列が3のセル」を条件としています。`For Each`ループと`If`文を組み合わせることで、この処理を実行します。

VBAマクロで一致するセルを探す・取得(複数条件、文字列と)し別シートへ抽出する方法【ごまプリン列が”無し”のセル、かつ、りんごアイス列が5以上10未満のセルを探し、両方とも満たす行があれば行全体を別シートに抽出する】

続いては、複数条件(文字列と値)に一致するセルを探し、それを別シートへ抽出する方法について解説していきます。

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


Sub ExtractWithMultipleConditions()
    Dim aaaaaSheetSourceaaaaa As Worksheet
    Dim aaaaaSheetDestinationaaaaa As Worksheet
    Dim aaaaaLastRowaaaaa As Long
    Dim aaaaaRowaaaaa As Long
    Dim aaaaaGomaPuddingCellaaaaa As Range
    Dim aaaaaAppleIceCellaaaaa As Range
    
    Set aaaaaSheetSourceaaaaa = ThisWorkbook.Worksheets("Source")
    Set aaaaaSheetDestinationaaaaa = ThisWorkbook.Worksheets("Destination")
    aaaaaSheetDestinationaaaaa.Cells.Clear
    
    aaaaaLastRowaaaaa = aaaaaSheetSourceaaaaa.Cells(aaaaaSheetSourceaaaaa.Rows.Count, "A").End(xlUp).Row
    
    For aaaaaRowaaaaa = 1 To aaaaaLastRowaaaaa
        Set aaaaaGomaPuddingCellaaaaa = aaaaaSheetSourceaaaaa.Cells(aaaaaRowaaaaa, "B") '仮にごまプリン列がB列
        Set aaaaaAppleIceCellaaaaa = aaaaaSheetSourceaaaaa.Cells(aaaaaRowaaaaa, "C") '仮にりんごアイス列がC列
        
        If (aaaaaGomaPuddingCellaaaaa.Value = "無し" And aaaaaAppleIceCellaaaaa.Value >= 5 And aaaaaAppleIceCellaaaaa.Value < 10) Then
            aaaaaGomaPuddingCellaaaaa.EntireRow.Copy Destination:=aaaaaSheetDestinationaaaaa.Range("A" & aaaaaSheetDestinationaaaaa.Rows.Count).End(xlUp).Offset(1)
        End If
    Next aaaaaRowaaaaa
End Sub

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

このコードでは、ごまプリン列が”無し”で、かつ、りんごアイス列の値が5以上10未満の行を`Source`シートから`Destination`シートにコピーします。このように、`And`演算子を使用して複数の条件を組み合わせることができます。

【Sub、If、For、Set、And】

VBAマクロで一致するセルを探す・取得(複数条件、文字列と)し別シートへ抽出する方法【ごまプリン列が”無し”のセル、もしくは、りんごアイス列が有りのセルを探し、or条件で満たす行があれば行全体を別シートに抽出する】

最後に、`Or`条件を使用して一致するセルを探し、別シートへ抽出する方法を見ていきましょう。

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


Sub ExtractWithOrCondition()
    Dim aaaaaSheetSourceaaaaa As Worksheet
    Dim aaaaaSheetDestinationaaaaa As Worksheet
    Dim aaaaaLastRowaaaaa As Long
    Dim aaaaaRowaaaaa As Long
    Dim aaaaaGomaPuddingCellaaaaa As Range
    Dim aaaaaAppleIceCellaaaaa As Range
    
    Set aaaaaSheetSourceaaaaa = ThisWorkbook.Worksheets("Source")
    Set aaaaaSheetDestinationaaaaa = ThisWorkbook.Worksheets("Destination")
    aaaaaSheetDestinationaaaaa.Cells.Clear
    
    aaaaaLastRowaaaaa = aaaaaSheetSourceaaaaa.Cells(aaaaaSheetSourceaaaaa.Rows.Count, "A").End(xlUp).Row
    
    For aaaaaRowaaaaa = 1 To aaaaaLastRowaaaaa
        Set aaaaaGomaPuddingCellaaaaa = aaaaaSheetSourceaaaaa.Cells(aaaaaRowaaaaa, "B")
        Set aaaaaAppleIceCellaaaaa = aaaaaSheetSourceaaaaa.Cells(aaaaaRowaaaaa, "C")
        
        If (aaaaaGomaPuddingCellaaaaa.Value = "無し" Or aaaaaAppleIceCellaaaaa.Value <> "") Then
            aaaaaGomaPuddingCellaaaaa.EntireRow.Copy Destination:=aaaaaSheetDestinationaaaaa.Range("A" & aaaaaSheetDestinationaaaaa.Rows.Count).End(xlUp).Offset(1)
        End If
    Next aaaaaRowaaaaa
End Sub


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

このコードでは、`Or`演算子を使って、「ごまプリン列が”無し”のセル、もしくは、りんごアイス列が空でないセル」の条件に一致する行を抽出します。この方法で、より柔軟な条件設定が可能になります。

【Sub、If、For、Set、Or】

この記事を通じて、VBAマクロを使った条件に基づくデータの抽出方法を学びました。各コードの具体的な説明と共に、条件分岐やループ処理などの基本的なプログラミング概念の応用も見てきました。これらの知識を活用して、日々の作業を効率化しましょう。