Метод WorksheetFunction.Match (Excel)

Возвращает относительное положение элемента в массиве, соответствующее указанному значению в указанном порядке. Используйте функцию Match вместо одной из функций подстановки , если требуется расположение элемента в диапазоне, а не самого элемента.

Синтаксис

expression. Match (Arg1, Arg2, Arg3)

Выражение Переменная, представляющая объект WorksheetFunction .

Параметры

Имя Обязательный или необязательный Тип данных Описание
Arg1 Обязательный Variant Lookup_value: значение, используемое для поиска нужного значения в таблице.
Arg2 Обязательный Variant Lookup_array: непрерывный диапазон ячеек, содержащих возможные значения подстановки. Lookup_array должен быть массивом или ссылкой на массив.
Arg3 Необязательный Variant Match_type: число -1, 0 или 1. Match_type указывает, как Microsoft Excel сопоставляет lookup_value со значениями в lookup_array.

Возвращаемое значение

Double

Замечания

Lookup_value — это значение, которое нужно сопоставить в lookup_array. Например, при поиске номера в телефонной книге в качестве значения подстановки используется имя человека, но номер телефона — это нужное значение.

Lookup_value может быть значением (число, текст или логическое значение) или ссылкой на ячейку числа, текста или логического значения.

Если match_type равно 1, функция Match находит наибольшее значение, которое меньше или равно lookup_value. Lookup_array должны располагаться в порядке возрастания: ...-2, -1, 0, 1, 2, ..., A–Z, FALSE, TRUE.

Если match_type равно 0, функция Match находит первое значение, которое точно равно lookup_value. Lookup_array может быть в любом порядке. Обратите внимание, что значение Match не учитывает регистр.

Если match_type равно -1, функция Match находит наименьшее значение, больше или равное lookup_value. Lookup_array должны размещаться в порядке убывания: TRUE, FALSE, Z-A, ... 2, 1, 0, -1, -2, ..., и т. д.

Если match_type опущен, предполагается, что значение равно 1.

Функция Match возвращает позицию соответствующего значения в lookup_array, а не само значение. Например, MATCH("b",{"a","b","c"},0) возвращает значение 2, относительное положение "b" в массиве {"a","b","c"}.

Сопоставление не различает буквы верхнего и нижнего регистров при сопоставлении текстовых значений.

Если найти совпадение не удалось, возвращается значение ошибки #N/A.

Если match_type равно 0, а lookup_value — текст, в lookup_value можно использовать подстановочные знаки, вопросительный знак (?) и звездочку (*). Вопросительный знак соответствует любому одному символу; звездочка соответствует любой последовательности символов. Если вы хотите найти фактический вопросительный знак или звездочку, введите тильду (~) перед символом.

Пример

Для каждого значения в первом столбце первого листа в этом примере выполняется поиск соответствующего значения во всей книге. Если макрос находит соответствующее значение, исходное значение на первом листе будет выделено полужирным шрифтом.

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 и обратная связь.