Categorie
Automazione Excel

XLookup vs VLookup

XLookup è un nuovo strumento introdotto di recente in Excel che può essere utilizzato come una versione avanzata di ricerca. VLookup è una delle più antiche funzioni di ricerca in Microsoft Excel, che può essere utilizzata per cercare il valore corrispondente in un elenco di dati. Entrambi gli strumenti sono predisposti per la ricerca orizzontale e verticale, ma ci sono alcune differenze significative tra loro.

XLookup può essere usato per ricerche da destra a sinistra, a differenza di VLookup, che può essere impostato solo per ricerche da sinistra a destra. XLookup include anche una funzione di corrispondenza approssimativa che può essere utilizzata per trovare i valori più vicini a quelli cercati, mentre VLookup non offre tale funzionalità.

Inoltre, XLookup consente la ricerca su più colonne, consentendo di eseguire query complesse con un unico comando. VLookup, al contrario, offre la possibilità di effettuare ricerche nella stessa colonna, o di eseguire una ricerca attraverso una sezione di una tabella. VLookup è anche limitato alla ricerca in una singola tabella, a differenza di XLookup che può effettuare ricerche in più tabelle nello stesso file.

La funzione XLookup da utilizzare direttamente nelle formule di una cella è  CERCA.X, la funzione VLookup invece è CERCA.VERT

Ad esempio consideriamo questa situazione

Per cercare l’ area della provincia di Cuneo abbiamo utilizzato nella cella G2 la CERCA.VERT (VLookup) in questo modo:

CERCA.VERT(F2;C2:D7;FALSO)

In ottica di automazione VBA la situazione la si può tradurre con il codice seguente

Sub CercaArea()
MsgBox Application.WorksheetFunction.VLookup(Range(“F2”), Range(“C2:D7”), 2, False)
End Sub

Supponiamo ora di voler estendere i risultati della ricerca catturando oltre alla estensione anche altri dati relativi alla provincia di Cuneo. Ecco come in questo caso si può utilizzare la XLookup

Consideriamo quindi questa altra situazione:

Per cercare oltre all’ area anche la popolazione della provincia di Cuneo utilizziamo la CERCA.X (XLookup)

Cerchiamo il valore della cella F2 (“CN” nel nostro esempio) per recuperare l’area e la popolazione corrispondenti inserendo nella cella G2 la formula CERCA.X(F2;B2:B7;C2:D7), quindi con la prima matrice B2:B7 identifichiamo la riga corrispondente a Cuneo mentre con la seconda matrice C2:D7 diciamo di prendere tutti i valori delle colonne comprese nella matrice e che corrispondono alla riga trovata.

Se vogliamo automatizzare possiamo ottenere la stessa cosa con il codice VBA

Range(“J2”).Formula2 = “=” & Application.WorksheetFunction.XLookup(Range(“F2”), Range(“B2:B7”), Range(“C2:D7”)).Address

Questa riga di codice imposta la formula nella cella J2 come XLookup(range F2, range B2:B7 e range C2:D7). XLookup cerca il valore contenuto nella cella F2 nel range B2:B7, se lo trova, ritorna il valore corrispondente nel range C2:D7. L’Address finale nella cella J2 viene impostato come il risultato restituito da XLookup.

Il risultato dopo l’ esecuzione è il seguente dove in cella J2 e K2 ci sono i dati area e popolazione

CERCA.X offre anche un approccio più visivo rispetto a CERCA.VERT, il che significa che non è necessario scrivere codici complicati per eseguire una ricerca avanzata. Inoltre, CERCA.X è più semplice da usare, in quanto elimina il bisogno di scrivere o modificare le funzioni in Excel e offre un set di parametri che possono essere personalizzati, con risultati intuitivi. Ad esempio, se si desidera eseguire una ricerca su più colonne, con CERCA.X è possibile specificare un intervallo di colonne e restituire automaticamente tutti i valori corrispondenti in tutte le colonne specificate.

Notiamo le differenze tra la VLookup e la XLookup da un punto di vista funzionale e di valori restituiti in VBA:

la funzione VLookup utilizza un singolo valore come riferimento all’interno di un range di dati. Utilizza un valore per creare un’istanza in un’altra casella univoca per ottenere un risultato, infatti è possibile utilizzare la MsgBox per visualizzarlo.

la funzione XLookup si basa su uno o più valori come riferimento per creare un’istanza univoca all’interno di un range di dati per ottenere un risultato. Offre anche la possibilità di ricercare più valori, direttamente da una cella. Inoltre, restituisce l’indice della relazione richiesta invece di una singola cella.

Concludendo la funzione VLookup di VBA viene utilizzata per cercare un valore all’interno di una tabella o di una matrice. Se viene trovato un singolo valore di corrispondenza, allora la funzione VLookup restituirà un singolo valore come risultato. La funzione XLookup di VBA può essere utilizzata per cercare un valore all’interno di una tabella o di una matrice di due o più colonne con la possibilità di restituire un gruppo di valori come risultato.