VLOOKUP avanzato in Excel: multiplo, doppio, annidato

  • Condividi Questo
Michael Brown

Questi esempi vi insegneranno come eseguire Vlookup con più criteri, restituire un'istanza specifica o tutte le corrispondenze, eseguire Vlookup dinamici in più fogli e altro ancora.

È la seconda parte della serie che vi aiuterà a sfruttare la potenza di VLOOKUP di Excel. Gli esempi presuppongono che conosciate il funzionamento di questa funzione. In caso contrario, è opportuno iniziare con gli usi di base di VLOOKUP in Excel.

Prima di proseguire, vorrei ricordare brevemente la sintassi:

VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])

Ora che tutti sono sulla stessa lunghezza d'onda, diamo un'occhiata più da vicino agli esempi di formula VLOOKUP avanzata:

    Come eseguire Vlookup con più criteri

    La funzione VLOOKUP di Excel è molto utile quando si tratta di cercare un determinato valore all'interno di un database. Tuttavia, manca di una caratteristica importante: la sua sintassi consente un solo valore di ricerca. Ma se si desidera effettuare una ricerca con diverse condizioni, è possibile scegliere tra diverse soluzioni.

    Formula 1. VLOOKUP con due criteri

    Supponiamo di avere un elenco di ordini e di voler trovare la quantità in base a 2 criteri, Nome del cliente e Prodotto Un fattore di complicazione è che ogni cliente ha ordinato più prodotti, come mostrato nella tabella seguente:

    Una normale formula VLOOKUP non funziona in questa situazione perché restituisce la prima corrispondenza trovata in base a un singolo valore di ricerca specificato dall'utente.

    Per ovviare a questo problema, è possibile aggiungere una colonna helper e concatenare i valori di due colonne lookup ( Cliente e Prodotto È importante che la colonna di aiuto sia la colonna più a sinistra nell'array di tabelle, perché è il punto in cui Excel VLOOKUP cerca sempre il valore di ricerca.

    Aggiungete quindi una colonna a sinistra della vostra tabella e copiate la formula sottostante in tutta la colonna, che popolerà la colonna helper con i valori delle colonne B e C (il carattere di spazio è concatenato in mezzo per una migliore leggibilità):

    =B2&" "&C2

    Quindi, utilizzare una formula VLOOKUP standard e inserire entrambi i criteri nella casella valore_di_ricerca separati da uno spazio:

    =VLOOKUP("Jeremy Sweets", A2:D11, 4, FALSE)

    Oppure, inserire i criteri in celle separate (G1 e G2 nel nostro caso) e concatenare le celle:

    =VLOOKUP(G1&" "&G2, A2:D11, 4, FALSE)

    Poiché vogliamo restituire un valore dalla colonna D, che è la quarta nell'array della tabella, usiamo 4 per col_index_num . il ricerca_intervallo è impostato su FALSE per ottenere una corrispondenza esatta. L'immagine seguente mostra il risultato:

    Se la tabella di ricerca è in un altro foglio includere il nome del foglio nella formula VLOOKUP, ad esempio:

    =VLOOKUP(G1&" "&G2, Orders!A2:D11, 4, FALSE)

    In alternativa, creare un intervallo con nome per la tabella di ricerca (ad esempio, Ordini ) per rendere la formula più facile da leggere:

    =VLOOKUP(G1&" "&G2, Ordini, 4, FALSO)

    Per ulteriori informazioni, vedere Come eseguire Vlookup da un altro foglio in Excel.

    Nota: affinché la formula funzioni correttamente, i valori della colonna helper devono essere concatenati esattamente come nella colonna valore_di_ricerca Ad esempio, abbiamo usato un carattere di spazio per separare i criteri sia nella colonna di aiuto (B2&" "&C2) che nella formula VLOOKUP (G1&" "&G2).

    Formula 2. VLOOKUP di Excel con condizioni multiple

    In teoria, è possibile utilizzare l'approccio sopra descritto per eseguire Vlookup su più di due criteri. Tuttavia, ci sono un paio di avvertenze: in primo luogo, un valore di lookup è limitato a 255 caratteri e, in secondo luogo, la struttura del foglio di lavoro potrebbe non consentire l'aggiunta di una colonna di aiuto.

    Fortunatamente, Microsoft Excel offre spesso più di un modo per fare la stessa cosa. Per eseguire Vlookup su più criteri, è possibile utilizzare una combinazione di MATCH INDEX o la funzione XLOOKUP, introdotta di recente in Office 365.

    Ad esempio, per cercare in base a 3 valori diversi ( Data , Nome del cliente e Prodotto ), utilizzare una delle seguenti formule:

    =INDEX(D2:D11, MATCH(1, (G1=A2:A11) * (G2=B2:B11) * (G3=C2:C11), 0))

    =XLOOKUP(1, (G1=A2:A11) * (G2=B2:B11) * (G3=C2:C11), D2:D11)

    Dove:

    • G1 è il criterio 1 (data)
    • G2 è il criterio 2 (nome del cliente)
    • G3 è il criterio 3 (prodotto)
    • A2:A11 è l'intervallo di ricerca 1 (date)
    • B2:B11 è l'intervallo di ricerca 2 (nomi dei clienti)
    • C2:C11 è l'intervallo di ricerca 3 (prodotti)
    • D2:D11 è l'intervallo di ritorno (quantità)

    Nota: in tutte le versioni, tranne Excel 365, la PARTITA INDICE deve essere inserita come formula di matrice CSE premendo Ctrl + Maiusc + Invio. In Excel 365, che supporta le matrici dinamiche, funziona anche come formula normale.

    Per la spiegazione dettagliata delle formule, si veda:

    • XLOOKUP con più criteri
    • Formula INDEX MATCH con criteri multipli

    Come utilizzare VLOOKUP per ottenere la seconda, terza o ennesima corrispondenza

    Come già sapete, Excel VLOOKUP può ottenere un solo valore corrispondente, più precisamente restituisce la prima corrispondenza trovata. Ma cosa succede se ci sono diverse corrispondenze nell'array di lookup e si vuole ottenere la seconda o la terza istanza? Il compito sembra piuttosto complicato, ma la soluzione esiste!

    Formula 1. Vlookup Nth instance

    Supponiamo di avere i nomi dei clienti in una colonna, i prodotti acquistati in un'altra e di voler trovare il secondo o il terzo prodotto acquistato da un determinato cliente.

    Il modo più semplice è aggiungere una colonna di aiuto a sinistra della tabella, come abbiamo fatto nel primo esempio, ma questa volta la popoleremo con i nomi dei clienti e i numeri di ricorrenza, come " Sconosciuto1 ", " Sconosciuto2 ", ecc.

    Per ottenere l'occorrenza, utilizzare la funzione COUNTIF con un riferimento misto all'intervallo (il primo riferimento è assoluto e il secondo è relativo, come $B$2:B2). Poiché il riferimento relativo cambia in base alla posizione della cella in cui viene copiata la formula, nella riga 3 diventerà $B$2:B3, nella riga 4 - $B$2:B4 e così via.

    Concatenata con il nome del cliente (B2), la formula assume questa forma:

    =B2&COUNTIF($B$2:B2, B2)

    La formula di cui sopra va in A2 e poi viene copiata in tutte le celle necessarie.

    Quindi, inserire il nome dell'obiettivo e il numero di occorrenza in celle separate (F1 e F2) e utilizzare la formula seguente per eseguire Vlookup su un'occorrenza specifica:

    =VLOOKUP(F1&F2, A2:C11, 3, FALSE)

    Formula 2. Vlookup 2a occorrenza

    Se si cerca la seconda istanza del valore di ricerca, si può fare a meno della colonna ausiliaria e creare dinamicamente l'array di tabelle usando la funzione INDIRECT insieme a MATCH:

    =VLOOKUP(E1, INDIRETTO("A"&(MATCH(E1, A2:A11, 0)+2)&":B11"), 2, FALSO)

    Dove:

    • E1 è il valore di ricerca
    • A2:A11 è l'intervallo di ricerca
    • B11 è l'ultima cella (in basso a destra) della tabella di ricerca.

    Si noti che la formula di cui sopra è stata scritta per un caso specifico in cui le celle dei dati nella tabella di ricerca iniziano alla riga 2. Se la vostra tabella si trova da qualche parte al centro del foglio, utilizzate questa formula universale, dove A1 è la cella in alto a sinistra della tabella di ricerca contenente un'intestazione di colonna:

    =VLOOKUP(E1, INDIRETTO("A"&(MATCH(E1, A2:A11, 0)+1+ROW(A1))&":B11"), 2, FALSO)

    Come funziona questa formula

    Ecco la parte fondamentale della formula che crea un intervallo dinamico di vlookup :

    INDIRETTO("A"&(MATCH(E1, A2:A11, 0)+2)&":B11")

    La funzione MATCH, configurata per la corrispondenza esatta (0 nell'ultimo argomento), confronta il nome di destinazione (E1) con l'elenco di nomi (A2:A11) e restituisce la posizione della prima corrispondenza trovata, che nel nostro caso è 3. Questo numero verrà utilizzato come coordinata della riga iniziale per l'intervallo di vlookup, quindi vi aggiungiamo 2 (+1 per escludere la prima istanza e +1 per escludere la riga 1 con le intestazioni delle colonne).In alternativa, è possibile utilizzare 1+ROW(A1) per calcolare automaticamente l'adeguamento necessario in base alla posizione della riga di intestazione (A1 nel nostro caso).

    Il risultato è la seguente stringa di testo, che INDIRECT converte in un riferimento di intervallo:

    INDIRETTO("A"&5&":B11") -> A5:B11

    Questo intervallo va fino al tabella_array di VLOOKUP, costringendolo a iniziare la ricerca dalla riga 5, tralasciando la prima istanza del valore di ricerca:

    VLOOKUP(E1, A5:B11, 2, FALSE)

    Come eseguire Vlookup e restituire più valori in Excel

    La funzione VLOOKUP di Excel è stata progettata per restituire una sola corrispondenza. Esiste un modo per eseguire Vlookup in più istanze? Sì, esiste, anche se non è semplice. Ciò richiede l'uso combinato di diverse funzioni come INDICE, PICCOLO e RIGHE è una formula di array.

    Ad esempio, il programma sottostante può trovare tutte le occorrenze del valore di ricerca F2 nell'intervallo B2:B16 e restituire più corrispondenze dalla colonna C:

    {=IFERROR(INDEX($C$2:$C$11, SMALL(IF($F$1=$B$2:$B$11, ROW($C$2:$C$11)-1,""), ROW()-1)),"")}

    Esistono due modi per inserire la formula nel foglio di lavoro:

    1. Digitare la formula nella prima cella, premere Ctrl + Maiusc + Invio e trascinarla in altre celle.
    2. Selezionate diverse celle adiacenti in una singola colonna (F1:F11 nella schermata sottostante), digitate la formula e premete Ctrl + Maiusc + Invio per completarla.

    In ogni caso, il numero di celle in cui inserire la formula deve essere uguale o superiore al numero massimo di corrispondenze possibili.

    Per una spiegazione dettagliata della logica della formula e per ulteriori esempi, consultate Come fare VLOOKUP su più valori in Excel.

    Come eseguire Vlookup in righe e colonne (lookup bidirezionale)

    Ricerca bidirezionale (alias ricerca della matrice o Ricerca a 2 dimensioni Esistono diversi modi per effettuare ricerche bidimensionali in Excel, ma dato che l'obiettivo di questa esercitazione è la funzione VLOOKUP, la utilizzeremo naturalmente.

    Per questo esempio, prenderemo la tabella sottostante con le vendite mensili ed elaboreremo una formula VLOOKUP per recuperare i dati di vendita di un articolo specifico in un determinato mese.

    Con i nomi degli articoli in A2:A9, i nomi dei mesi in B1:F1, l'articolo di destinazione in I1 e il mese di destinazione in I2, la formula è la seguente:

    =VLOOKUP(I1, A2:F9, MATCH(I2, A1:F1, 0), FALSE)

    Come funziona questa formula

    Il cuore della formula è la funzione VLOOKUP standard che cerca una corrispondenza esatta con il valore di ricerca in I1. Ma poiché non sappiamo in quale colonna si trovano esattamente le vendite di un mese specifico, non possiamo fornire il numero della colonna direttamente alla funzione col_index_num Per trovare la colonna, si utilizza la seguente funzione MATCH:

    MATCH(I2, A1:F1, 0)

    Tradotta in inglese, la formula dice: cerca il valore I2 in A1:F1 e restituisci la sua posizione relativa nell'array. Fornendo 0 al terzo argomento, si istruisce MATCH a trovare il valore esattamente uguale al valore di ricerca (è come usare FALSE per il parametro ricerca_intervallo di VLOOKUP).

    Da quando Mar si trova nella quarta colonna dell'array di ricerca, la funzione MATCH restituisce 4, che va direttamente al file col_index_num argomento di VLOOKUP:

    VLOOKUP(I1, A2:F9, 4, FALSE)

    Si noti che, sebbene i nomi dei mesi inizino nella colonna B, per l'array di ricerca si utilizza A1:I1. Questo per far sì che il numero restituito da MATCH corrisponda alla posizione della colonna in tabella_array di VLOOKUP.

    Per conoscere altri modi di eseguire la ricerca di matrici in Excel, vedere PARTITA INDICE e altre formule per la ricerca bidimensionale.

    Come eseguire più Vlookup in Excel (Vlookup annidato)

    A volte può accadere che la tabella principale e la tabella di ricerca non abbiano una sola colonna in comune, il che impedisce di eseguire una Vlookup tra due tabelle. Tuttavia, esiste un'altra tabella che non contiene le informazioni desiderate, ma ha una colonna in comune con la tabella principale e un'altra con la tabella di ricerca.

    L'immagine seguente illustra la situazione:

    L'obiettivo è copiare i prezzi nella tabella principale in base a ID articolo Il problema è che la tabella contenente i prezzi non ha l'opzione "Prezzi". ID articolo Ciò significa che dovremo eseguire due Vlookup in un'unica formula.

    Per comodità, creiamo prima un paio di intervalli denominati:

    • La tabella di ricerca 1 è denominata Prodotti (D3:E10)
    • La tabella di ricerca 2 è denominata Prezzi ( G3:H10 )

    Le tabelle possono trovarsi nello stesso foglio di lavoro o in fogli diversi.

    E ora eseguiamo la cosiddetta doppio Vlookup , alias Vlookup annidato .

    Per prima cosa, creare una formula VLOOKUP per trovare il nome del prodotto nella tabella Lookup 1 (denominata Prodotti ) in base all'id dell'elemento (A3):

    =VLOOKUP(A3, Prodotti, 2, FALSE)

    Quindi, inserire la formula precedente nella cartella valore_di_ricerca argomento di un'altra funzione VLOOKUP per estrarre i prezzi dalla tabella Lookup 2 (denominata Prezzi ) in base al nome del prodotto restituito dal VLOOKUP annidato:

    =VLOOKUP(VLOOKUP(A3, Prodotti, 2, FALSO), Prezzi, 2, FALSO)

    L'immagine seguente mostra la nostra formula Vlookup annidata in azione:

    Come eseguire Vlookup su più fogli in modo dinamico

    A volte si possono avere dati nello stesso formato suddivisi in più fogli di lavoro e l'obiettivo è quello di estrarre i dati da un foglio specifico in base al valore chiave in una determinata cella.

    Questo può essere più facile da capire con un esempio: supponiamo di avere alcuni rapporti di vendita regionali nello stesso formato e di voler ottenere i dati di vendita di un prodotto specifico in determinate regioni:

    Come nell'esempio precedente, si inizia con la definizione di alcuni nomi:

    • L'intervallo A2:B5 nel foglio CA è denominato CA_Vendite .
    • L'intervallo A2:B5 nel foglio FL è denominato FL_Vendite .
    • L'intervallo A2:B5 nel foglio KS è denominato KS_Vendite .

    Come si può vedere, tutti gli intervalli denominati hanno una parte comune ( Vendite ) e parti uniche ( CA , FL , KS Assicuratevi di nominare i vostri intervalli in modo simile, perché è essenziale per la formula che costruiremo.

    Formula 1. VLOOKUP INDIRETTO per estrarre dinamicamente i dati da fogli diversi

    Se dovete recuperare dati da più fogli, la formula VLOOKUP INDIRECT è la soluzione migliore, compatta e di facile comprensione.

    Per questo esempio, organizziamo la tabella riassuntiva in questo modo:

    • Immettere i prodotti di interesse in A2 e A3. Questi sono i nostri valori di ricerca.
    • Inserire le parti uniche degli intervalli denominati in B1, C1 e D1.

    Ora concateniamo la cella contenente la parte unica (B1) con la parte comune ("_Vendite") e diamo la stringa risultante a INDIRETTO:

    INDIRETTO(B$1&"_Vendite")

    La funzione INDIRETTO trasforma la stringa in un nome comprensibile da Excel e lo inserisce nella cartella tabella_array argomento di VLOOKUP:

    =VLOOKUP($A2, INDIRECT(B$1&"_Vendite"), 2, FALSE)

    La formula di cui sopra va in B2 e poi viene copiata in basso e a destra.

    Fate attenzione al fatto che, nel valore di ricerca ($A2), abbiamo bloccato la coordinata della colonna con un riferimento assoluto alla cella, in modo che la colonna rimanga fissa quando la formula viene copiata a destra. Nel riferimento a B$1, abbiamo bloccato la riga perché vogliamo che la coordinata della colonna cambi e fornisca una parte di nome appropriata a INDIRETTO a seconda della colonna in cui viene copiata la formula:

    Se la tabella principale è organizzata in modo diverso, con i valori di ricerca in una riga e le parti univoche dei nomi degli intervalli in una colonna, è necessario bloccare la coordinata della riga nel valore di ricerca (B$1) e la coordinata della colonna nelle parti del nome ($A2):

    =VLOOKUP(B$1, INDIRECT($A2&"_Vendite"), 2, FALSE)

    Formula 2. VLOOKUP e IF annidati per consultare più fogli

    Quando si dispone di due o tre fogli di ricerca, è possibile utilizzare una formula VLOOKUP piuttosto semplice con funzioni IF annidate per selezionare il foglio corretto in base al valore chiave in una particolare cella:

    =VLOOKUP($A2, IF(B$1="CA", CA_Sales, IF(B$1="FL", FL_Sales, IF(B$1="KS", KS_Sales,")), 2, FALSE)

    Dove $A2 è il valore di ricerca (nome dell'elemento) e B$1 è il valore chiave (stato):

    In questo caso, non è necessario definire i nomi e si possono utilizzare i riferimenti esterni per fare riferimento a un altro foglio o a un'altra cartella di lavoro.

    Per ulteriori esempi di formule, vedere Come eseguire un VLOOKUP su più fogli in Excel.

    Ecco come utilizzare VLOOKUP in Excel. Vi ringrazio per la lettura e spero di vedervi sul nostro blog la prossima settimana!

    Eserciziario da scaricare

    Esempi di formule VLOOKUP avanzate (file .xlsx)

    Michael Brown è un appassionato di tecnologia dedicato con una passione per la semplificazione di processi complessi utilizzando strumenti software. Con oltre un decennio di esperienza nel settore tecnologico, ha affinato le sue competenze in Microsoft Excel e Outlook, nonché in Fogli Google e Documenti. Il blog di Michael è dedicato alla condivisione delle sue conoscenze e competenze con gli altri, fornendo suggerimenti e tutorial facili da seguire per migliorare la produttività e l'efficienza. Che tu sia un professionista esperto o un principiante, il blog di Michael offre spunti preziosi e consigli pratici per ottenere il massimo da questi strumenti software essenziali.