Formula ricerca confronta
Hai un problema con Excel? 
Formula ricerca confronta
di visma (utente non iscritto) data: 14/12/2012 21:20:34
Approfitto della competenza dei partecipanti al forum
allego file esempio
foglio dati
nella colonna I ho dei codici univoci senza duplicati circa 300
nella colonna L ho dei nomi univoci senza duplicati circa 300
vorrei ottenere nel foglio distinta scrivendo uno dei nomi esempio pippo in A9 il codice assegnatogli h00012 in C9
e così via se si scrive un nome
Grazie visma
di Vecchio Frac data: 14/12/2012 21:38:05
In C9 del foglio Distinta scrivi la formula:
=INDICE(dati!I:I;CONFRONTA(A9;dati!L:L;0))
e otterrai il risultato voluto (sempre se in foglio Dati la colonna codici si trova in colonna I e la colonna dei nomi in colonna L: ma se ti applichi un po' potrai capire come funziona la formuletta e adattarla ^_^ )
di visma (utente non iscritto) data: 14/12/2012 21:45:10
Grazie vecchio frac una velocità supersonica
mi impegno a capirla certamente è l'unico modo di imparare da chi è più esperto
Grazie visma
di Vecchio Frac data: 14/12/2012 21:52:56
Bravo. Molto bene. Ma comunque non è difficilissima:
- CONFRONTA cerca un valore in una matrice (un range) e ne restituisce la posizione
- INDICE prende una matrice (range) e restituisce il valore che si trova nella posizione specificata dal secondo parametro.
Poichè hai legato il codice al nome, se trovo la posizione del nome (L:L) trovo anche la posizione del suo codice, che è in una colonna diversa, basta specificare quale è questa colonna (I:I).
di visma (utente non iscritto) data: 15/12/2012 17:02:31
Grazie
visma
Approfitto
=SE(INT(RIF.COLONNA()/26,09)=0;CODICE.CARATT(RIF.COLONNA()+64);CODICE.CARATT(INT(RIF.COLONNA()/26,09)+64)&CODICE.CARATT(RIF.COLONNA()-(INT(RIF.COLONNA()/26,09)*26)+64))
Cosa significa e a cosa serve
Grazie visma
di Vecchio Frac data: 15/12/2012 18:23:44
In soldoni quella formula ti dà la traduzione letterale della colonna dove cella in cui immetti la formula stessa; se sei in BR187, restituisce "BR"; se sei in D1 restituisce "D".
Sfrutta il fatto che il RIF.COLONNA restituisce il numero della colonna in cui ti trovi e traduce questo numero nel carattere ASCII corrispondente, aggiunge 64 perchè mentre la prima colonna ha numero 1, il codice della A è 65, quindi se sei in colonna 1 per ottenere 65 (che corrisponde a "A") devi aggiungere 64. Il 26,09 è un espediente per arrotondare gli scarti dovuti all'accumulo delle 26 lettere ogni nove su cento colonne.
di Vecchio Frac data: 15/12/2012 18:32:08
Naturalmente fallisce per versioni superiori a Excel 2003, dove le lettere sono tre (Excel 2007 e Excel 2010, fino a XFD) o più, almeno cinque (il nuovissimo Excel 2013 supporta 2.147.483.647 colonne).
di visma (utente non iscritto) data: 15/12/2012 20:00:50
Be intanto grazie 1000 naturalmente è una risposta non facile per me neofita la devo leggere e rileggere per capirne la logica ma trovo excel molto eccitante ogni passo avanti è un divertimento
Grazie visma
di visma (utente non iscritto) data: 16/12/2012 13:15:28
Ciao sono ancora qua
ho usato la formula di vecchio frac =INDICE(dati!I:I;CONFRONTA(A9;dati!L:L;0))
ed è perfetta ma ho un piccolo problema (allego file) se A11 manca un nome non vorrei N/D ma niente
ci ho provato con SE.ERRORE ma non ci sono riuscito quale è la sintassi corretta se un dato nella ricerca manca
Grazie visma
di Vecchio Frac data: 16/12/2012 13:57:52
La cosa più veloce che mi viene in mente è un SE in combinazione con VAL.ERRORE:
=SE(VAL.ERRORE(INDICE(dati!I:I;CONFRONTA(A11;dati!L:L;0)));"not found";INDICE(dati!I:I;CONFRONTA(A11;dati!L:L;0)))
Io ho Excel 2003 e devo usare VAL.ERRORE.
Sicuramente SE.ERRORE funziona in modo più ottimizzato ma non lo posso provare, però dovrebbe potersi utilizzare così:
=SE.ERRORE(INDICE(dati!I:I;CONFRONTA(A11;dati!L:L;0));"not found")
di visma (utente non iscritto) data: 16/12/2012 15:01:46
Ciao ho provato la formula mi dice vero o falso mentre vorrei che al posto di N/D vorrei niente o zero o trattino
me lo mette anche con un nome giusto
allego nuovo file excel 2003
Grazie visma
di Vecchio Frac data: 16/12/2012 18:25:53
La funzione accoppiata SE e VAL.ERRORE funziona perfettamente... certo che la devi inserire proprio così com'è, non nel modo strano in cui l'hai inserita tu :)
Nella cella gialla del foglio Distinta, a fianco dei nomi da ricercare, inserisci quella formula e tutto funzionerà.
Certo, se hai la versione inglese di Excel la dovrai modificare:
=IF(ISERROR(INDEX(dati!I:I,MATCH(A11,dati!L:L,0))),"not found",INDEX(dati!I:I,MATCH(A11,dati!L:L,0)))
e naturalmente al posto di "not found!" ci devi mettere tu quello che vuoi che compaia se il nome non viene trovato.
di visma (utente non iscritto) data: 16/12/2012 20:18:29
Grazie vecchio frac funziona sbagliavo il riferimento alla cella
penso di aver capito grazie ancora del tuo tempo
visma
Vuoi Approfondire?