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