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