Testo di ricerca
La funzione Vlookup standard può essere utilizzata per trovare un valore all'interno di una tabella:
E useremmo VLOOKUP in questo modo:
=CERCA.VERT(A1:10,"Cane",2,FALSO)
dare il valore 30.
Tuttavia, in questo elenco vediamo che Dog si verifica 3 volte. La funzione VLOOKUP standard restituirà solo il valore associato al primo elemento in questo elenco. Non restituirà 125 o 9.250 con la 2a o la 3a istanza di "dog" in questo elenco.
Vlookup risultati multipli
La seguente funzione ci consente di specificare un intervallo, un'espressione da cercare e l'istanza (numero risultato) e quindi restituire il valore corrispondente:
Funzione 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 Per ogni cella In Column_Range If Cell.Value = Expression_todate Then Oc Quindi Find_nth_Occurrence = Cell.Offset(0, 1).Value End If End If Next Cell End Function
La differenza principale tra questa e la funzione VLOOKUP standard è che in questo caso, l'intervallo è l'unico intervallo di etichette, non l'intero intervallo di dati.
Di seguito è una subroutine che chiama questa funzione in base all'evento click da un pulsante di comando. Cerca nell'intervallo A1:A8 su Foglio2, per la 3a istanza della parola Cane:
Private Sub CommandButton1_Click() Dim Answer As Double Answer = Find_nth_Occurrence(Sheets("Sheet2").Range("A1:A8"), "Dog", 3) MsgBox AnswerEnd Sub
La variabile “Answer” memorizza il risultato della funzione - che viene poi visualizzato in un Msgbox sullo schermo:
>Tuttavia, se la parola non può essere trovata nell'elenco o la frequenza non si verifica, ad esempio non c'è una quinta istanza della parola "Cane", viene restituito il valore di 1.000.000 :-
Risposta = Trova_nth_Occurrence(Fogli(“Foglio2”).Intervallo(“A1:A8”), “Cane”, 5)
o
Risposta = Trova_nth_Occurrence(Fogli(“Foglio2”).Intervallo(“A1:A8”), “Cavallo”, 2)