Wbudowana funkcja VLOOKUP jest jedną z najpotężniejszych funkcji w Excel. Ma jednak jedną istotną wadę - znajduje tylko pierwsze wystąpienie żądanej wartości w tabeli i tylko w skrajnej prawej kolumnie. Ale jeśli potrzebujesz drugiego, trzeciego, a nie ostatniego?
Załóżmy, że mamy tabelę przetworzonych pożyczek taką jak ta:
Musimy wiedzieć np. jaka była wysokość trzeciej pożyczki udzielonej Mike'owi lub kiedy John podpisał drugą umowę. Wbudowana funkcja VLOOKUP wie, jak wyszukać tylko pierwsze wystąpienie nazwy w tabeli i nam nie pomoże.
Napiszmy naszą funkcję, która przeszuka nie tylko pierwszy, ale i każdy kolejny (N-ty) wpis. Nazwijmy to na przykład VLOOKUP2.
Otwórz menu Usługa - Makro - Edytor Visual Basic , włóż nowy moduł (menu Insert - Module) i skopiuj tam tekst tej funkcji:
Function VLOOKUP2(Table As Range, _ SearchColumnNum As Integer, _ SearchValue As Variant, _ N As Integer, _ ResultColumnNum As Integer) Dim i As Integer Dim iCount As Integer For i = 1 To Table.Rows.Count If Table.Cells(i, SearchColumnNum) = SearchValue Then iCount = iCount + 1 End If If iCount = N Then VLOOKUP2 = Table.Cells(i, ResultColumnNum) Exit For End If Next i End Function
Zamknij edytor Visual Basic i wróć do Excel.
Teraz w Kreatorze funkcji, w kategorii Zdefiniowane przez użytkownika, możesz znaleźć i używać naszej funkcji VLOOKUP2. Składnia funkcji jest następująca:
=WYSZUKAJ.2(tabela ; numer_kolumny_gdzie_przeszukujemy ; przeszukiwana wartość; numer wpisu ; numer_kolumny_od_które_pobieramy_wartość_kolumny )
Oznacza to, że aby znaleźć kwotę trzeciej pożyczki udzielonej Mike'owi, musisz wprowadzić:
=WYSZUKAJ.2(A2:A19 ; 1 ; "Mike"; 3 ; 4 )