Alternative a CERCA.VERT quando i valori chiave sono identici

Giampaolo ha descritto una situazione in cui ha un elenco di nomi dei dipendenti e dei loro stipendi. Vuole determinare chi sono i cinque dipendenti più pagati. Utilizza la funzione GRANDE per identificare i cinque stipendi più grandi, quindi tenta di utilizzare CERCA.VERT per restituire i nomi appartenenti a tali stipendi. Funziona bene a meno che non ci siano duplicati nei primi cinque stipendi (se le persone vengono pagate lo stesso stipendio). Se ce ne sono, CERCA.VERT restituisce solo il nome del primo dipendente con quello stipendio.

Per restituire tutti i nomi, ci sono un paio di cose che potresti fare. Un metodo potrebbe essere quello di evitare del tutto l’uso di una formula. Invece, potresti utilizzare la funzione Filtro automatico di Excel:

  1. Seleziona una cella qualsiasi nella tabella dati.
  2. Scegli Dati > Ordina e Filtra > Filtro. Excel aggiunge frecce a discesa a destra di ciascuna intestazione di colonna nella tabella.
  3. Utilizza l’elenco a discesa nella parte superiore della colonna degli stipendi per scegliere Primi 10... Excel visualizza la finestra di dialogo Filtro automatico Primi 10.
  4. Aggiusta il controllo centrale da 10 a 5.
  5. Fai clic su OK. Excel visualizza i primi cinque stipendi nell’elenco.

 

Alternative a CERCA.VERT quando i valori chiave sono identici 1

 

Seguendo questi passaggi, potresti ritrovarti con più di cinque record visibili, in particolare se ci sono ex aequo negli stipendi dei dipendenti. Il filtro identifica i primi cinque stipendi e quindi visualizza tutti i record con gli stipendi corrispondenti a quelli identificati.

Se non desideri utilizzare il filtro automatico, un’altra opzione è semplicemente quella di assicurarti che ci sia qualcosa di univoco in ciascuno dei record nell’elenco dei dipendenti. Ad esempio, se i nomi dei dipendenti sono nella colonna B e gli stipendi nella colonna C, potresti utilizzare la seguente formula nella colonna A per rendere univoco ciascun record:

=C2+RIF.RIGA()/100000000

 

Ciò aggiungerà il numero di riga diviso per 100.000.000 e creerà un valore univoco. Se hai (ad esempio) stipendi identici di 68.769,43 nelle righe 2 e 49 nella colonna A saranno:

68769.43000002
68769.43000049

 

Il numero grande (100.000.000) fa sì che se avessi un numero identico nella riga 65536, otterresti:

68769.43065536

 

E anche in questo caso il valore arrotondato alla seconda cifra decimale rimarrebbe comunque il numero reale. Se GRANDE e CERCA.VERT vengono eseguiti con i valori “non univoci” nella colonna A, verranno restituiti gli stipendi più grandi (e le persone ad essi associate), in base alla posizione della persona all’interno dell’elenco.

Un terzo approccio consiste nell’utilizzare le funzioni RANGO e CONTA.SE per restituire una “classifica” univoca per ciascun valore nell’elenco degli stipendi. Se gli stipendi rientrano nell’intervallo B1:B50, inserisci quanto segue nella cella C1 e copialo nell’intervallo:

=RANGO(B1;$B$1:$B$50)+CONTA.SE($B$1:B1;B1)-1

 

Ora puoi utilizzare INDICE sui valori della classifica per restituire il nome associato a ciascun stipendio.

Infine, un quarto approccio consiste nel creare una macro in grado di restituire le informazioni desiderate. Esistono molti modi in cui è possibile implementare una macro; quello che segue è solo uno di questi:

Questo contenuto è riservato agli abbonati

Solo gli utenti con Abbonamento VBA Coder oppure Ultimate possono visionarlo.

Se sei già abbonato Accedi per sbloccare il contenuto!

In caso contrario abbonati qui! L'abbonamento è conveniente.

E puoi interromperlo in ogni momento e in completa autonomia.

ABBONATI

(puoi renderti conto di quanti siano i contenuti riservati

raggiungendo questa pagina)

 

I parametri passati a questa funzione definita dall’utente sono il valore, l’intervallo di celle in cui cercare, l’offset da questo intervallo per la ricerca (il numero di colonne a destra è positivo, a sinistra è negativo) e il numero progressivo in caso di duplicati (1 è il primo valore, 2 il secondo e così via).

Per utilizzarla, ad esempio, supponiamo che A1:B1 contenga intestazioni di colonna, A2:A100 contenga gli stipendi e B2:B100 contenga i nomi dei dipendenti. Nella cella E2 puoi inserire quanto segue per determinare lo stipendio più grande nella tabella:

=GRANDE($A$2:$A$100;RIF.RIGA()-1)

 

Nella cella F2 puoi inserire la seguente formula per determinare se la riga contiene duplicati e tenere traccia del “valore” progressivo corrente di quel duplicato:

=SE(E2=E1;1+F1;1)

 

Nella cella G2 puoi utilizzare la seguente formula, che richiama la funzione definita dall’utente:

=IndiceRicerca(E2;$A$2:$A$100;1;F2)

 

Copia le celle da E2:G2 a E3:G6 e avrai (nella colonna G) i nomi dei dipendenti con i cinque stipendi più alti.

 

 

Tags: , , , , , , , , , , , , , , , , , , , , , , , , ,

Ti è stato utile?