1. Jak korzystać z funkcji WYSZUKAJ.PIONOWO w VBA?
Chcesz skorzystać z funkcji wyszukaj pionowo w VBA? VBA w Excelu daje nam możliwość korzystania z funkcji arkuszowych. Szczególnie ważną funkcją jest WYSZUKAJ.PIONOWO(). Odwołując się do funkcji arkuszowych powinniśmy skorzystać z funkcji vLookUp. W celu sprawdzenia działania funkcji stwórzmy dwie proste tabelki w Excelu wg. poniższego wzorca:
Tabela 1:
ID | WARTOŚĆ |
---|---|
1 | dolnośląskie |
2 | mazowieckie |
3 | pomorskie |
4 | śląskie |
5 | podkarpackie |
6 | lubelskie |
Tabela 2:
ID | WARTOŚĆ |
---|---|
1 | |
4 | |
6 |
Tabelki wstawmy kolejno do Arkusza1 w komórki A1 i D1.
W pierwszej kolejności powinniśmy utworzyć prosty skrypt wypełniający komórkę „E2” wartościami wyszukanymi przy użyciu funkcji. W arkuszu Excel w komórkę „E2” wstawilibyśmy następującą formułę: =WYSZUKAJ.PIONOWO(D2;A:B;2;FAŁSZ). W Edytorze VisualBasic wstawiamy nowy moduł. Moduł powinien zawierać następujący kod z użyciem funkcji arkuszowej:
Sub vLookupExample() Cells(2, 5) = Application.WorksheetFunction.VLookup(Cells(2, 4), Range("A:B"), 2, 0) End Sub
2. Wyszukaj Pionowo w VBA – jak przeciągnąć formułę?
Teraz jedyne, co powinniśmy zrobić, to zapętlić nasz kod, by wypełnić wszystkie wartości tabeli:
Sub vLookupExample() Dim lngCounter As Long lngCounter = 2 Do While lngCounter < Application.WorksheetFunction.CountA(Range("D:D")) + 1 Cells(lngCounter, 5) = Application.WorksheetFunction.VLookup(Cells(lngCounter, 4), Range("A:B"), 2, 0) lngCounter = lngCounter + 1 Loop End Sub
Za pomocą funkcji arkuszowej CountA sprawdziliśmy ile wartości niepustych jest w kolumnie „D”. Tyle też razy pętla zostanie powtórzona. Wypełnianie zaczynamy od wiersza nr 2, gdyż musimy pominąć nagłówki tabel. W ten sposób nasz przykład z użyciem funkcji wyszukaj pionowo w VBA został rozwiązany. Jeśli chcielibyśmy skorzystać z funkcji WYSZUKAJ.POZIOMO() powinniśmy w tym celu analogicznie użyć funkcji hLookUp.
Poniżej plik z przykładem:
4 komentarze “Jak korzystać z Funkcji Wyszukaj Pionowo vLookUp w Excel VBA”
możesz zamieścić jeszcze jakiś przykład z wyszukaj.poziomo?
Wreszcie to znalazłem, dzięki !
Co zrobić jak wywala błąd 1004 kiedy nie znajduje wartości arg1?
W moim przypadku pomogło dodanie wiersza „On Error Resume Next” tj. poniżej:
Sub vLookupExample()
On Error Resume Next
Dim lngCounter As Long
lngCounter = 2
Do While lngCounter < Application.WorksheetFunction.CountA(Range("D:D")) + 1
Cells(lngCounter, 5) = Application.WorksheetFunction.VLookup(Cells(lngCounter, 4), Range("A:B"), 2, 0)
lngCounter = lngCounter + 1
Loop
End Sub