Vba: 複数の条件で index match を使用する方法
VBA で複数の基準を使用して INDEX MATCH を実行するには、次の基本構文を使用できます。
SubIndexMatchMultiple ()
Range(" F3 ").Value = WorksheetFunction.Index(Range(" C2:C10 "), _
WorksheetFunction.Match(Range(" F1 "), Range(" A2:A10 "), 0) + _
WorksheetFunction.Match(Range(" F2 "), Range(" B2:B10 "), 0) - 1)
End Sub
この特定の例では、セルF1の範囲A2:A10の値とセルF2の範囲B2:B10の値を検索し、セルF3の範囲C2:C10の対応する値を返します。
次の例は、この構文を実際に使用する方法を示しています。
例: VBA を使用して複数の条件を指定して INDEX MATCH を実行する
Excel にバスケットボール選手に関する情報を含む次のデータセットがあるとします。
セルF1のチーム名とセルF2のポジションに一致する選手を検索し、セルF3に名前を返したいとします。
これを行うには、次のマクロを作成できます。
SubIndexMatchMultiple ()
Range(" F3 ").Value = WorksheetFunction.Index(Range(" C2:C10 "), _
WorksheetFunction.Match(Range(" F1 "), Range(" A2:A10 "), 0) + _
WorksheetFunction.Match(Range(" F2 "), Range(" B2:B10 "), 0) - 1)
End Sub
このマクロを実行すると、次の出力が表示されます。
このマクロは、Team 列で「Spurs」を検索し、Position 列で「Forward」を検索し、セルF3に名前「Eric」を正しく返します。
セルF1とF2の値を変更してマクロを再度実行すると、新しい値に基づいてプレーヤー名を見つけることができます。
たとえば、チーム名を「Mavs」に、ポジションを「Center」に変更して、マクロを再度実行するとします。
マクロは、Team 列で「Mavs」を検索し、Position 列で「Center」を検索し、セルF3に名前「Chad」を正しく返します。
追加リソース
次のチュートリアルでは、VBA で他の一般的なタスクを実行する方法について説明します。
VBA: インデックス マッチングの使用方法
VBA: 文字列に別の文字列が含まれているかどうかを確認する方法
VBA: 範囲内の行数をカウントする方法