【用語集に記載の内容について】
用語集に記載されているメソッドや関数の引数は、VBAエキスパート試験の試験範囲に基づいており、すべての引数を網羅しておりません。
また、書式は公式テキストの記載に準じています。
試験範囲外の引数や詳細については、ヘルプ機能やオブジェクトブラウザーをご参照ください。
【コードをコピーして実行する場合の注意】
文字コードの関係上、半角の「¥」は「/」で表示されるため、当サイトでは全角の「¥」で記載しています。当サイトのコードをコピーして実行する場合は、全角の「¥」を半角の「¥」に変換してください。
MATCH関数(ワークシート関数)
名称 | MATCH関数(ワークシート関数) | |||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
説明 | 指定したセル範囲で検索値が見つかった位置を数値で返すワークシート関数です。 ** 注意 ** 戻り値の「見つかった位置の数値」とは、指定したセル範囲の上からまたは左から何番目にあるかを表し、ワークシート上の行番号ではありません。 |
|||||||||||||||||||||
書式 |
WorksheetFunction.Match(検索値, 検索範囲, 一致の種類) 検索値:検索する値を指定 検索範囲:検索するセル範囲(縦または横方向)を指定 一致の種類[省略可能]:検索の種類を値で指定 検索範囲に縦方向を指定する場合、セル範囲A1:A5のように1列のセル範囲を指定します。 横方向を指定する場合、セル範囲A1:E1のように1行のセル範囲を指定します。 <一致の種類に指定する検索の種類> 1:検索範囲が昇順に並んでいる場合、検索値以下の最大値の位置を返します。 0:完全一致した位置を返します。 -1:検索範囲が降順に並んでいる場合、検索値以上の最小値の位置を返します。 一致の種類を省略した場合は、1となります。 |
|||||||||||||||||||||
コード例① |
【縦方向に検索】 Sub Macro1() Dim row As Long '検索値が指定したセル範囲の上から何番目にあるかを返す row = WorksheetFunction.Match("banana", Range("A2:A5"), 0) MsgBox "bananaの位置:" & row End Sub MATCH関数で、検索値「banana」が、アクティブシートのセル範囲A2:A5の上から何番目にあるかを取得して、メッセージボックスに表示します。 マクロを実行すると、アクティブシートのセルの値が以下の場合、「bananaの位置:3」のメッセージボックスが表示されます。
|
|||||||||||||||||||||
コード例② |
【INDEX関数との組み合わせで値を取得】 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番目のセルの値「総務部」を取得するので、「城島さんは、総務部所属です」のメッセージボックスが表示されます。
|
|||||||||||||||||||||
カテゴリ | スタンダード |