TOP

Funzione migliorata VLOOKUP (VLOOKUP2)

Descrizione

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?


Un esempio di problema

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.

VBA codice per la funzione 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 )

Articoli sull'argomento: