Метод 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 |