Метод WorksheetFunction.Match (Excel)

Возвращает относительную позицию элемента в массиве, который соответствует указанному значению в указанном порядке. Функция ПОИСКПОЗ следует использовать вместо одной из функций уточняющего запроса, когда требуется найти позицию элемента в диапазоне, а не сам элемент.

Синтаксис

выражение. Соответствие (Arg1, Arg2, Arg3)

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

Параметры

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

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

Double

Примечания

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

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

Если match_type равно 1, функция поиска совпадений находит наибольшее значение, которое не превышает lookup_value. Lookup_array должны располагаться в возрастающем порядке: ...-2, -1, 0, 1, 2, ..., A-Z, ЛОЖЬ, ИСТИНА.

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

Если match_type равно -1, функция "Поиск" находит наименьшее значение, которое больше или равно lookup_value. Lookup_array должны быть расположены в порядке убывания: ИСТИНА, ЛОЖЬ, Я-ЗА, ... 2, 1, 0, -1, -2, ..., и т. д.

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

Функция поиска совпадений возвращает не само значение, а его позицию в 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 и обратная связь.