Как да използвате INDEX MATCH с Excel VBA

  • Споделя Това
Hugh West

Можете да използвате вградените функции на работния лист на Excel, като например Функция VLOOKUP . Функция CHOOSE и Функция PMT в кода и приложенията на VBA. Excel функциите на работния лист могат да се достъпват и използват в VBA код . Като използване INDEX & MATCH Функции на работния лист в Excel VBA код.

Защо искате да използвате Excel Работен лист функции във вашия VBA код ? Ами за да разширите функционалността на кода, който използвате. Освен това не е необходимо да измисляте свои собствени функции, освен ако наистина не е необходимо, ако функционалността вече е налице. Всичко, което трябва да направите, е да получите достъп до функцията, от която се нуждаете, тъй като тя вече е налице, и тогава няма нужда да изобретявате колелото.

Нека започнем с пример, който показва как да използвате INDEX MATCH с Excel VBA.

Ще използваме INDEX и MATCH Функции в Excel VBA код , за да се създаде прост формуляр UserForm. С помощта на формуляра потребителят избира име на ученик, след което се извлича и връща съответният пол на посочения ученик и цвят на очите.

Изтегляне на работна тетрадка за практика

Моля, изтеглете работната тетрадка, за да се упражнявате сами.

INDEX-MATCH.xlsx

9 лесни стъпки за използване на INDEX и MATCH в кода на VBA

Сайтът INDEX и MATCH Функциите често се използват в комбинация във формулите, за да се извършват разширени търсения. Двете в комбинация предлагат някои предимства пред VLOOKUP .

Вече разгледахме подробно как да използвате INDEX и MATCH за извършване на разширени търсения в Excel работна книга като обикновена формула в работен лист, в предишен урок Сега ще видим как да използваме INDEX и MATCH Функции заедно в VBA код , за да се придаде подобна функционалност на функцията за търсене Потребителски формуляр ще създадем.

Стъпка 1: Прилагане на функциите INDEX и MATCH в набора от данни

  • Започваме с два листа в нашата работна книга с активирани макроси. Единият е празен лист, наречен Потребителски формуляр , а другият е лист, наречен StudentInformation , която съдържа диапазон, показващ имената на учениците, съответния им пол и цвят на очите както е показано по-долу.

Нека бързо си припомним, че ако искахме да използваме INDEX и MATCH Функции в една формула, в действителния работен лист, за да ни даде пола на името на ученика, който искаме да потърсим. Ще използваме следната формула:

=INDEX(B2:B31, MATCH("Diana Graham", A2:A31, 0))

  • При натискане на CTRL-ENTER , получаваме върнатата стойност Females като пол, както е показано по-долу.

Стъпка 2: Променете името на колона B в StudentNames

  • Сега ще дадем име на обхвата A2: A31 , Имената на учениците както е показано по-долу.

  • Скрийте StudentInformation лист, като щракнете с десния бутон на мишката и изберете Скрийте. Добра идея е да скриете повърхностно работните листове на гърба, които съдържат информацията, която не искате потребителят да редактира или вижда.

Стъпка 3: Отваряне на прозореца Visual Basic

  • Сега, когато листът UserForm е активиран, отиваме в Програмист> Код> Visual Basic за да отворите Редактор на Visual Basic (VBE) .
  • Веднъж в Интерфейс VBE , отиваме на Insert, UserForm, както е показано по-долу.

Стъпка 4: Промяна на свойствата и добавяне на текстови полета

  • Използване на Имоти Прозорец , ще преименуваме формуляра си на StudentLookup , променете заглавието на Търсене на информация за ученика, променете BackColor на светлосиньо и задайте височина на 300 px, а ширината - на 350 px. Ако прозорецът със свойства не се показва, натиснете бутона F4 на клавиатурата, за да го видите.

  • Сега ще вмъкнем етикет, като използваме Кутия с инструменти (ако по някаква причина не можете да видите Кутията с инструменти, отидете в Преглед, Кутия с инструменти ), променете заглавието на "Изберете ученик" и ще променим BackColor на бяло в този случай. Ще настроим шрифта на Грузия , стила на шрифта до удебелен шрифт , размера на шрифта на 12 , и център Използваният специален ефект ще бъде 1- fmSpecialEffectRaised както е показано по-долу.

  • Сега ще вмъкнем кутия с комбинации под етикета. Наречете тази кутия с комбинации cmdStudentName и за RowSource , тип Имената на учениците.

  • За да видите ефекта от задаването на RowSource на полето за избор, Кликнете върху Изпълнението Sub/UserForm бутон .
  • Сега заради настройката на RowSource към посочения диапазон, когато потребителят щракне върху падащата стрелка на формата UserForm, комбинационният прозорец автоматично показва имената на учениците от посочения диапазон, както е показано по-долу.

  • Затворете UserForm, като щракнете върху бутона за затваряне. Alt-F11 за да се върнете към VBE .
  • След като се върна в VBE , добавете още един етикет към UserForm (под полето с комбинации) и променете Заглавие към Пол и ще променим BackColor на бяло в този случай. Ще настроим шрифта на Грузия , стила на шрифта до удебелен шрифт , размера на шрифта на 12 , и център Използваният специален ефект ще бъде 1- fmSpecialEffectRaised както е показано по-долу.

  • Създаване на текстово поле под Пол етикет и го назовете txtGender .
  • Добавяне на друг етикет, наречен Очи Цвят и текстово поле с име txtEyeColour както е показано по-долу. Използвайте същите свойства на етикета, както и на другите два етикета, добавени преди това към формуляра, за да се гарантира, че Потребителски формуляр има последователен вид.

  • Сега Изберете всички контроли, добавени към Потребителски формуляр , като досега сте използвали клавиша за управление.

  • Център хоризонтално, както е показано по-долу.

Прочетете още: Как да използвате формулата INDEX MATCH в Excel (9 примера)

Подобни четива

  • Excel INDEX MATCH Ако клетката съдържа текст
  • Как да използвате формулата INDEX-MATCH в Excel за генериране на множество резултати
  • Индексно съвпадение на сумата на множество редове в Excel (3 начина)
  • Научете Excel VBA програмиране & макроси (безплатен урок - стъпка по стъпка)
  • 22 примера за макроси в Excel VBA

Стъпка 5: Добавяне на бутон от кутията с инструменти

  • Следващия, Добавяне на бутон към формата с помощта на Кутия с инструменти . Промяна на Име на бутона, за да cmdLookUp . BackColor до светлооранжево, запазете Tahoma шрифт и промяна стила към удебелен шрифт , накрая променете Заглавие на бутона, за да Вижте нагоре Студент Подробности както е показано по-долу.

Стъпка 6: Вмъкване на код VBA

  • Кликнете с десния бутон на мишката върху , новодобавения бутон, и изберете Вижте Код .

  • Въведете следния код за събитието щракване върху бутона:

 Dim a As Variant Dim b As Variant Dim c As Variant a = cmdStudentName.Value Sheets("StudentInformation").Activate If a = "" Then b = "" Let txtGender.Text = b c = "" Let txtEyeColour.Text = c Else b = Application.WorksheetFunction.Index(Sheets("StudentInformation").Range("B2:B31"), Application.WorksheetFunction.Match(a, Sheets("StudentInformation").Range("A2:A31"), 0)) c =Application.WorksheetFunction.Index(Sheets("StudentInformation").Range("C2:C31"), Application.WorksheetFunction.Match(a, Sheets("StudentInformation").Range("A2:A31"), 0)) Let txtEyeColour.Text = c End If 

Започваме с деклариране на три променливи и присвояване на типа данни вариант към тези декларирани типове данни вариант. Типът данни вариант е добър тип данни за начало. Защото при работа с работен лист функции , невинаги можете да сте сигурни за изходите. Затова, когато започвате, използвайте типа данни вариант.

По-късно е препоръчително да се използва някой от другите по-специфични типове данни, като например цяло число или низ. При по-усъвършенстван дълъг код типът данни вариант не използва паметта толкова ефективно, колкото другите типове данни.

Променлива a извличане на стойността от опцията, която потребителят избира в падащото поле на Потребителски формуляр Ако няма избор, всички останали текстови полета са празен .

Ако изберете име на ученик от комбиниран кутия на UserForm, тогава променливата b получава стойност с помощта на INDEX Работен лист Функция в комбинация с MATCH Функция в VBA код, както е показано.

Тя търси стойността, като използва същия синтаксис като функцията на работния лист. Когато използвате функции на работния лист в VBA . VBA IntelliSense в този конкретен случай не е много интуитивен , поради което се препоръчва познаване на синтаксиса, придобит от знанията за работните листове. Променлива c черпи стойност с помощта на INDEX Работен лист Функция в комбинация с MATCH Функция в VBA код, когато потребителят избере опция от полето за избор.

Променлива b придобива стойност от пол колона в работния лист, докато променлива c получава стойност от колоната Цветът на очите в работния лист.

Текстовото поле за пол се попълва с b и текстовото поле за цвят на очите се попълва с c стойност.

Прочетете още: Събития в Excel VBA (пълно ръководство)

Стъпка 7: Вмъкване на команден бутон

  • Сега отидете в работния лист, наречен Потребителски формуляр във вашата работна книга. Формат както е показано по-долу, и вмъкнете изображението, предоставено от ExcelWIKI .

  • Отидете на Разработчик> Контроли> Вмъкване> ActiveX контроли.

  • Вмъкване на бутон, както е показано.

  • При избран бутон, отидете в Разработчик> Контроли> Свойства .

  • Промяна на Име на бутона, за да cmdShowForm и Заглавие към Преглед на Информация за ученика .

Стъпка 8: Преглед на кода за търсене

  • Кликнете с десния бутон на мишката върху бутона и изберете Вижте кода както е показано по-долу.

  • Въведете следния код:
 Private Sub cmdShowForm_Click() StudentLookup.Show End Sub 

Стъпка 9: Излагане на крайния резултат

  • Връщане на към работен лист. Уверете се, че не е поставена отметка Дизайн Режим .
  • Кликнете върху бутона, за да се покаже формата.

  • Изберете име на ученик с помощта на Комбинирано поле . Кодът ще върне автоматично пола и цвета на очите на ученика.

Не забравяйте да спаси вашата работна книга като работна книга с активирани макроси , ако все още не сте го направили и ето, че използваме Функции на работния лист INDEX & MATCH в кода на Excel VBA за да създадете форма за търсене.

Прочетете още: Формула INDEX-MATCH на Excel за връщане на множество стойности хоризонтално

Заключение

Excel има много полезни функции на работния лист , които могат да се използват в VBA , като като, като, като, като INDEX & MATCH Функции на работния лист в Excel VBA код. Тези функции ще ви позволят да разширите VBA код. Ако вече знаете как работят в стандартен Excel След това кривата на обучението не е толкова голяма, като се адаптират знанията за VBA . Достъп до функциите на работния лист, в VBA код защото не е необходимо да се разработват потребителски функции за функционалност, която вече е налична.

Моля, не се колебайте да коментирате и да ни кажете дали използвате функции на работния лист във вашия VBA код и приложения.

Раздел за преглед: Проверете разбирането си

1) Създайте прост списък в колона А от три елемента, а именно мандарини, моркови и портокали, след което в клетката до всеки елемент в колона Б посочете дали елементите в колона А са плодове или зеленчуци, след като приключите със създаването на извадката, използвайте INDEX & MATCH комбинирана функция за определяне на това дали морковите са плодове или зеленчуци.

2) Използвайте този набор от данни от ESPN за старши треньорите от NFL и съответния отбор, който те тренират. Създайте потребителска форма, която позволява на потребителя да въведе името на определен треньор в текстово поле. След това нека отборът, който той тренира, да се предостави в друго текстово поле, когато потребителят щракне върху бутона "Изпрати". INDEX & MATCH комбинация от функции на работния лист в кода VBA.

Хю Уест е опитен обучител и анализатор на Excel с над 10 години опит в индустрията. Има бакалавърска степен по счетоводство и финанси и магистърска степен по бизнес администрация. Хю има страст към преподаването и е разработил уникален подход на преподаване, който е лесен за следване и разбиране. Неговите експертни познания по Excel са помогнали на хиляди студенти и професионалисти по целия свят да подобрят уменията си и да постигнат отлични резултати в кариерата си. Чрез своя блог Хю споделя знанията си със света, като предлага безплатни уроци за Excel и онлайн обучение, за да помогне на хората и фирмите да достигнат пълния си потенциал.