次のコードは、A列から "Baseball" という値を探し、その値の位置に対応する B 列の値をメッセージボックスで表示するマクロである。
以下の空欄に入る適切な語句を選択しなさい。
Sub Exam1()
Dim searchValue As String
Dim result As Variant
searchValue = "Baseball"
result = WorksheetFunction.Match(searchValue, Range("A2:A11"), 0)
If IsNumeric(result) Then
MsgBox searchValue & " は " & result & " 行目にあり、対応する値は " & WorksheetFunction.【 ① 】(Range("B2:B11"), result) & " です。"
Else
MsgBox searchValue & " は見つかりませんでした。"
End If
End Sub
正解
【 ① 】index
解説
【5章 ワークシート関数】
【Index関数】
●Index関数 指定した位置にあるデータを取得することができます。
構文:Index(範囲,行番号,列番号)
【Match関数】
Match関数 検索する文字列が指定した範囲の中で、上から何番目に存在しているかを調べることができる。
構文:Match(検索値,検索範囲,一致の型)
一致の型 0…完全一致、1…検査値以下の最大値
【コード解説】
Sub Exam1()
Dim searchValue As String
'検索する値を格納する変数を宣言する。
Dim result As Variant
'検索結果(位置)を格納する変数を宣言する。
searchValue = "Baseball"
'検索する値 "Baseball" を変数 searchValue に代入する。
result = WorksheetFunction.Match(searchValue, Range("A2:A11"), 0)
'範囲 "A2:A11" で "Baseball" を検索し、見つかった位置を `result` に格納する。
If IsNumeric(result) Then
' `result` が数値の場合(値が見つかった場合)に次の処理を行う。
MsgBox searchValue & " は " & result & " 行目にあり、対応する値は " & WorksheetFunction.Index(Range("B2:B11"), result) & " です。"
' resultの位置に対応する B 列の値を取得し、見つかった値の位置と B 列の値をメッセージボックスで表示する。
Else
' result が数値でない場合(値が見つからなかった場合)に次の処理を行う。
MsgBox searchValue & " は見つかりませんでした。"
'"Baseball" が見つからなかったことをメッセージボックスで表示する。
End If
End Sub