Метод WorksheetFunction.Match

Метод WorksheetFunction.Match
WorksheetFunction.Match - это метод VBA Excel, который возвращает относительное положение элемента в массиве (диапазоне), соответствующее его порядковому номеру в массиве (диапазоне). Метод соответствует функции рабочего листа = ПОИСКПОЗ (поиск местоположения).
Обратите внимание, что
- поиск позиции в массиве возможен, если он одномерный или двухмерный, но с набором элементов только в одном измерении, например: myArray (8, 0) или myArray (1 To 1, 1 To 20);
- поиск позиции в диапазоне листа возможен, если он содержит только одну строку или один столбец;
- нумерация относительной позиции элемента в массиве начинается с единицы, независимо от индексации указанного массива.
Синтаксис
Синтаксис метода WorksheetFunction.Match в VBA Excel:
| 1 | WorksheetFunction.Match (Arg1, Arg2, [Arg3]) |
Параметры
Описание параметров метода WorksheetFunction.Match:
| Параметр | Описание |
|---|---|
| Arg1 | Обязательный параметр. Значение элемента массива, которое будет использоваться для поиска относительной позиции элемента в массиве. |
| Arg2 | Обязательный параметр. Непрерывный диапазон ячеек или массив, в котором выполняется поиск позиции элемента, значение которого совпадает со значением параметра Arg1. |
| Arg3 | Необязательный параметр. Задает тип сопоставления значения Arg1 со значениями в массиве Arg2. |
Параметр Arg1 принимает подстановочные знаки для шаблонов, как для методов Find и Replace.
Значения параметра Arg3, указывающие тип сопоставления:
| Имея в виду | Тип соответствия |
|---|---|
| -1 | Метод WorksheetFunction.Match находит значение наименьшего элемента в Arg2, большее или равное Arg1. Значения элементов Arg2 должны быть в порядке убывания: [m,… 2, 1, 0, -1, -2,… -n], [z - a], [True, False] и т.д. |
| 0 | Метод WorksheetFunction.Match находит первое значение Arg1 в Arg2. Значения элементов Arg2 могут быть в любом порядке. |
| 1 | Значение по умолчанию. Метод WorksheetFunction.Match находит значение самого большого элемента в Arg2, меньшее или равное Arg1. Значения элементов Arg2 должны быть в порядке возрастания: [-n,... -2, -1, 0, 1, 2, .. m], [a - z], [False, True] и так далее |
Соответствующие строки не чувствительны к регистру.
Примеры
Пример 1
Найдите относительное положение элемента в массиве с отсчетом от нуля:
| 1 2 3 4 5 6 7 8 9 10 | Sub Primer1 () Dim myArray As Variant, n As Long ', заполняя массив значениями, нумерация элементов массива начинается с нуля myArray = Array («Arch», 45, «Oak», «Club», 85,37, «Liter ", 103," Sky "," Pillar ") 'определяет относительное положение элемента в массиве, поэтому' нумерация относительных позиций начинается с единицы n = WorksheetFunction.Match (" Club ", myArray) MsgBox n 'Результат: 4 MsgBox myArray (n) 'Результат: 85,37, так как нумерация массива начинается с нуля End Sub |
Пример 2
Определение индекса элемента в массиве на основе его относительного положения, возвращаемого методом WorksheetFunction.Match:
| 1 2 3 4 5 6 7 8 9 10 11 12 | Sub Primer2 () Dim myArray (от 7 до 15) As Variant, i As Long, n As Long 'заполнение элементов массива значениями For i = от 7 до 15 myArray (i) = Choose (i, "", "" , "", "", "", "", "Арка", 45, "Дуб", "Клуб", 85,37, "Литр", 103, "Небо", "Столб") Далее n = WorksheetFunction. Match ("Club", myArray) MsgBox n 'Результат: 4' находит индекс элемента в массиве на основе его относительной позиции n = n + LBound (myArray) - 1 MsgBox myArray (n) 'Результат: Club End Sub |
Пример 3
Определение адреса ячейки на листе на основе относительного положения этой ячейки в указанном диапазоне, найденном методом WorksheetFunction.Match:
| 1 2 3 4 5 6 7 8 9 10 | Sub Primer3 () Dim n As Long n = WorksheetFunction.Match ("Keyfob", Range ("B1400: B1410"), 0) With Range ("B1400: B1410") MsgBox "Value =" & .Cells (n) & vbNewLine & _ "Address =" & .Cells (n) .Address & vbNewLine & _ "String =" & .Cells (n) .Row & vbNewLine & _ "Column =" & .Cells (n) .Column End with End Sub |





