WorksheetFunction.Match メソッド (Excel)
指定した順序で指定した値と一致する配列内の項目の相対的な位置を返します。 項目自体ではなく範囲内の項目の位置が必要な場合は、いずれかのルックアップ関数の代わりに Match を使用します。
構文
式。一致 (Arg1、 Arg2、 Arg3)
式: 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 のサポートおよびフィードバックを参照してください。
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示