WorksheetFunction.Match メソッド (Excel)WorksheetFunction.Match method (Excel)

指定した順序で指定した値と一致する配列内の項目の相対的な位置を返します。Returns the relative position of an item in an array that matches a specified value in a specified order. アイテム自体ではなく、範囲内のアイテムの位置が必要な場合は、 Lookup関数の代わりにMatchを使用します。Use Match instead of one of the Lookup functions when you need the position of an item in a range instead of the item itself.


一致(Arg1Arg2Arg3)expression.Match (Arg1, Arg2, Arg3)

: WorksheetFunction オブジェクトを表す変数。expression A variable that represents a WorksheetFunction object.


名前Name 必須 / オプションRequired/Optional データ型Data type 説明Description
Arg1Arg1 必須Required バリアント型Variant 検査値: 表の中で必要な値を検索するために使用する値を指定します。Lookup_value: the value that you use to find the value that you want in a table.
Arg2Arg2 必須Required バリアント型Variant 検査範囲: 参照値を含む可能性がある連続した範囲のセル。Lookup_array: a contiguous range of cells containing possible lookup values. 検査範囲は、配列または配列参照である必要があります。Lookup_array must be an array or an array reference.
Arg3Arg3 省略可能Optional VariantVariant 照合の型: -1、0、または 1 の数字。Match_type: the number -1, 0, or 1. 照合の型では、Microsoft Excel が検査値を検査範囲の値と照合する方法を指定します。Match_type specifies how Microsoft Excel matches lookup_value with values in lookup_array.

戻り値Return value

倍精度浮動小数点型 (Double)Double


検査値は、検査範囲で照合する値です。Lookup_value is the value that you want to match in lookup_array. たとえば、電話帳で番号を検索する場合は、その人物の名前を参照値として使用しますが、電話番号は必要な値になります。For example, when you look up a number in a telephone book, you are using the person's name as the lookup value, but the telephone number is the value that you want.

検査値には、数値、文字列、論理値、またはこれらの値に対するセル参照を指定できます。Lookup_value can be a value (number, text, or logical value) or a cell reference to a number, text, or logical value.

照合の値が1の場合、 matchは検査値以下の最大値を検索します。If match_type is 1, Match finds the largest value that is less than or equal to lookup_value. 検査範囲は昇順に並べ替えておく必要があります。例: ...- 2、-1、0、1、2、...、A ~ Z、FALSE、TRUE など。Lookup_array must be placed in ascending order: ...-2, -1, 0, 1, 2, ..., A-Z, FALSE, TRUE.

照合の値に0を指定する、検査値と厳密に等しい最初の値が検索されます。If match_type is 0, Match finds the first value that is exactly equal to lookup_value. このとき検査範囲を並べ替えておく必要はありません。Lookup_array can be in any order. Match では大文字小文字は区別されません。Note that Match is case-insensitive.

照合の値に-1 を指定する、検査値以上の最小値が検索されます。If match_type is -1, Match finds the smallest value that is greater than or equal to lookup_value. 降順で並べ替えておく必要があります。例: TRUE、FALSE、Z ~ A、...- 2、-1、0、1、2、... など。Lookup_array must be placed in descending order: TRUE, FALSE, Z-A, ...2, 1, 0, -1, -2, ..., and so on.

照合の型を省略すると、1 を指定したと見なされます。If match_type is omitted, it is assumed to be 1.

Matchは、値自体ではなく、検査範囲内で一致した値の位置を返します。Match returns the position of the matched value within lookup_array, not the value itself. たとえば、 MATCH("b",{"a","b","c"},0)配列{"a","b","c"}内の "b" の相対位置である2を返します。For example, MATCH("b",{"a","b","c"},0) returns 2, the relative position of "b" within the array {"a","b","c"}.

Text 値と一致する場合、 Matchでは大文字と小文字が区別されません。Match does not distinguish between uppercase and lowercase letters when matching text values.

一致**** が見つからない場合は、#N/a エラー値が返されます。If Match is unsuccessful in finding a match, it returns the #N/A error value.

照合の型が 0 で検査値がテキストの場合は、検査値の中でワイルドカード文字、疑問符 (?)、およびアスタリスクを (*) 使用することができます。If match_type is 0 and lookup_value is text, you can use the wildcard characters, question mark (?) and asterisk (*), in lookup_value. 疑問符は任意の 1 文字を表し、アスタリスクは任意の文字列を表します。A question mark matches any single character; an asterisk matches any sequence of characters. ワイルドカード文字ではなく、通常の文字として疑問符やアスタリスクを検索する場合は、その文字の前にティルダ (~) を付けます。If you want to find an actual question mark or asterisk, type a tilde (~) before the character.


この例は、1 番目のワークシートの 1 番目の列に含まれる値ごとに、ブック全体を検索して一致する値を見つけます。For each value in the first column of the first worksheet, this example searches through the entire workbook for a matching value. 一致する値が見つかった場合、このマクロは 1 番目のワークシート上にある元の値を太字にします。If the macro finds a matching value, it sets the original value on the first worksheet to be bold.

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 do not find a matching value, do not 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
             Cells(iRow, 1).Font.Bold = True
          End If
       Next iRow
    Application.ScreenUpdating = True
End Sub

サポートとフィードバックSupport and feedback

Office VBA またはこの説明書に関するご質問やフィードバックがありますか?Have questions or feedback about Office VBA or this documentation? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.