Метод метод WorksheetFunction. ПОИСКПОЗ (Excel)WorksheetFunction.Match method (Excel)

Возвращает относительное положение элемента в массиве, который соответствует заданному значению в указанном порядке.Returns the relative position of an item in an array that matches a specified value in a specified order. Используйте функцию ПОИСКПОЗ вместо одной из функций поиска , если требуется положение элемента в диапазоне, а не самого элемента.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.

СинтаксисSyntax

Expression. ПОИСКПОЗ (arg1, arg2, arg3)expression.Match (Arg1, Arg2, Arg3)

Expression (выражение ) Переменная, представляющая объект метод WorksheetFunction .expression A variable that represents a WorksheetFunction object.

ПараметрыParameters

ИмяName Обязательный или необязательныйRequired/Optional Тип данныхData type ОписаниеDescription
Arg1Arg1 ОбязательныйRequired VariantVariant Lookup_value: значение, которое используется для поиска значения, которое вы хотите использовать в таблице.Lookup_value: the value that you use to find the value that you want in a table.
Arg2Arg2 ОбязательныйRequired VariantVariant Lookup_array: непрерывный диапазон ячеек, содержащий возможные значения подстановки.Lookup_array: a contiguous range of cells containing possible lookup values. Lookup_array должен быть массивом или ссылкой на массив.Lookup_array must be an array or an array reference.
Arg3Arg3 НеобязательныйOptional VariantVariant Match_type: число — 1, 0 или 1.Match_type: the number -1, 0, or 1. Match_type указывает, как Microsoft Excel сопоставляет lookup_value со значениями в lookup_array.Match_type specifies how Microsoft Excel matches lookup_value with values in lookup_array.

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

DoubleDouble

ПримечанияRemarks

Lookup_value — это значение, которое нужно найти в lookup_array.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 может быть значением (числом, текстом или логическим значением) или ссылкой на ячейку с числом, текстом или логическим значением.Lookup_value can be a value (number, text, or logical value) or a cell reference to a number, text, or logical value.

Если match_type 1, то ПОИСКПОЗ находит наибольшее значение, меньшее или равное lookup_value.If match_type is 1, Match finds the largest value that is less than or equal to lookup_value. Lookup_array необходимо поместить в возрастающем порядке:... – 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.

Если match_type значение 0, то ПОИСКПОЗ находит первое значение, равное lookup_value.If match_type is 0, Match finds the first value that is exactly equal to lookup_value. Lookup_array может быть в любом порядке.Lookup_array can be in any order. Обратите внимание, что в параметре ПОИСКПОЗ регистр не учитывается.Note that Match is case-insensitive.

Если match_type равно-1, то ПОИСКПОЗ находит наименьшее значение, которое больше или равно lookup_value.If match_type is -1, Match finds the smallest value that is greater than or equal to lookup_value. Lookup_array должен быть упорядочен по убыванию: 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.

Если параметр match_type опущен, предполагается, что он равен 1.If match_type is omitted, it is assumed to be 1.

ПОИСКПОЗ Возвращает позицию сопоставляемого значения в lookup_array, а не само значение.Match returns the position of the matched value within lookup_array, not the value itself. Например, MATCH("b",{"a","b","c"},0) возвращает 2, относительное положение "b" в массиве {"a","b","c"}.For example, MATCH("b",{"a","b","c"},0) returns 2, the relative position of "b" within the array {"a","b","c"}.

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.

Если match_type имеет значение 0 и lookup_value является текстом, можно использовать подстановочные знаки, вопросительные знаки (?) и звездочки (*) в lookup_value.If match_type is 0 and lookup_value is text, you can use the wildcard characters, question mark (?) and asterisk (*), in lookup_value. Вопросительный знак соответствует одному символу; Звездочка соответствует любой последовательности символов.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.

ПримерExample

В этом примере для каждого значения в первом столбце первого листа выполняется поиск совпадающего значения для всей книги.For each value in the first column of the first worksheet, this example searches through the entire workbook for a matching value. Если макрос находит совпадающее значение, исходное значение на первом листе задается полужирным шрифтом.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
             Else
             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.