TOP

Ulepszona funkcja VLOOKUP (VLOOKUP2)

Opis

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?


Przykład problemu

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 pierwsze, ale także każde kolejne (N-te) wystąpienie. Nazwijmy to na przykład VLOOKUP2.

VBA kod funkcji 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)        
  'moonexcel.com.ua
  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 Kreatorzy funkcji w kategorii Określony przez użytkownika możesz znaleźć naszą funkcję VLOOKUP2 i użyć jej. 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ć:

=VLOOKUP2(A2:A19; 1; "Mike"; 3; 4)

Artykuły na ten temat: