Formula di Excel: esempio di CERCA.VERT inverso -

Sommario

Formula generica

=VLOOKUP(A1,CHOOSE((3,2,1),col1,col2,col3),3,0)

Sommario

Per invertire un CERCA.VERT, ovvero per trovare il valore di ricerca originale utilizzando un risultato della formula CERCA.VERT, puoi utilizzare una formula complicata basata sulla funzione SCEGLI, o formule più semplici basate su INDICE e CONFRONTA o XLOOKUP come spiegato di seguito. Nell'esempio mostrato, la formula in H10 è:

=VLOOKUP(G10,CHOOSE((3,2,1),B5:B8,C5:C8,D5:D8),3,0)

Con questa configurazione, CERCA.VERT trova l'opzione associata a un costo di 3000 e restituisce "C".

Nota: questo è un argomento più avanzato. Se hai appena iniziato con CERCA.VERT, inizia da qui.

introduzione

Una limitazione chiave di CERCA.VERT è che può solo cercare i valori a destra. In altre parole, la colonna con i valori di ricerca deve essere a sinistra dei valori che si desidera recuperare con CERCA.VERT. Di conseguenza, con la configurazione standard, non è possibile utilizzare CERCA.VERT per "guardare a sinistra" e invertire la ricerca originale.

Dal punto di vista di CERCA.VERT, possiamo visualizzare il problema in questo modo:

La soluzione alternativa spiegata di seguito utilizza la funzione SCEGLI per riorganizzare la tabella all'interno di CERCA.VERT.

Spiegazione

Partendo dall'inizio, la formula in H5 è una normale formula CERCA.VERT:

=VLOOKUP(G5,B5:D8,3,0) // returns 3000

Utilizzando G5 come valore di ricerca ("C") e i dati in B5: D8 come matrice di tabella, CERCA.VERT esegue una ricerca sui valori nella colonna B e restituisce il valore corrispondente dalla colonna 3 (colonna D), 3000. Avviso zero (0) viene fornito come ultimo argomento per forzare una corrispondenza esatta.

La formula in G10 estrae semplicemente il risultato da H5:

=H5 // 3000

Per eseguire una ricerca inversa, la formula in H10 è:

=VLOOKUP(G10,CHOOSE((3,2,1),B5:B8,C5:C8,D5:D8),3,0)

La parte difficile è la funzione SCEGLI, che viene utilizzata per riorganizzare l'array della tabella in modo che il costo sia la prima colonna e l'opzione sia l'ultima:

CHOOSE((3,2,1),B5:B8,C5:C8,D5:D8) // reorder table 3, 2, 1

La funzione SCEGLI è progettata per selezionare un valore basato su un indice numerico. In questo caso, stiamo fornendo tre valori di indice in una costante di matrice:

(3,2,1) // array constant

In altre parole, chiediamo la colonna 3, quindi la colonna 2, quindi la colonna 1. Questa è seguita dai tre intervalli che rappresentano ciascuna colonna della tabella nell'ordine in cui appaiono sul foglio di lavoro.

Con questa configurazione, SCEGLI restituisce tutte e tre le colonne in un singolo array 2D come questo:

(1000,"Silver","A";2000,"Gold","B";3000,"Platinum","C";5000,"Diamond","D")

Se visualizziamo questo array come una tabella sul foglio di lavoro, abbiamo:

Nota: i titoli non fanno parte dell'array e sono mostrati qui solo per chiarezza.

In effetti, abbiamo scambiato le colonne 1 e 3. La tabella riorganizzata viene restituita direttamente a CERCA.VERT, che corrisponde a 3000 e restituisce il valore corrispondente dalla colonna 3, "C".

Con INDEX e MATCH

La soluzione di cui sopra funziona bene, ma è difficile da consigliare poiché la maggior parte degli utenti non capirà come funziona la formula. Una soluzione migliore è INDICE e CONFRONTA, utilizzando una formula come questa:

=INDEX(B5:B8,MATCH(G10,D5:D8,0))

Qui, la funzione CONFRONTA trova il valore 3000 in D5: D8 e restituisce la sua posizione 3:

MATCH(G10,D5:D8,0) // returns 3

Nota: MATCH è configurato per una corrispondenza esatta impostando l'ultimo argomento su zero (0).

CONFRONTA restituisce un risultato direttamente a INDICE come numero di riga, quindi la formula diventa:

=INDEX(B5:B8,3) // returns "C"

e INDICE restituisce il valore dalla terza riga di B5: B8, "C".

Questa formula mostra come INDICE e CONFRONTA possono essere più flessibili di CERCA.VERT.

Con XLOOKUP

XLOOKUP fornisce anche un'ottima soluzione. La formula equivalente è:

=XLOOKUP(G10,D5:D8,B5:B8) // returns "C"

Con un valore di ricerca da G10 (3000), anche un array di D5: D8 (costi) e un array di risultati di B5: B8 (opzioni), XLOOKUP individua 3000 nell'array di ricerca e restituisce l'elemento corrispondente dall'array dei risultati, "C". Poiché XLOOKUP esegue una corrispondenza esatta per impostazione predefinita, non è necessario impostare esplicitamente la modalità di corrispondenza.

Articoli interessanti...