La funzione incorporata VLOOKUP è una delle funzioni più potenti in Excel. Ma presenta uno svantaggio significativo: trova solo la prima occorrenza del valore desiderato nella tabella e solo nella colonna all'estrema destra. Ma se ti serve il 2°, il 3° e non l'ultimo?
Diciamo di avere una tabella di prestiti elaborati come questa:
Dobbiamo sapere, ad esempio, qual è stato l'importo del terzo prestito concesso a Mike o quando John ha stipulato il suo secondo accordo. Funzione incorporata VLOOKUP sa come cercare solo la prima occorrenza di un nome nella tabella e non ci aiuterà.
Scriviamo la nostra funzione, che cercherà non solo la prima, ma anche ogni successiva (ennesima) occorrenza. Chiamiamolo, ad esempio, VLOOKUP2.
Apri il menù Servizio - Macro - Editor Visual Basic , inserire il nuovo modulo (menù Insert - Module ) e copia lì il testo di questa funzione:
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
Chiudi l'editor Visual Basic e torna a Excel.
Ora in Procedure guidate delle funzioni nella categoria Definito dall'utente puoi trovare la nostra funzione VLOOKUP2 e usarla. La sintassi della funzione è la seguente:
=VLOOKUP2( tavolo ; column_number_where_we_search ; valore_cercato; numero_entrata ; numero_colonna_da_quale_prendiamo_il_valore )
Cioè per poter trovare l'importo del terzo prestito concesso a Mike, bisognerà inserire:
=VLOOKUP2(A2:A19; 1; "Mike"; 3; 4)