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 qualsiasi successiva (ennesima) voce. Chiamiamolo, ad esempio, VLOOKUP2.
Apri il menù Servizio - Macro - Editor Visual Basic , inserire il nuovo modulo (menu 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) 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 nella Creazione guidata funzione, nella categoria Definito dall'utente, puoi trovare e utilizzare la nostra funzione VLOOKUP2. 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 )