Tekst do przeglądania
Do znalezienia wartości w tabeli można użyć standardowej funkcji Vlookup:
I używalibyśmy VLOOKUP w ten sposób:
=WYSZUKAJ.PIONOWO(A1:10;"Pies";2;FAŁSZ)
dać wartość 30.
Jednak na tej liście widzimy, że Pies występuje 3 razy. Standardowa funkcja WYSZUKAJ.PIONOWO zwróci tylko wartość powiązaną z pierwszym elementem na tej liście. Nie zwróci 125 lub 9250 z drugim lub trzecim wystąpieniem „pies” na tej liście.
Vlookup wiele wyników
Poniższa funkcja pozwala nam określić zakres, wyrażenie do wyszukania i instancję (numer wyniku), a następnie zwrócić odpowiednią wartość:
Funkcja Find_nth_Occurrence(Column_Range as range, Expression as String, Occ as Integer) As Double Dim Cell Dim Occurrences_to_date as Integer Find_nth_Occurrence = 1000000 Occurrences_to_date = 0 Dla każdej komórki w Column_Range If Cell.Value = Wystąpienie_do_currence = Occurrences_to_data as Integer Następnie Find_nth_Occurrence = Cell.Offset(0, 1).Value End If End If Next Cell End Function
Główna różnica między tą a standardową funkcją WYSZUKAJ.PIONOWO polega na tym, że w tym przypadku zakresem jest tylko zakres etykiet, a nie cały zakres danych.
Poniżej znajduje się podprogram, który wywołuje tę funkcję na podstawie zdarzenia kliknięcia z przycisku polecenia. Wygląda w zakresie A1:A8 w Arkuszu 2 dla trzeciego wystąpienia słowa Pies:
Private Sub CommandButton1_Click() Dim Answer As Double Answer = Find_nth_Occurrence(Sheets("Sheet2").Range("A1:A8"), "Dog", 3) MsgBox AnswerEnd Sub
Zmienna „Answer” przechowuje wynik działania funkcji - który jest następnie wyświetlany w oknie Msgbox na ekranie:
>Jeśli jednak słowa nie można znaleźć na liście lub częstotliwość nie występuje, np. nie ma piątego wystąpienia słowa „pies”, zwracana jest wartość 1 000 000 :-
Odpowiedź = Znajdź_nth_Wystąpienie(Arkusze("Arkusz2")Zakres("A1:A8"), "Pies", 5)
Lub
Odpowiedź = Znajdź_nth_Wystąpienie(Arkusze("Arkusz2")Zakres("A1:A8"), "Koń", 2)