Метод WorksheetFunction.Match

Автор: | 26.02.2022

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