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

  • Поделись Этим
Hugh West

Вы можете использовать встроенные функции рабочего листа Excel, такие как Функция VLOOKUP , the Функция ВЫБОР и Функция PMT в вашем коде VBA и приложениях. На самом деле, большинство из Excel функции рабочего листа могут быть доступны и использованы в VBA код . Как использовать Функции рабочей таблицы INDEX & MATCH в коде Excel VBA.

Почему вы хотите использовать Excel Рабочий лист функции в вашем VBA код Кроме того, вам не нужно придумывать собственные функции, если в этом нет необходимости, если функциональность уже существует. Все, что вам нужно сделать, это получить доступ к нужной функции, поскольку она уже существует, и нет необходимости изобретать колесо.

Итак, давайте начнем с примера, показывающего, как использовать INDEX MATCH с помощью Excel VBA.

Мы собираемся использовать ИНДЕКС и МАТЧ Функции в Excel VBA код С помощью этой формы пользователь выбирает имя студента, затем извлекает и возвращает соответствующий пол студента и цвет глаз.

Скачать Рабочую тетрадь для практических занятий

Пожалуйста, скачайте рабочую тетрадь для самостоятельной тренировки.

INDEX-MATCH.xlsx

9 простых шагов по использованию INDEX и MATCH в коде VBA

Сайт ИНДЕКС и МАТЧ Функции часто используются в комбинации в формулах для выполнения расширенного поиска. Эти две функции в комбинации дают определенные преимущества по сравнению с VLOOKUP .

Мы уже подробно рассказывали, как использовать ИНДЕКС и МАТЧ для выполнения расширенного поиска в Excel рабочая тетрадь как прямая формула рабочего листа, в предыдущий учебник Сейчас мы рассмотрим, как использовать ИНДЕКС и МАТЧ Функционирует вместе в VBA код для того, чтобы предоставить аналогичную функциональность для поиска UserForm мы собираемся создать.

Шаг1: Применение функций INDEX и MATCH в наборе данных

  • Мы начинаем с двух листов в нашей рабочей книге с поддержкой макросов. Один из них - пустой лист под названием UserForm , другой - лист под названием Информация о студенте , который содержит диапазон, показывающий имена студентов, их соответствующий пол и цвет глаз как показано ниже.

Давайте быстро напомним себе, что если бы мы хотели использовать ИНДЕКС и МАТЧ Функции в одной формуле, в фактическом рабочем листе, чтобы дать нам пол имени студента, которого мы хотим найти. Мы бы использовали следующую формулу:

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

  • При нажатии CTRL-ENTER мы получим значение Females, как показано ниже.

Шаг 2: Измените название столбца B на StudentNames

  • Теперь мы дадим имя диапазону A2: A31 , Имена студентов как показано ниже.

  • Скрыть Информация о студенте лист, щелкнув правой кнопкой мыши и выбрав Скрыть. Хорошая идея - поверхностно скрыть внутренние рабочие листы, содержащие информацию, которую вы не хотите, чтобы пользователь редактировал или видел.

Шаг 3: Открыть окно Visual Basic

  • Теперь, когда лист UserForm активирован, мы переходим в раздел Разработчик> Код> Visual Basic для того, чтобы открыть Редактор Visual Basic (VBE) .
  • Однажды в Интерфейс VBE Переходим в Insert, UserForm, как показано ниже.

Шаг 4: Изменение свойств и добавление текстовых полей

  • Использование Свойства Окно , мы переименуем нашу форму в StudentLookup измените надпись на "Поиск информации о студентах", измените команду BackColor на светло-голубой, и установите высоту 300 px, а ширина - 350 px. Если окно свойств не отображается, нажмите кнопку F4 на клавиатуре, чтобы увидеть его.

  • Теперь мы вставим метку, используя Ящик для инструментов (если вы по какой-то причине не видите панель инструментов, перейдите в меню Вид, Ящик для инструментов ), изменим Caption на Choose a student и изменим BackColor в данном случае белый. Мы установим шрифт на Грузия , стиль шрифта полужирный , размер шрифта до 12 , и центр выровнять текст. Используемый специальный эффект будет следующим 1- fmSpecialEffectRaised как показано ниже.

  • Теперь мы вставим комбинированное поле под меткой. Назовем это комбинированное поле cmdStudentName и для параметра RowSource , тип Имена студентов.

  • Для того чтобы увидеть эффект от установки RowSource комбинированного окна, Нажмите бег Sub/UserForm кнопка .
  • Теперь из-за установки RowSource в именованный диапазон, когда пользователь нажимает на выпадающую стрелку в UserForm, в комбинированном окне автоматически отображаются имена студентов из именованного диапазона, как показано ниже.

  • Закройте форму UserForm, нажав на кнопку закрытия. Нажмите кнопку Alt-F11 для того, чтобы вернуться к VBE .
  • Вернувшись в VBE добавьте еще одну метку в форму UserForm (ниже комбинированного окна) и измените параметр Надпись на Пол и мы изменим BackColor в данном случае белый. Мы установим шрифт на Грузия , стиль шрифта полужирный , размер шрифта до 12 , и центр выровнять текст. Используемый специальный эффект будет следующим 1- fmSpecialEffectRaised как показано ниже.

  • Создать текстовое поле под Пол этикетка , и назовите его txtGender .
  • Добавить другой ярлык под названием Глаз Цвет и текстовое поле с именем txtEyeColour как показано ниже. Используйте те же свойства для метки, что и для двух других меток, ранее добавленных в форму, для того, чтобы гарантировать, что UserForm имеет последовательный вид.

  • Сейчас Выберите все элементы управления, добавленные к UserForm , до сих пор используя клавишу управления.

  • Центр горизонтально, как показано ниже.

Читать далее: Как использовать формулу INDEX MATCH в Excel (9 примеров)

Похожие чтения

  • Excel INDEX MATCH If Cell Contains Text
  • Как использовать формулу INDEX-MATCH в Excel для получения нескольких результатов
  • Сумма нескольких строк в Excel (3 способа)
  • Изучите программирование Excel VBA и макросы (бесплатный учебник - шаг за шагом)
  • 22 примера макросов в Excel VBA

Шаг 5: Добавление кнопки из панели инструментов

  • Следующий, Добавить кнопку на форму с помощью Ящик для инструментов . Изменить сайт Имя кнопки, чтобы cmdLookUp , the 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 

Начнем с того, что объявим три переменные и присвоить тип данных варианта этим объявленным типам данных варианта. Тип данных варианта является хорошим типом данных для начала. Потому что при работе с рабочий лист функции Поэтому в начале работы используйте вариативный тип данных.

В дальнейшем рекомендуется использовать один из других более специфических типов данных, таких как целое число или струна. Для более продвинутого длинного кода тип данных variant использует память не так эффективно, как другие типы данных.

Переменная a взять значение из опции, которую пользователь выбирает в выпадающем комбинированном окне на экране UserForm Если выбора нет, то все остальные текстовые поля будут выделены. пустой .

Если вы выберете имя студента из комбо ящик на UserForm, тогда переменная b получает значение с помощью ИНДЕКС Рабочий лист Функция в сочетании с МАТЧ Функция в VBA код, как показано на рисунке.

Она ищет значение, используя практически тот же синтаксис, что и функция рабочего листа. При использовании функций рабочего листа в VBA , the VBA IntelliSense в данном конкретном случае не очень интуитивно понятный поэтому рекомендуется знакомство с синтаксисом, полученным из знания рабочего листа. Переменная c рисует значение с помощью ИНДЕКС Рабочий лист Функция в сочетании с МАТЧ Функция в VBA код, когда пользователь выбирает опцию из комбинированного окна.

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

Текстовое поле "Пол" заполняется b 'значение, а текстовое поле цвета глаз заполняется значением c 'значение.

Читать далее: События Excel VBA (полное руководство)

Шаг 7: Вставка командной кнопки

  • Теперь перейдите к рабочему листу под названием UserForm в вашей рабочей тетради. Формат как показано ниже, и вставить изображение, предоставленное ExcelWIKI .

  • Перейти к Разработчик> Элементы управления> Вставка> Элементы ActiveX.

  • Вставка кнопку, как показано на рисунке.

  • При выбранной кнопке, перейти к Разработчик> Управление> Свойства .

  • Изменить сайт Имя кнопки, чтобы cmdShowForm и Надпись на Поиск Информация о студентах .

Шаг 8: Просмотр кода поиска

  • Щелкните правой кнопкой мыши кнопку и выберите Посмотреть код как показано ниже.

  • Введите следующий код:
 Private Sub cmdShowForm_Click() StudentLookup.Show End Sub 

Шаг 9: Выставление окончательного результата

  • Возврат к рабочий лист. Убедитесь, что снят флажок Дизайн Режим .
  • Нажмите кнопку, чтобы показать форму.

  • Выберите имя студента с помощью комбинированное окно Код автоматически возвращает пол и цвет глаз студента.

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

Читать далее: Формула Excel INDEX-MATCH для возврата нескольких значений по горизонтали

Заключение

Excel имеет множество полезных функции рабочего листа которые могут быть использованы в VBA , как, как, как, используя Функции рабочей таблицы INDEX & MATCH в коде Excel VBA. Эти функции позволят вам расширить ваши VBA код. Если вы уже знаете, как они работают в стандартном Excel тогда кривая обучения не так велика, если адаптировать знания для VBA . Доступ к функциям рабочего листа, в своем VBA код может стать настоящей экономией времени. Ведь не нужно разрабатывать собственные функции для уже имеющейся функциональности.

Пожалуйста, оставляйте комментарии и расскажите нам, используете ли вы функции рабочего листа в своем VBA-коде и приложениях.

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

1) Создайте простой список в столбце A из трех предметов, а именно мандаринов, моркови и апельсинов, затем в ячейке рядом с каждым предметом в столбце B укажите, являются ли предметы в столбце A фруктами или овощами. ИНДЕКС & МАТЧ комбинированная функция, позволяющая определить, является ли морковь фруктом или овощем.

2) Используйте этот набор данных от ESPN о главных тренерах НФЛ и соответствующих командах, которые они тренируют. Создайте пользовательскую форму, которая позволит пользователю ввести имя определенного тренера в текстовое поле. Затем пусть команда, которую он тренирует, будет выведена в другое текстовое поле, когда пользователь нажмет кнопку отправки. Используйте ИНДЕКС & МАТЧ комбинацию функций рабочего листа в коде VBA.

Хью Уэст — опытный тренер и аналитик Excel с более чем 10-летним опытом работы в отрасли. Он имеет степень бакалавра в области бухгалтерского учета и финансов и степень магистра делового администрирования. Хью страстно любит преподавать и разработал уникальный подход к обучению, которому легко следовать и который легко понять. Его экспертные знания Excel помогли тысячам студентов и специалистов по всему миру улучшить свои навыки и преуспеть в своей карьере. В своем блоге Хью делится своими знаниями со всем миром, предлагая бесплатные учебные пособия по Excel и онлайн-обучение, чтобы помочь отдельным лицам и компаниям полностью раскрыть свой потенциал.