Excel VBAで複数の条件を使用してデータを抽出する方法は、データのフィルタリングとセグメンテーションにおいて非常に実用的です。条件の組み合わせを用いて特定のデータを抽出し、それを別のシートに出力するプロセスを説明します。
Excel VBAで複数条件によるデータ抽出方法
1: ワークシートの設定
データを抽出する元のシートと、データを転記する先のシートを設定します。
Sub ExtractDataWithMultipleConditions()
Dim sourceWs As Worksheet
 Set sourceWs = ThisWorkbook.Sheets("DataSheet")
 Dim outputWs As Worksheet
 Set outputWs = ThisWorkbook.Sheets("OutputSheet")
2: データ範囲と最終行の特定
データが存在する範囲を特定し、その範囲を基にデータを抽出します。
 以下のサンプルコードではA列の最終行を取得します。【VBA】Rowsの基本的な使用方法・複数行を指定(数字・変数)・最終行取得
Dim lastRow As Long
 lastRow = sourceWs.Cells(sourceWs.Rows.Count, "A").End(xlUp).Row
 Dim outputRow As Long
 outputRow = 1 ' 転記先シートの開始行
3: 複数条件でのデータ抽出と転記
指定した複数の条件に基づいてデータを抽出し、転記先のシートにデータを転記します。この例では、以下二つの条件を評価してデータ抽出します。
 ・B列が10以上の数値であること
 ・C列に”Criteria”という文字があること
Dim i As Long
 For i = 1 To lastRow
 ' 複数の条件例: 第二列が10以上かつ第三列に特定の文字列が含まれる場合
If sourceWs.Cells(i, 2).Value >= 10 And InStr(sourceWs.Cells(i, 3).Value, "Criteria") > 0 Then
' 条件に一致する場合、転記
 outputWs.Cells(outputRow, 1).Value = sourceWs.Cells(i, 1).Value
 outputWs.Cells(outputRow, 2).Value = sourceWs.Cells(i, 2).Value
 outputWs.Cells(outputRow, 3).Value = sourceWs.Cells(i, 3).Value
 outputRow = outputRow + 1
End If
Next i
End Sub
【VBA】for next で複数条件の処理方法(For Next×If)
■コード解説
- 条件の評価
 Ifステートメントを用いて、指定された列が複数の条件を満たすかどうかを評価します。
- データの転記
 条件に合致したデータをターゲットシートに転記します。各セルから値を取得し、ターゲットシートの対応するセルに値を設定します。
まとめ
Excel VBAを使用した複数条件によるデータ抽出は、特定の要件を満たすデータのみを選択的に取り出すことを可能にします。これにより、データの整理や分析を効率的に行い、高度なデータ処理や自動化を実現できます。