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.