[Risolto] Cerca verticale ed esclusione duplicati

Rocketval

Nuovo utente
15 Giugno 2015
6
0
0
Miglior risposte
0
#1
Salve a tutti,
sono uno studente di ingegneria meccanica e sto cercando di automatizzare, attraverso excel, un procedimento per la determinazione dell'ubicazione ideale di un impianto/fabbricato.
In tal caso si tratterebbe di uno dei passaggi del cosiddetto metodo delle distanze euclidee al quadrato. Per poter farlo funzionare necessito di un passaggio tanto "stupido" su carta quanto, per le mie conoscenze di excel, quasi irrealizzabile in modo più o meno pulito.
Per farlo mi servirebbe un uso eslusivo delle formule (niente macro/vba o tabelle pivot).
Allego un esempio, vi ringrazio anticipatamente per eventuali suggerimenti. View attachment 105
 
Ultima modifica da un moderatore:

Rocketval

Nuovo utente
15 Giugno 2015
6
0
0
Miglior risposte
0
#5
I passaggi che dovrebbe fare sono da ripetere 2 volte (numeri d'ascisse e numeri d'ordinate):
1- Ordinare i numeri in ordine crescente in questo modo: =SE(A2<>"";PICCOLO($B$2:$B$16;1);"") ... =SE(A2<>"";PICCOLO($B$2:$B$16;2);"") ... etc;
2- Lettura di questi valori ordinati, rimozione duplicati e ordinarli (se necessario) nuovamente in ordine crescente;
3- Correlare ciascun valore al punto corrispondente e concatenarli nel caso ci fossero più punti a condividere quell'ascissa o ordinata.
 
Ultima modifica da un moderatore:

Canapone

Excel Expert
Moderatore
Expert
2 Giugno 2015
1,487
162
63
Firenze
2010 su Win
Miglior risposte
73
#6
Ciao,

saluto subito Gerardo

In G5 da copiare in basso

=SE.ERRORE(INDICE($B$5:$B$12;CONFRONTA(0;INDICE(CONTA.SE($B$5:$B$12;"<"&$B$5:$B$12)-MATR.SOMMA.PRODOTTO(CONTA.SE($B$5:$B$12;$G$4:G4)););0));"")

in K5 da copiare in basso

=SE.ERRORE(INDICE($C$5:$C$12;CONFRONTA(0;INDICE(CONTA.SE($C$5:$C$12;"<"&$C$5:$C$12)-MATR.SOMMA.PRODOTTO(CONTA.SE($C$5:$C$12;$K$4:K4)););0));"")


In F5

=INDICE($A$5:$A$12;AGGREGA(15;6;RIF.RIGA($A$5:$A$12)-4/($B$5:$B$12=G5);1))&SE.ERRORE(","&INDICE($A$5:$A$12;AGGREGA(15;6;RIF.RIGA($A$5:$A$12)-4/($B$5:$B$12=G5);2));"")&SE.ERRORE(","&INDICE($A$5:$A$12;AGGREGA(15;6;RIF.RIGA($A$5:$A$12)-4/($B$5:$B$12=G5);3));"")&SE.ERRORE(","&INDICE($A$5:$A$12;AGGREGA(15;6;RIF.RIGA($A$5:$A$12)-4/($B$5:$B$12=G5);4));"")&SE.ERRORE(","&INDICE($A$5:$A$12;AGGREGA(15;6;RIF.RIGA($A$5:$A$12)-4/($B$5:$B$12=G5);5));"")

In J5

=INDICE($A$5:$A$12;AGGREGA(15;6;RIF.RIGA($A$5:$A$12)-4/($C$5:$C$12=K5);1))&SE.ERRORE(","&INDICE($A$5:$A$12;AGGREGA(15;6;RIF.RIGA($A$5:$A$12)-4/($C$5:$C$12=K5);2));"")&SE.ERRORE(","&INDICE($A$5:$A$12;AGGREGA(15;6;RIF.RIGA($A$5:$A$12)-4/($C$5:$C$12=K5);3));"")&SE.ERRORE(","&INDICE($A$5:$A$12;AGGREGA(15;6;RIF.RIGA($A$5:$A$12)-4/($C$5:$C$12=K5);4));"")&SE.ERRORE(","&INDICE($A$5:$A$12;AGGREGA(15;6;RIF.RIGA($A$5:$A$12)-4/($C$5:$C$12=K5);5));"")


Queste ultime due formule pescano i primi cinque punti.

Per pescare l'eventuale sesto punto aggiungo in fondo alla formula in F5 il segmento:

&SE.ERRORE(","&INDICE($A$5:$A$12;AGGREGA(15;6;RIF.RIGA($A$5:$A$12)-4/($B$5:$B$12=G5);[B]6[/B]));"")

Spero sia chiaro
 
Ultima modifica:
30 Maggio 2015
5,319
72
48
50
Milano, Italy
office 365/2016
Miglior risposte
21
#7
WooooooooWWW! Canapone non ci posso credere!! una lista unica di numeri ordinato, e poi hai estratto con le formule tutto in una cella WoooooWWW...Canapone ti conosco da quasi un anno e giorno dopo giorno fai passi da gigante.. è un orgoglio averti in questo forum,
Comunque devo ammetter che io ultimamente ho perso un po d excel, perchè adesso sto seguendo altri progetti ma a presto mi metterò in linea, e come il prestigiatore che spette di allenarsi...
P.S. x Canapone da poco tempo ti ho mominato Moderatore del forum (Excel in generale) per cui appena hai un po di tempo ci sentiamo su Skype e ti faccio vedere 2 stupidate che può fare un moderatore, esempio scrivere risolto, mettere le 5 stelle...
a presto e grazie per il tuo contributo
 
Ultima modifica:

Canapone

Excel Expert
Moderatore
Expert
2 Giugno 2015
1,487
162
63
Firenze
2010 su Win
Miglior risposte
73
#8
Ciao Gerardo e grazie,

volevo giocare con delle formule che non necessitano la stato matriciale: le ho solo tirate fuori dalla cassetta degli attrezzi ed adattate.

Spero ci siano soluzioni più semplici.

Saluti
 
Ultima modifica:

Rocketval

Nuovo utente
15 Giugno 2015
6
0
0
Miglior risposte
0
#9
Sto provando ad applicarlo al mio caso specifico. Non appena ci riesco ripasso da qui per ringraziarti -------- sto riscontrando una serie di errori strani nel porting..
 

Rocketval

Nuovo utente
15 Giugno 2015
6
0
0
Miglior risposte
0
#10
Ho provato ad utilizzare il tuo metodo e funziona perfettamente, al momento, in G5 e K5 a scendere fino ai 15 punti che necessito.
Per quanto riguarda, invece, il caso dei P1,P2,...,P15 non riesco a far funzionare la formula modificandola nel modo che mi hai spiegato e, dato che non conosco le funzioni utilizzate non so precisamente dove fare le correzioni.
Specifico che nel mio foglio di calcolo i P1,P2,..P15 sono da A2:A16 , le ascisse da B2:B16 e le ordinate da C2:C16 e non è detto che siano piene, potrebbero essere vuote se per esempio i punti sono 5 invece che al completo (15).
 
Ultima modifica da un moderatore:

Canapone

Excel Expert
Moderatore
Expert
2 Giugno 2015
1,487
162
63
Firenze
2010 su Win
Miglior risposte
73
#11
Ciao a tutti,

negli AGGREGA dovresti aggiustare anche i RIF.RIGA

RIF.RIGA($A$2:$A$16)-1

Il problema che vedo - se ho capito - che B2:C16 possono contenere spazi vuoti.

Se fosse questo il caso le formule per mettere in sequenza i numeri vanno cambiate.

Fammi sapere

Saluti
 
Ultima modifica:

Sostieni ForumExcel

Aiutaci a sostenere le spese e a mantenere online la community attraverso una libera donazione!