Cerca.vert estesi


Emanuele Casagrande invia queste due interessanti estensioni della funzione Excel CERCA.VERT (VLOOKUP in inglese) per superare alcune limitazioni della stessa.
Come ben sapete il CERCA.VERT di Excel permette di ricercare solo sulla prima colonna del range di celle e poi di restitusice un valore che si trova nella stessa riga ma su una colonna a destra della colonna nella quale viene effettuata la richiesta.

Una prima variante proposta da Emanuele permette di selezionare un range qualsiasi e poi di dire a Excel di ricercare in una qualsiasi colonna del range. Una volta trovato il valore, questa funzione restituisce il valore corrispondente in qualsiasi altra colonna del range di selezione. In pratica rende il nostro CERCA.VERT completamente flessibile:

Function NthLookup(Valore As Variant, Zona As Range, ColonnaR As Long, ColonnaV As Long) As Variant

'Questa funzione esegue un cerca.vert sulla ColonnaR-esima colonna e prende il risultato dalla ColonnaV-esima

Dim col As Range
Dim cel As Range

NthLookup = CVErr(xlErrNA)

Set col = Zona.Offset(0, ColonnaR - 1).Resize(Zona.Rows.Count, 1)
For Each cel In col
    If cel.Value = Valore Then
        NthLookup = Zona.Cells(cel.Row, ColonnaV)
        Exit For
    End If
Next

End Function

Una seconda variante di CERCA.VERT proposta da Emanuele invece permette di cercare il valore non in una sola colonna ma nelle prime N colonne in modo da rendere ancora più flessibile la ricerca:

Function FirstNLookup(Valore As Variant, Zona As Range, NumColonne As Long, ColonnaV As Long) As Variant
'Questa funzione esegue un cerca.vert sulle prime NumColonne e prende il risultato dalla ColonnaV-esima

Dim c As Long

For c = 1 To NumColonne
    v = NthLookup(Valore, Zona, c, ColonnaV)
    If Not IsError(v) Then
        Exit For
    End If
Next

FirstNLookup = v

End Function


Per poter installare le funzioni qui presnetate vi consigliamo di leggere la pagina dedicata al file personal.xls e di seguire il tutorial disponibile nelle pagine dei tutorial animati.