Naucz się automatyzować swoje Vlookupy za pomocą Excel VBA

Naucz się automatyzować swoje Vlookupy za pomocą Excel VBA
Czytelnicy tacy jak ty pomagają wspierać MUO. Kiedy dokonujesz zakupu za pomocą linków na naszej stronie, możemy otrzymać prowizję partnerską. Czytaj więcej.

Funkcja Vlookup jest podstawową funkcją programu Excel i stała się istotną częścią przetwarzania danych. Zapewnia niektóre funkcje, które zwykle kojarzone są z pełną bazą danych.





jak posortować Gmaila według nadawcy?

Ale co, jeśli chcesz zautomatyzować tę funkcję? Tak, jest to możliwe, zwłaszcza jeśli wiesz, jak używać natywnego języka automatyzacji programu Excel, VBA. Oto jak możesz zautomatyzować funkcję wyszukiwania pionowego w Excel VBA.





WYKORZYSTAJ WIDEO DNIA

Składnia Vlookup

Składnia funkcji Vlookup jest dość prosta, ale ma cztery aspekty, na których musisz się skupić, nawet podczas automatyzacji jej w Excel VBA.





 =vlookup(lookup_value, lookup_array, column_index, exact_match/partial_match)

Argumenty funkcji mają następujące znaczenie:

  • szukana_wartość: Jest to podstawowa wartość, którą chcesz wyszukać z tablicy odnośników.
  • wyszukiwana_tablica: To są dane źródłowe, które funkcja lookup_value użyje jako odniesienie.
  • indeks_kolumny: Kolumna, z której ma zostać zwrócona wartość.
  • dopasowanie_dokładne/dopasowanie_częściowe: Użyj 0 lub 1, aby określić typ dopasowania.

Przygotowywanie danych

Ten zestaw danych składa się z dwóch części: tabeli przeglądowej i docelowych punktów danych.



Tabela przeglądowa składa się z trzech kolumn, z danymi wypełniającymi pola Podkategoria i Nazwa produktu:

  Tabela danych w MS Excel z wstępnie wypełnionymi wierszami

Tabela docelowa zawiera pasujące kolumny, bez danych podkategorii lub nazwy produktu. Zwróć uwagę, że wartości w kolumnie Identyfikator zamówienia są również obecne w tej samej kolumnie w tabeli przeglądowej:





  Wyszukaj wartości w arkuszu kalkulacyjnym programu Excel

Używanie funkcji Vlookup bezpośrednio w arkuszu kalkulacyjnym programu Excel

Aby wypełnić kolumny docelowe, B i C, możesz skorzystaj z funkcji Vlookup programu Excel .

W komórce B2 , wprowadź następującą formułę:





 =VLOOKUP($A2, $F:$H, 2, 0)

Podobnie w komórce C2 , wprowadź tę formułę:

 =VLOOKUP($A2, $F:$H, 3, 0)

Możesz przeciągnąć formułę w dół z komórki B2 do końca kolumny, B17. Powtórz ten proces również dla kolumny C. Wartości dla każdego kolejnego wpisu będą aktualizowane automatycznie w obu kolumnach.

Wartości, które przekazujesz do funkcji Vlookup, to:

  • A2 : szukana wartość znajduje się w tej komórce.
  • F3:H17 : składa się z zakresu wyszukiwania.
  • 23 : kolumny referencyjne, z których ma zostać pobrana wartość.
  • 0 : oznacza dokładne dopasowanie.

Funkcja wyszukiwania VBA programu Excel

Funkcja Vlookup ma wiele podobieństw, niezależnie od tego, czy używasz jej bezpośrednio w Excelu, czy przez VBA. Niezależnie od tego, czy jesteś analitykiem danych zajmującym się wierszami danych, czy też kierownikiem ds. zapasów, który regularnie zajmuje się nowymi produktami, możesz odnieść korzyści, korzystając z funkcji vlookup.

Podczas pracy z dynamicznym zakresem wyszukiwania zawsze najlepiej jest zautomatyzować formuły, aby uniknąć wielokrotnego stosowania formuł w programie Excel. Automatyzując funkcję Vlookup w VBA, możesz wykonywać obliczenia wielokolumnowe jednym kliknięciem.

1. Wykonaj wymaganą konfigurację

Zacznij od otwarcia edytora kodowania (naciśnij Alt + F11 lub przejdź do Deweloper tab) w nowym skoroszycie programu Excel i dodaj moduł, aby rozpocząć pisanie kodu. W edytorze kodu dodaj następujące wiersze u góry okna kodowania, aby utworzyć procedurę podrzędną:

  Sub vlookup_fn1()End Sub

Podprogram jest kontenerem dla Twojego kodu VBA i ma kluczowe znaczenie dla jego pomyślnego uruchomienia. Alternatywą jest utwórz formularz użytkownika VBA aby Twój interfejs był bardziej interaktywny.

2. Zadeklaruj swoje zmienne i utwórz swoje zakresy referencyjne

Najpierw musisz zadeklarować zmienne typy danych za pomocą Ciemny oświadczenie:

  Dim i as integer, lastrow as long

Następnie utwórz plik ostatni wiersz zmienna, aby przechowywać wartość ostatniego wypełnionego wiersza w zakresie wyszukiwania. Funkcja lastrow używa koniec(xldown) funkcja do obliczania odniesienia do wiersza końcowego w określonym zakresie.

W tym przypadku zmienna lastrow przechowuje ostatnią wypełnioną wartość wiersza zakresu wyszukiwania, 17.

  lastrow = Sheets("Sheet2").Range("F3").End(xlDown).Row

W powyższym przykładzie tabela docelowa rozciąga się od A2:C17 , podczas gdy tabela źródłowa rozciąga się od F2:H17 . Formuła przeglądania przejrzy każdą wartość przechowywaną w kolumnie A, wyszuka ją w tabeli źródłowej i wklei pasujące wpisy w kolumnach B i C.

Jednak zanim przejdziesz do pętli, musisz zapisać wartości zakresu w nowej zmiennej ( mój_zakres ), jak następuje:

  my_range = Sheets("Sheet2").Range("F3:H" & lastrow)

Musisz jawnie zdefiniować początkowe odwołanie do komórki ( F3 ) i odwołanie do kolumny końcowej ( H ). VBA automatycznie dołącza wartość wiersza, aby uzupełnić tablicę wyszukiwania.

  Kod VBA w oknie edytora VBA

3. Napisz pętlę, która będzie cyklicznie przechodzić przez każdą wyszukiwaną wartość

Przed zapisaniem pętli zdefiniuj wartość wiersza początkowego, 2 . Zdefiniowanie wartości początkowej pętli jest niezbędne, gdy mamy do czynienia z elementami dynamicznymi. W tabeli docelowej wiersz 2 jest pierwszym wierszem danych. Zmień tę wartość, jeśli Twoje dane zaczynają się w innym wierszu.

  i = 2

Możesz użyć A robić podczas pętla do przetwarzania każdego wiersza, zaczynając od wiersza 2 i kończąc na wierszu 17. Podobnie jak reszta kodu, ten aspekt jest dynamiczny; pętla będzie działać, dopóki warunek nie będzie fałszywy. Użyj warunku, aby sprawdzić, czy w pierwszej komórce bieżącego wiersza nie ma pustej wartości.

  Do While len(Sheets("Sheet2").Cells(i, 1).value) <> 0

Wewnątrz pętli możesz wywołać funkcję VLookup, aby wypełnić komórki:

  Sheets("Sheet2").Cells(i, 2).Value = _ Application.WorksheetFunction.VLookup(Sheets("Sheet2") _ .Cells(i, 1).Value, my_range, 2, False)Sheets("Sheet2").Cells(i, 3).Value = _ Application.WorksheetFunction.VLookup(Sheets("Sheet2") _ .Cells(i, 1).Value, my_range, 3, False)

Te instrukcje ustawiają wartość komórek w bieżącym wierszu, odpowiednio w kolumnach 2 i 3. oni używają Funkcja arkusza roboczego sprzeciwić się wywołaniu Wyszukiwanie pionowe funkcji, przekazując odpowiednią wartość z kolumny 1 do wyszukania. Przekazują również zdefiniowany wcześniej zakres i indeks odpowiedniej kolumny, z której ma zostać pobrana ostateczna wartość.

Kod Vlookup jest gotowy, ale nadal musisz zwiększać zmienną wiersza za każdym razem, gdy wykonasz pętlę:

  i = i + 1

Za każdym razem, gdy pętla się uruchamia, zwiększa wartość I o 1. Pamiętaj, że początkowa wartość wiersza to 2, a przyrost następuje za każdym razem, gdy pętla działa. Użyj pętla słowo kluczowe, aby ustawić koniec bloku kodu pętli.

Gdy uruchomisz cały kod, wyniki zostaną wypełnione w obu kolumnach na podstawie wartości z tabeli źródłowej.

  Wyjście tabelaryczne w arkuszu kalkulacyjnym Excel

Oto cały kod w celach informacyjnych:

  Sub vlookup_fn1() Dim i As Integer lastrow = Sheets("Sheet2").Range("F3").End(xlDown).Row my_range = Sheets("Sheet2").Range("F3:H" & lastrow) i = 2 Do While Len(Sheets("Sheet2").Cells(i, 1).Value) <> 0 On Error Resume Next Sheets("Sheet2").Cells(i, 2).Value = _ Application.WorksheetFunction.VLookup(Sheets("Sheet2") _ .Cells(i, 1).Value, my_range, 2, False) Sheets("Sheet2").Cells(i, 3).Value = _ Application.WorksheetFunction.VLookup(Sheets("Sheet2") _ .Cells(i, 1).Value, my_range, 3, False) i = i + 1 LoopEnd Sub

4. Utwórz przycisk uruchamiający kod

Po usunięciu kodu możesz utworzyć przycisk w skoroszycie programu Excel, aby uruchomić go jednym kliknięciem. Wstaw preferowany kształt do pustego arkusza programu Excel, kliknij go prawym przyciskiem myszy i kliknij plik Przypisz makro opcja.

  Przycisk Prostokąt w arkuszu kalkulacyjnym programu Excel z listą opcji

W oknie dialogowym wybierz nazwę swojego podprogramu i kliknij OK .

  Pole makro otwarte w arkuszu kalkulacyjnym programu Excel

Gdy chcesz uruchomić kod, kliknij przycisk, aby zobaczyć, jak dane są wypełniane natychmiast.

Używanie programu Excel VBA do automatyzacji funkcji wyszukiwania

Excel VBA to elastyczny język, który jest dobrze dostosowany do ułatwiania automatyzacji w różnych aspektach MS Excel. W MS Excel VBA istnieje wiele opcji, od automatyzacji funkcji programu Excel po automatyczne tworzenie rozbudowanych tabel przestawnych.

Pracując z różnymi segmentami programu Excel, możesz eksperymentować z różnymi opcjami, aby uczynić swoje życie łatwiejszym i bardziej wydajnym.