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」を正しく返します。

セルF1F2の値を変更してマクロを再度実行すると、新しい値に基づいてプレーヤー名を見つけることができます。

たとえば、チーム名を「Mavs」に、ポジションを「Center」に変更して、マクロを再度実行するとします。

マクロは、Team 列で「Mavs」を検索し、Position 列で「Center」を検索し、セルF3に名前「Chad」を正しく返します。

追加リソース

次のチュートリアルでは、VBA で他の一般的なタスクを実行する方法について説明します。

VBA: インデックス マッチングの使用方法
VBA: 文字列に別の文字列が含まれているかどうかを確認する方法
VBA: 範囲内の行数をカウントする方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です