Jak używać INDEX MATCH w Excelu VBA

  • Udostępnij To
Hugh West

Możesz wykorzystać wbudowane w arkusz Excel funkcje, takie jak np. Funkcja VLOOKUP , Funkcja CHOOSE i Funkcja PMT w swoim kodzie VBA i aplikacjach. W rzeczywistości większość Excel funkcje arkusza mogą być dostępne i używane w VBA kod . Like use Funkcje arkusza INDEX & MATCH w kodzie VBA programu Excel.

Dlaczego chciałbyś używać Excel Arkusz roboczy funkcje w twoim VBA kod Nie musisz również wymyślać własnych funkcji, chyba że naprawdę musisz, jeśli funkcjonalność już istnieje. Wszystko, co w zasadzie musisz zrobić, to uzyskać dostęp do funkcji, której potrzebujesz, ponieważ już tam jest i nie ma potrzeby ponownego wymyślania koła.

Zacznijmy więc od przykładu pokazującego, jak używać INDEX MATCH z wykorzystaniem programu Excel VBA.

Będziemy wykorzystywać INDEX oraz MATCH Funkcje w Excel VBA kod Za pomocą formularza użytkownik wybiera imię ucznia, a następnie pobierana jest i zwracana odpowiednia płeć ucznia oraz kolor oczu.

Pobierz Zeszyt ćwiczeń

Proszę pobrać zeszyt ćwiczeń do samodzielnego przećwiczenia.

INDEX-MATCH.xlsx

9 prostych kroków jak używać INDEX i MATCH w kodzie VBA

Na stronie INDEX oraz MATCH Funkcje są często używane w połączeniu w formułach, w celu wykonania zaawansowanych wyszukiwań. Obie w połączeniu oferują pewne korzyści w stosunku do VLOOKUP .

Omówiliśmy już szczegółowo, jak używać INDEX oraz MATCH aby wykonać zaawansowane wyszukiwanie w Excel podręcznik jako prosta formuła arkusza, w poprzedni tutorial Zobaczymy teraz, jak używać INDEX oraz MATCH Funkcje razem w VBA kod w celu nadania funkcjonalności podobnej do tej, jaką ma look up UserForm będziemy tworzyć.

Krok1: Zastosowanie funkcji INDEX i MATCH w zbiorze danych

  • Zaczynamy od dwóch arkuszy w naszym skoroszycie z obsługą makr. Jeden to pusty arkusz o nazwie UserForm , drugi to arkusz o nazwie StudentInformacje , który zawiera zakres pokazujący imiona uczniów, ich płeć i kolor oczu jak pokazano poniżej.

Przypomnijmy sobie szybko, że gdybyśmy chcieli użyć INDEX oraz MATCH Funkcje w jednej formule, w rzeczywistym arkuszu, aby podać nam płeć nazwiska ucznia, którego chcemy wyszukać. Użylibyśmy następującej formuły:

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

  • Po naciśnięciu CTRL-ENTER , otrzymujemy wartość Females zwróconą, jako płeć jak pokazano poniżej.

Krok 2: Zmień nazwę kolumny B na StudentNames

  • Nadamy teraz nazwę zakresowi A2: A31 , StudentNames jak pokazano poniżej.

  • Ukryj StudentInformacje arkusza, klikając prawym przyciskiem myszy i wybierając Schowaj się. Dobrym pomysłem jest powierzchowne ukrycie arkuszy zaplecza, które zawierają informacje, których nie chcesz, aby użytkownik edytował lub widział.

Krok 3: Otwórz okno Visual Basic

  • Teraz z aktywnym arkuszem UserForm przechodzimy do Developer> Code> Visual Basic w celu otwarcia Edytor Visual Basic (VBE) .
  • Raz w Interfejs VBE , przechodzimy do Insert, UserForm jak na rysunku poniżej.

Krok 4: Zmień właściwości i dodaj pola tekstowe

  • Używanie Właściwości Okno , zmienimy nazwę naszego formularza na StudentLookup zmienić Caption na Lookup Student Information, zmienić BackColor na jasnoniebieski, a wysokość ustaw na 300 px, a szerokość do 350 px. Jeśli okno właściwości nie jest wyświetlane, naciśnij przycisk F4 na klawiaturze, aby go zobaczyć.

  • Teraz wstawimy etykietę używając Skrzynka narzędziowa (jeśli nie widzisz Toolbox, z jakiegoś powodu przejdź do View, Skrzynka narzędziowa ), zmienimy Caption na Choose a student i zmienimy BackColor w tym przypadku na biały. Ustawimy czcionkę na Georgia , styl czcionki do pogrubiona , rozmiar czcionki do 12 , oraz centrum Wyrównanie tekstu. Zastosowany zostanie efekt specjalny 1- fmSpecialEffectRaised jak pokazano poniżej.

  • Teraz wstawimy pole kombi poniżej etykiety. Nazwij to pole kombi cmdStudentName i dla RowSource , typ StudentNames.

  • Aby zobaczyć efekt ustawienia RowSource pola kombi, Kliknij Bieg Sub/UserForm przycisk .
  • Teraz z powodu ustawienia RowSource do nazwanego zakresu, gdy użytkownik kliknie strzałkę rozwijaną na formularzu UserForm, pole kombi pokazuje nazwiska studentów z nazwanego zakresu, automatycznie, jak pokazano poniżej.

  • Zamknij formularz UserForm klikając na przycisk zamknij.Naciśnij Alt-F11 aby wrócić do VBE .
  • Po powrocie do VBE Dodajemy kolejną etykietę do formularza UserForm (pod polem kombi) i zmieniamy opcję Caption do Płeć i zmienimy BackColor w tym przypadku na biały. Ustawimy czcionkę na Georgia , styl czcionki do pogrubiona , rozmiar czcionki do 12 , oraz centrum Wyrównanie tekstu. Zastosowany zostanie efekt specjalny 1- fmSpecialEffectRaised jak pokazano poniżej.

  • Utwórz pole tekstowe pod Płeć etykieta i nadać mu nazwę txtGender .
  • Dodaj inna etykieta o nazwie Oko Kolor oraz pole tekstowe o nazwie txtEyeColour jak pokazano poniżej. Użyj te same właściwości dla etykiety, co dla dwóch innych etykiet dodanych wcześniej do formularza, aby zapewnić, że UserForm ma spójny wygląd.

  • Teraz Wybierz wszystkie elementy sterujące, dodane do UserForm ...jak dotąd za pomocą klawisza Control.

  • Centrum poziomo, jak pokazano poniżej.

Read More: Jak używać formuły INDEX MATCH w Excelu (9 przykładów)

Podobne lektury

  • Excel INDEX MATCH Jeśli komórka zawiera tekst
  • Jak używać formuły INDEX-MATCH w Excelu do generowania wielu wyników
  • Indeks dopasowania sumy wielu wierszy w Excelu (3 sposoby)
  • Learn Excel VBA Programming & Macros (Free Tutorial - Krok po kroku)
  • 22 Przykłady makr w Excelu VBA

Krok 5: Dodaj przycisk z Przybornika

  • Następny, Dodaj przycisk do formularza za pomocą Skrzynka narzędziowa . Zmiana the Nazwa przycisku, aby cmdLookUp , BackColor do jasnopomarańczowego, trzymaj Tahoma czcionka i zmiana styl do pogrubiona , na koniec zmień Caption przycisku, aby Spójrz w górę Student Szczegóły jak pokazano poniżej.

Krok 6: Wstaw kod VBA

  • Kliknij prawym przyciskiem myszy na stronie , nowo dodany przycisk, oraz wybierz Zobacz Kod .

  • Wprowadź następujący kod dla zdarzenia kliknięcia przycisku:

 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 

Zaczynamy od deklaracji trzy zmienne i przypisanie wariantowego typu danych do tych zadeklarowanych wariantowych typów danych. Wariantowy typ danych jest dobrym typem danych na początek. Ponieważ podczas pracy z arkusz roboczy funkcje , możesz nie zawsze być pewien wyjść. Dlatego użyj wariantowego typu danych, gdy zaczynasz.

Później warto użyć jednego z innych, bardziej specyficznych typów danych, np. liczba całkowita lub sznurek. W przypadku bardziej zaawansowanego dłuższego kodu typ danych variant nie wykorzystuje pamięci tak efektywnie jak pozostałe typy danych.

Zmienna a pobiera wartość z opcji, którą użytkownik wybiera w rozwijanym polu kombi na UserForm Jeśli nie ma wyboru, to wszystkie pozostałe pola tekstowe są pusty .

Jeśli wybierzesz nazwisko ucznia z listy combo skrzynka na UserForm, wtedy zmienna b pobiera wartość za pomocą INDEX Arkusz roboczy Funkcja w połączeniu z MATCH Funkcja w VBA kod, jak pokazano.

Wyszukuje on wartość, używając w zasadzie tej samej składni, co funkcja arkusza. Podczas używania funkcji arkusza w VBA , VBA IntelliSense w tym konkretnym przypadku nie jest zbyt intuicyjny Dlatego zalecana jest znajomość składni pochodzącej z arkusza kalkulacyjnego. Zmienna c wyciąga wartość za pomocą INDEX Arkusz roboczy Funkcja w połączeniu z MATCH Funkcja w VBA kod, gdy użytkownik wybierze opcję z pola kombi.

Zmienna b uzyskuje wartość z gender kolumna w arkuszu, natomiast zmienna c pobiera wartość z kolumny Kolor oczu w arkuszu.

Pole tekstowe "płeć" jest wypełnione b a pole tekstowe Kolor oczu zostanie wypełnione wartością c 'wartość.

Read More: Zdarzenia VBA w Excelu (kompletny poradnik)

Krok 7: Wstaw przycisk poleceń

  • Teraz przejdź do arkusza o nazwie UserForm w swoim zeszycie. Format go, jak pokazano poniżej, oraz wstawić obraz dostarczony przez ExcelWIKI .

  • Idź do Developer> Controls> Insert> ActiveX Controls.

  • Wkładka przycisk jak na rysunku.

  • Przy wybranym przycisku, udać się do Developer> Controls> Właściwości .

  • Zmiana the Nazwa przycisku, aby cmdShowForm i Caption do Lookup Informacje dla studentów .

Krok 8: Wyświetlenie kodu wyszukiwania

  • Kliknij prawym przyciskiem myszy na stronie przycisk i wybierz Wyświetl kod jak pokazano poniżej.

  • Wpisz następujący kod:
 Private Sub cmdShowForm_Click() StudentLookup.Show End Sub 

Krok 9: Wystawienie wyniku końcowego

  • Wróć do arkusz roboczy. Upewnij się, że niezaznaczone Projekt Tryb .
  • Kliknij przycisk w celu wyświetlenia formularza.

  • Wybierz imię i nazwisko ucznia przy użyciu kombi Kod automatycznie zwróci płeć ucznia i kolor oczu.

Pamiętaj, aby uratować swój skoroszyt jako skoroszyt z obsługą makr jeśli jeszcze tego nie zrobiłeś i masz, używamy INDEX & MATCH Funkcje arkusza w Excelu kod VBA w celu utworzenia formularza lookup.

Read More: Excel INDEX-MATCH Formuła, aby zwrócić wiele wartości poziomo

Wniosek

Excel posiada wiele przydatnych funkcje arkusza który może być wykorzystany w VBA , jak jak, używając Funkcje arkusza INDEX & MATCH w kodzie VBA programu Excel. Te funkcje pozwolą Ci rozszerzyć VBA kod. Jeśli już wiesz jak działają w standardzie Excel wtedy krzywa uczenia się nie jest tak wielka poprzez dostosowanie wiedzy dla VBA . Dostęp do funkcji arkusza, w swoim VBA kod może być prawdziwą oszczędnością czasu, ponieważ nie trzeba tworzyć własnych funkcji dla funkcjonalności, która już istnieje.

Zapraszamy do komentowania i mówienia, czy używasz funkcji arkusza kalkulacyjnego w swoim kodzie VBA i aplikacjach.

Sekcja przeglądowa: Sprawdź swoje zrozumienie

1) Ustaw w kolumnie A prostą listę trzech pozycji, a mianowicie mandarynek, marchewek i pomarańczy, następnie w komórce obok każdej pozycji w kolumnie B napisz, czy pozycje z kolumny A są owocami czy warzywami, po zakończeniu ustawiania przykładowych danych użyj INDEX & MATCH funkcja łączenia w celu dostarczenia informacji, czy marchew jest owocem czy warzywem.

2) Użyj tego zestawu danych z ESPN na temat głównych trenerów NFL i odpowiednich drużyn, których są trenerami. Utwórz formularz użytkownika, który pozwala użytkownikowi wprowadzić nazwisko określonego trenera w polu tekstowym, a następnie mieć drużynę, której jest trenerem, dostarczoną w innym polu tekstowym, gdy użytkownik kliknie wyślij. Użyj INDEX & MATCH kombinacji funkcji arkusza w Twoim kodzie VBA.

Hugh West jest bardzo doświadczonym trenerem i analitykiem Excela z ponad 10-letnim doświadczeniem w branży. Posiada tytuł licencjata w dziedzinie rachunkowości i finansów oraz tytuł magistra administracji biznesowej. Hugh ma pasję do nauczania i opracował unikalne podejście do nauczania, które jest łatwe do naśladowania i zrozumienia. Jego specjalistyczna wiedza na temat programu Excel pomogła tysiącom studentów i profesjonalistów na całym świecie doskonalić swoje umiejętności i osiągać doskonałe wyniki w karierze. Za pośrednictwem swojego bloga Hugh dzieli się swoją wiedzą ze światem, oferując bezpłatne samouczki programu Excel i szkolenia online, aby pomóc osobom indywidualnym i firmom w pełni wykorzystać swój potencjał.