Excel VBA Match Function

VBA Match Function търси позицията или номера на реда на търсената стойност в масива на таблицата, т.е. в основната таблица на excel. Например VLOOKUP, HLOOKUP, MATCH, INDEX и др. Това са функциите за търсене, които са по-важни от другите. За съжаление, ние нямаме същите функции, налични в VBA за улесняване на нещата. Въпреки това, можем да използваме тези функции като функции на работния лист под VBA скрипта, за да улесним живота си.

Днес предстои да научим функцията MATCH, която може да се използва като функция на работен лист при VBA.

VBA Match има същата употреба като формулата Match в Excel. Тази функция в MS Excel VBA намира съвпадение в масив с позоваване на търсената стойност и отпечатва нейната позиция. Тази функция става полезна, когато трябва да оцените данните въз основа на определени стойности. Например, VBA MATCH е полезен, ако имате данни за заплатите на служителите и трябва да разберете числовата позиция на служител във вашите данни, който има заплата по-малка / по-голяма от / равна на определена стойност. Това е наистина полезно при анализа на данните, а също и един ред код може да автоматизира нещата за вас.

Синтаксис на функцията за съвпадение в Excel VBA

VBA Match има следния синтаксис:

Където,

  • Arg1 - Lookup_value - Стойността, която трябва да търсите в даден масив.
  • Arg2 - Lookup_array - масив от редове и колони, които съдържат възможно Lookup_value.
  • Arg3 - Match_type - Типът на мача, който приема стойност -1, 0 или 1.

Ако match_type = -1 означава, че функцията MATCH ще открие най-малката стойност, която е по-голяма или равна на стойността lookup_value. За да се случи това, lookup_array трябва да бъде сортиран в низходящ ред.

Ако match_type = 0 означава, че функцията MATCH ще открие стойността, която е абсолютно същата като тази на lookup_value.

Ако match_type = +1 означава, че функцията MATCH ще открие най-голямата стойност, която е по-малка или равна на стойността lookup_value. За да се случи това, lookup_array трябва да бъде сортиран във възходящ ред. Стойността по подразбиране за типа на съвпадение е +1.

Как да използвате Excel VBA Match function?

Ще научим как да използваме VBA Match Excel функция с няколко примера.

Можете да изтеглите този шаблон на VBA Match Excel тук - шаблон на VBA Match Excel

VBA мач функция - пример №1

Да предположим, че имаме данни, както е показано по-долу:

Трябва да намерим кой от този списък има заплата 30 000 евро, заедно с позицията в Excel.

Въпреки че в този набор от данни можем ръчно да конфигурираме това, моля, помислете за по-широка картина, ами ако имате милиони редове и колони?

Следвайте стъпките по-долу, за да използвате функцията MATCH във VBA.

Стъпка 1: Определете под-процедура, като дадете име на макрос.

Код:

 Sub exmatch1 () Край Sub 

Стъпка 2: Сега искаме изходът ни да се съхранява в клетка E2. Ето защо, започнете да пишете кода като диапазон („E2“)

Това определя обхвата на изхода за нашия резултат.

Код:

 Sub exmatch1 () Обхват ("E2"). Стойност = Край Sub 

Стъпка 3: Използвайте WorksheetFunction, за да можете да използвате VBA функции.

Код:

 Sub exmatch1 () Обхват ("E2"). Стойност = WorksheetFunction End Sub 

Стъпка 4: WorksheetFunction има различни функции, които могат да бъдат достъпни и използвани под VBA. След „WorksheetFunction“ поставете точка (.) И тогава ще можете да получите достъп до функциите. Изберете функцията MATCH от падащия списък.

Код:

 Sub exmatch1 () Обхват ("E2"). Стойност = WorksheetFunction.Match End Sub 

Стъпка 5: Сега, дайте аргументите на функцията MATCH. Като Lookup_value. Нашият Lookup_value се съхранява в клетка D2, както е показано на снимката по-долу. Можете да получите достъп до него чрез функцията MATCH, използвайки функция Range.

Код:

 Sub exmatch1 () Диапазон ("E2"). Стойност = WorksheetFunction.Match (Обхват ("D2"). Стойност, Краен Под 

Стъпка 6: Вторият аргумент е Lookup_array. Това е диапазонът на таблицата, в който искате да разберете позицията на Lookup_value. В нашия случай това е (B1: B11). Осигурете този масив с помощта на функцията Range.

Код:

 Sub exmatch1 () Обхват ("E2"). Стойност = WorksheetFunction.Match (Обхват ("D2"). Стойност, диапазон ("B1: B11"), Краен под 

Стъпка 7: Последният аргумент за този код да се изработи е Match_type. Искахме да имаме точно съвпадение за Lookup_value в даден диапазон> Следователно, дайте нула (0) като аргумент за съвпадение.

Код:

 Sub exmatch1 () Обхват ("E2"). Стойност = WorksheetFunction.Match (Обхват ("D2"). Стойност, диапазон ("B1: B11"), 0) Край Sub 

Стъпка 8: Стартирайте този код, като натиснете F5 или Run бутона и вижте изхода.

Можете да видите в Cell E2, има числова стойност (6), която показва позицията на стойността от клетка D2 през диапазон B1: B11.

Пример №2 - VBA мач функция с бримки

Лесно е, когато имате само една стойност за търсене в целия диапазон. Но какво ще стане, ако трябва да проверите позицията за редица клетки? Ще бъде сурово човек, който добавя, да го помоли да напише отделните кодове за всяка клетка.

В такива случаи функцията MATCH може да се използва с контур (особено за нашия цикъл в нашия случай). Вижте следващите стъпки, за да получите представа за това как използваме функцията MATCH с цикъл.

Стъпка 1: Определете подпроцедура, като дадете име на макрос.

Код:

 Под Пример2 () Краен Под 

Стъпка 2: Определете цяло число, което може да задържи стойността за множество клетки в цикъла.

Код:

 Sub Example2 () Dim i As Integer End Sub 

Стъпка 3: Използвайте For цикъл на цяло число, за да използвате различните стойности за търсене, чиято позиция може да бъде запазена в колона E.

Код:

 Под пример2 () Dim i като цяло число за i = 2 до 6 край Sub 

Стъпка 4: Сега използвайте същия метод, който използвахме в пример 1, само вместо Range, ще използваме функцията Cells и ще използваме двуизмерен масив (Редове и колони) за разлика от първия пример.

Код:

 Под пример2 () Dim i като цяло число за i = 2 до 6 клетки (i, 5) .Value = WorkheetFunction.Match (Клетки (i, 4) .Value, Range ("B2: B11"), 0) Next i End подводница 

Тук, клетки (i, 5) .Value = съхранява стойността на получените позиции във всеки ред от 2 до 6 (ред i) в колона E (колона номер 5). Под функция на съвпадение, клетки (i, 4) .Values ​​проверява за всяко Lookup_value, присъстващо в редове от 2 до 6 в четвъртата колона. Тази стойност на търсене след това се търси в масив B2: B11 в excel лист, където има данни и относителни позиции могат да се съхраняват във всеки ред на колона 5 (колона E).

Стъпка 5: Стартирайте този код, като натиснете едновременно F5 или Run бутона и ще видите резултата. Почти ще извади магията в парче код с един ред.

В тази статия научихме как можем да използваме функцията MATCH под VBA като специален случай на WorksheetFunction.

Неща, които трябва да запомните

  • Lookup_value може да бъде число / текст / логическа стойност или може да бъде препратка към клетка към число, текст или логическа стойност.
  • По подразбиране Match_type може да се счита за 1, ако е пропуснат / не споменат.
  • Подобно на функцията на Excel MATCH, VBA MATCH също дава относителната позиция на Lookup_value под Lookup_array, а не самата стойност.
  • Ако съвпадение не бъде намерено, относителна клетка на excel ще бъде запълнена с № N / A.
  • Ако функцията MATCH се използва за текстови стойности, тя не е в състояние да прави разлика между малки и малки букви. Например, Lalit и lalit са еднакви. Така правят LALIT и лалит.
  • Символи с подметка могат да се използват, ако установите точното съвпадение (т.е. типът на съвпадение е нула). Звездичка с символи за символи (*) може да се използва, за да разберете поредица от знаци. Докато въпросителният знак (?) Може да се използва за откриване на един знак.

Препоръчителни статии

Това е ръководство за VBA Match Function. Тук обсъждаме VBA Match и как да използваме Excel VBA Match Function, заедно с практически примери и изтеглящ се шаблон на excel. Можете да разгледате и другите ни предложени статии -

  1. Пълно ръководство за VBA при грешка
  2. Как да използвате VBA формат на номера?
  3. Функция VBA VLOOKUP с примери
  4. Създаване на VBA функция в Excel
  5. Функция за съвпадение на Excel (примери)

Категория: