WorksheetFunction.Match メソッド (Excel)

指定した順序で指定した値と一致する配列内の項目の相対的な位置を返します。 項目自体ではなく範囲内の項目の位置が必要な場合は、いずれかのルックアップ関数の代わりに Match を使用します。

構文

一致 (Arg1Arg2Arg3)

: WorksheetFunction オブジェクトを表す変数。

パラメーター

名前 必須 / オプション データ型 説明
Arg1 必須 バリアント型 Lookup_value: テーブル内の目的の値を検索するために使用する値。
Arg2 必須 バリアント型 検査範囲: 参照値を含む可能性がある連続した範囲のセル。 検査範囲は、配列または配列参照である必要があります。
Arg3 省略可能 バリアント型 照合の型: -1、0、または 1 の数字。 照合の型では、Microsoft Excel が検査値を検査範囲の値と照合する方法を指定します。

戻り値

Double

注釈

Lookup_valueは、lookup_arrayで一致させる値です。 たとえば、電話帳で番号を検索するときは、そのユーザーの名前を参照値として使用しますが、電話番号は目的の値です。

検査値には、数値、文字列、論理値、またはこれらの値に対するセル参照を指定できます。

match_typeが 1 の場合、 Match はlookup_value以下の最大値を検索します。 検査範囲は昇順に並べ替えておく必要があります。例: ...- 2、-1、0、1、2、...、A ~ Z、FALSE、TRUE など。

match_typeが 0 の場合、 Match は、lookup_valueとまったく等しい最初の値を検索します。 このとき検査範囲を並べ替えておく必要はありません。 Match では大文字と小文字が区別されません。

match_typeが -1 の場合、 Match はlookup_value以上の最小値を検索します。 降順で並べ替えておく必要があります。例: TRUE、FALSE、Z ~ A、...- 2、-1、0、1、2、... など。

照合の型を省略すると、1 を指定したと見なされます。

Match は、値自体ではなく、lookup_array内の一致した値の位置を返します。 たとえば、 MATCH("b",{"a","b","c"},0) 配列内の "b" の相対位置である 2 を返します {"a","b","c"}

テキスト値と一致 する場合、一致は大文字と小文字を区別しません。

一致が見つからない場合は、#N/A エラー値を返します。

If match_type is 0 and lookup_value is text, you can use the wildcard characters, question mark (?) and asterisk (*), in lookup_value. ワイルドカード文字の疑問符は任意の 1 文字を表し、アスタリスクは任意の文字列を表します。 ワイルドカード文字ではなく、通常の文字として疑問符やアスタリスクを検索する場合は、その文字の前にティルダ (~) を付けます。

この例は、1 番目のワークシートの 1 番目の列に含まれる値ごとに、ブック全体を検索して一致する値を見つけます。 一致する値が見つかった場合、このマクロは 1 番目のワークシート上にある元の値を太字にします。

Sub HighlightMatches()
    Application.ScreenUpdating = False
    
    'Declare variables
    Dim var As Variant, iSheet As Integer, iRow As Long, iRowL As Long, bln As Boolean
       
       'Set up the count as the number of filled rows in the first column of Sheet1.
       iRowL = Cells(Rows.Count, 1).End(xlUp).Row
       
       'Cycle through all the cells in that column:
       For iRow = 1 To iRowL
          'For every cell that is not empty, search through the first column in each worksheet in the
          'workbook for a value that matches that cell value.

          If Not IsEmpty(Cells(iRow, 1)) Then
             For iSheet = ActiveSheet.Index + 1 To Worksheets.Count
                bln = False
                var = Application.Match(Cells(iRow, 1).Value, Worksheets(iSheet).Columns(1), 0)
                
                'If you find a matching value, indicate success by setting bln to true and exit the loop;
                'otherwise, continue searching until you reach the end of the workbook.
                If Not IsError(var) Then
                   bln = True
                   Exit For
                End If
             Next iSheet
          End If
          
          'If you don't find a matching value, don't bold the value in the original list;
          'if you do find a value, bold it.
          If bln = False Then
             Cells(iRow, 1).Font.Bold = False
             Else
             Cells(iRow, 1).Font.Bold = True
          End If
       Next iRow
    Application.ScreenUpdating = True
End Sub

サポートとフィードバック

Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。