Метод WorksheetFunction.Match

На чтение
3 мин
Дата обновления
22.09.2025
Excel: базовый курс
Курс Excel: базовый курс поможет вам освоить один из самых востребованных инструментов для работы с данными. В процессе обучения вы не только получите теоретические знания, но и отработаете практические навыки, такие как создание формул, работа с таблицами и визуализация данных. Участвуйте в реальных кейсах и выполняйте практические задания, чтобы создать портфолио и получить сертификат, подтверждающий ваши новые компетенции!
15000 ₽26316 ₽
Подробнее
#COURSE#

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