Come ordinare una lista secondo caratteri predefiniti

Salve a tutti, dovrei ordinare una serie di dati secondo il seguente ordine crescente: pF, nF, uF, cioè prima tutti i dati che contengono pF, poi, a seguire, quelli con nF ed infine quelli con uF.
Qui sotto un esempio:
2.2 uF 63 V
47 uF 63 V
22 uF 10 V
10 pF 50 V
22 pF 50 V
100 nF 50 V
Come fare? Grazie in anticipo per il prezioso supporto

paperino204

Ciao allega un file d’esempio col risultato che vorresti messo a mano.

Come mai hai tolto il file d’esempio? Avevo trovato una soluzione con una formula un pò complessa e se i valori da ordinare sono solo pF, nF e uF.

Ciao gioh66,

innanzi tutto desidero ringraziarti per il tempo speso e per l’impegno impiegato. Questo premesso, mi pare che tu abbia sopravvalutato le mie capacità di gestire Calc. Se posso fare una fotografia, io sono il cavernicolo con la clava e tu smonti da uno Space Shuttle. Bene, entriamo nel dettaglio. Ho provato, senza successo, ad immettere nelle caselle F3 e G3 le tue formule, ma non è successo nulla. Sicuramente avrò commesso degli errori. Tuttavia, nell’esempio che hai inviato, l’ordine non è come lo concepivo e desideravo io. Ti spiego un po’ meglio che cosa mi servirebbe. I condensatori sono dei componenti elettronici e la loro capacità viene misurata in Farad, una misura molto grande. Nell’uso corrente abbiamo a che fare con sottomultipli del Farad, cioè il microFarad o uF, che è 10 alla -6 Farad, il nanoFarad o nF, 10 alla -9 Farad ed il picoFarad o pF, 10 alla -12 Farad. Va da sè che, se vuoi ordinare una lista di questi condensatori, il picoFarad diventa il primo della lista, con tutti quelli che gli appartengono, seguito dal nanoFarad e poi dal microFarad.
Per tornare a noi, se hai ancora voglia e tempo da dedicare, mi dovresti anche spiegare, come ad un neofita, come inserire queste formule. Grazie mille per il prezioso supporto.

Perchè uso il formato .xls e non .ods quello di LO? Non ho alcun problema ad usare .ods, solo che la mia lista verrà condivisa anche con altre persone, che non usano LO. Tutto qua.

Allora per fare l’ordinamento come desideri, modifica la prima formula così:

  =SE.ERRORE(SOSTITUISCI(SE.ERRORE(SE.ERRORE(PICCOLO(SE((DESTRA($A$3:$A$22;2)="pF");VALORE(SOSTITUISCI(SINISTRA($A$3:$A$22;TROVA(" ";$A$3:$A$22));".";",")));RIF.RIGA(A1));PICCOLO(SE((DESTRA($A$3:$A$22;2)="nF");VALORE(SOSTITUISCI(SINISTRA($A$3:$A$22;TROVA(" ";$A$3:$A$22));".";",")));RIF.RIGA(A1)-CONTA.SE(DESTRA($A$3:$A$22;2);"pF")));PICCOLO(SE((DESTRA($A$3:$A$22;2)="uF");VALORE(SOSTITUISCI(SINISTRA($A$3:$A$22;TROVA(" ";$A$3:$A$22));".";",")));RIF.RIGA(A1)-CONTA.SE(DESTRA($A$3:$A$22;2);"nF")-CONTA.SE(DESTRA($A$3:$A$22;2);"pF")));",";".")&" "&SE(RIGHE(F$3:$F3)<=CONTA.SE(DESTRA($A$3:$A$22;2);"pF");"pF";SE(E(RIGHE(F$3:$F3)>CONTA.SE(DESTRA($A$3:$A$22;2);"pF");RIGHE(F$3:$F3)<=CONTA.SE(DESTRA($A$3:$A$22;2);"nF")+CONTA.SE(DESTRA($A$3:$A$22;2);"pF"));"nF";"uF"));"")

Come ti dicevo queste sono formule matriciali. Devi aprire la cella con un doppio click o premendo il tasto funzione F2, ricopi la formula e invece

che dare solo invio, devi usare la combinazione di tasti ctrl+maiuscolo+invio

Una volta fatto copi la cella F3 e la incolli in basso, mentre la cella G3 la copi a destra e in basso.
Guarda il video per maggior chiarezza…spero.

L’altra rimane cosi com’è

Allora! Io ho trovato una soluzione con due formule matriciali. La prima, da inserire in F3, da confermare con ctrl+maiuscolo+invio (e non col solo invio) e da copiare in basso è:

=SE.ERRORE(SOSTITUISCI(SE.ERRORE(SE.ERRORE(PICCOLO(SE((DESTRA($A$3:$A$22;2)="nF");VALORE(SOSTITUISCI(SINISTRA($A$3:$A$22;TROVA(" ";$A$3:$A$22));".";",")));RIF.RIGA(A1));PICCOLO(SE((DESTRA($A$3:$A$22;2)="pF");VALORE(SOSTITUISCI(SINISTRA($A$3:$A$22;TROVA(" ";$A$3:$A$22));".";",")));RIF.RIGA(A1)-CONTA.SE(DESTRA($A$3:$A$22;2);"nF")));PICCOLO(SE((DESTRA($A$3:$A$22;2)="uF");VALORE(SOSTITUISCI(SINISTRA($A$3:$A$22;TROVA(" ";$A$3:$A$22));".";",")));RIF.RIGA(A1)-CONTA.SE(DESTRA($A$3:$A$22;2);"nF")-CONTA.SE(DESTRA($A$3:$A$22;2);"pF")));",";".")&" "&SE(RIGHE(F$3:$F3)<=CONTA.SE(DESTRA($A$3:$A$22;2);"nF");"nF";SE(E(RIGHE(F$3:$F3)>CONTA.SE(DESTRA($A$3:$A$22;2);"nF");RIGHE(F$3:$F3)<=CONTA.SE(DESTRA($A$3:$A$22;2);"nF")+CONTA.SE(DESTRA($A$3:$A$22;2);"pF"));"pF";"uF"));"")

La seconda, sempre matriciale, per cui da confermare come quella sopra, da inserire in G3 e da copiare a destra e in basso è

=SE.ERRORE(INDICE(B$3:B$22;PICCOLO(SE($A$3:$A$22=$F3;RIF.RIGA($B$3:$B$22)-2);CONTA.SE($F$3:$F3;$F3)))&"";"")

Ti allego il file d’esempio

ordinamento particolare–.ods

Ps.: c’è un motivo per cui usi il formato .xls invece del nativo .ods?

La soluzione più semplice probabilmente è quella di tenere separate le celle del valore e dell’unità di misura.

in Strumenti - Opzioni - LibreOffice Calc - Ordina elenchi premere il pulsante Nuovo ed inserire (una per riga) le voci pF, nF, uF nell’ordine crescente corretto.

A quel punto selezioni la tua tabella e dai il comando Dati - Ordina usando come prima chiave di ordinamento l’unità di misura e come seconda i valori.

Salve, se leggi bene la risposta che mi ha dato paperino204 dopo la mia prima risposta l’ordinamento voluto è pF, nF, uF.
Se usi lo strumento ordina questo farà un ordinamento alfabetico nF, pF, uF.

No, se crei l’elenco nelle impostazioni come detto, poi viene ordinato nella stessa sequenza con cui hai inserito le voci nell’elenco.

Se vedi in quella tabella di elenchi ci sono ad esempio i giorni ed i mesi, che poi usa per ordinare correttamente da lunedì a domenica e non alfabeticamente.

Così ti puoi creare degli elenchi di ordinamento arbitrari, come servono a te, in questo caso andrebbe impostato l’elenco delle unità di misura in ordine crescente.

Scusami! Non avevo letto bene la tua risposta…mea culpa…

Salve akurery e gioh66,
scusate se mi faccio vivo solo ora, ma altri impegni, più pressanti, mi hanno tenuto fuori dall’argomento. Oggi, finalmente, sono riuscito a riprendere in mano il problema. Desidero, innanzi tutto, ringraziare entrambi per il supporto offerto e per l’eccellente disponibilità dimostrata. Alla fine, con il vostro aiuto, sono riuscito ad ordinare la lista, come desideravo. Ho adottato il sistema suggerito da akurery, che funziona benissimo. Probabilmente funziona benissimo anche il sistema proposto da gioh66, ma sicuramente io non sono ancora così esperto e, seppure con l’aiuto del video, non sono riuscito a farlo operare. Grazie ancora di nuovo ad entrambi.

paperino204