【用語集に記載の内容について】

用語集に記載されているメソッドや関数の引数は、VBAエキスパート試験の試験範囲に基づいており、すべての引数を網羅しておりません。 また、書式は公式テキストの記載に準じています。
試験範囲外の引数や詳細については、ヘルプ機能やオブジェクトブラウザーをご参照ください。

【コードをコピーして実行する場合の注意】

文字コードの関係上、半角の「¥」は「/」で表示されるため、当サイトでは全角の「¥」で記載しています。当サイトのコードをコピーして実行する場合は、全角の「¥」を半角の「¥」に変換してください。

INDEX関数(ワークシート関数)

名称INDEX関数(ワークシート関数)
説明
指定したセル範囲の行番号と列番号で指定された位置の値を返すワークシート関数です。

** 注意 **
引数「行番号」には、指定したセル範囲の上から何番目にあるかを指定します。ワークシート上の行番号ではありません。
書式
WorksheetFunction.Index(範囲, 行番号, 列番号)

範囲:検索するセル範囲を指定
行番号:指定したセル範囲の上から何番目にあるかを指定
列番号[省略可能]:検索するセル範囲で値を返す列の番号を指定

列番号を省略した場合は1となり、範囲に指定したセル範囲の1列目が対象となります。
コード例①
【指定したセル範囲の上から3番目のセルの値を取得】
Sub Macro1()
    Dim data As String
    
    data = WorksheetFunction.Index(Range("A2:A5"), 3)
    MsgBox "上から3番目のデータ:" & data
End Sub

INDEX関数で、セル範囲A2:A5で、上から引数「行番号」に指定した値番目にあるセルの値を取得し、メッセージボックスに表示します。

マクロを実行すると、アクティブシートのセルの値が以下の場合、「上から3番目のデータ:banana」のメッセージボックスが表示されます。
A
1 種類
2 apple
3 peach
4 banana
5 orange
コード例②
【MATCH関数との組み合わせで値を取得】
Sub Macro2()
    Dim name As String, data As String
    Dim cnt As Long
    
    name = "城島"
    With WorksheetFunction
        '検索するデータが上から何番目にあるかを取得
        cnt = .Match(name, Range("B2:B6"), 0)
        'MACTH関数で取得した値を使用して、A列のセル範囲の値を取得
        data = .Index(Range("A2:A6"), cnt)
    End With
    
    MsgBox name & "さんは、" & data & "所属です"
End Sub

値を検索する列が、値を取得したい列より右にある場合は、MATCH関数とINDEX関数を組み合わせて値を取得します。

MATCH関数で、検索値「城島」が、アクティブシートのセル範囲B2:B6の上から何番目にあるかを取得し、変数cntに格納します。

INDEX関数で、アクティブシートのセル範囲A2:A6の上から変数cntの値番目のセルの値を取得します。

マクロを実行すると、アクティブシートのセルの値が以下の場合、MATCH関数で取得する値が4であり、INDEX関数で、セル範囲A2:A6の上から4番目のセルの値「総務部」を取得するので、「城島さんは、総務部所属です」のメッセージボックスが表示されます。
A B
1 部署名 氏名
2 営業部 小田
3 総務部 国分
4 監査部 古賀
5 総務部 城島
6 営業部 松岡
カテゴリスタンダード