[Risolto] Invertire l'ordine di celle selezionate...

Discussioni sull'applicazione per i fogli di calcolo
Rispondi
coimbraz
Messaggi: 79
Iscritto il: lunedì 31 ottobre 2011, 17:08

[Risolto] Invertire l'ordine di celle selezionate...

Messaggio da coimbraz »

Salve,
volevo sapere se è possibile invertire l'ordine delle celle selezionate in una colonna....
posto un esempio per essere più chiaro... ovviamente nel mio caso concreto i numeri sono più complessi di quelli dell'esempio....

http://i34.servimg.com/u/f34/16/51/63/47/selezi10.jpg
Ultima modifica di coimbraz il giovedì 4 luglio 2013, 17:00, modificato 1 volta in totale.
OpenOffice 3.1 su Windows 7
Gaetanopr
Volontario
Volontario
Messaggi: 3316
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Invertire l'ordine di celle selezionate...

Messaggio da Gaetanopr »

In teoria dovrebbe funzionare

Codice: Seleziona tutto

Sub Main

Doc=ThisComponent
Sheet= Doc.Sheets(0)

   c = Sheet.createCursor
   c.gotoEndOfUsedArea(false)
   LastRow = c.RangeAddress.EndRow
   
  riga=o 
   For i = LastRow To 0 Step - 1
      Sheet.getCellByPosition(2, riga).Value =  Sheet.getCellByPosition(0, i).Value
      riga=riga+1
   Next i
   
End sub      
      
      
      
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8945
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Invertire l'ordine di celle selezionate...

Messaggio da charlie »

Ciao, c'è anche il semplice comando da menu: Dati --> Ordina --> Ordina per colonna A --> Decrescente
charlie
macOS 14.6.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
coimbraz
Messaggi: 79
Iscritto il: lunedì 31 ottobre 2011, 17:08

Re: Invertire l'ordine di celle selezionate...

Messaggio da coimbraz »

charlie ha scritto:Ciao, c'è anche il semplice comando da menu: Dati --> Ordina --> Ordina per colonna A --> Decrescente
Non è proprio quello che cerco io......
Questo me li ordina dal più grande al più piccolo... io devo completamente invertirli....
Nel mio esempio erano messi dall 1 al 10 per praticità ma potrebbereo esere in ordine casuale...
tipo:
3 1
2 9
5 7
7 5
9 2
1 3
OpenOffice 3.1 su Windows 7
Gaetanopr
Volontario
Volontario
Messaggi: 3316
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Invertire l'ordine di celle selezionate...

Messaggio da Gaetanopr »

Non hai provato la macro??
ti allego il file
Allegati
INVERTINUMERI.ods
(9.93 KiB) Scaricato 2121 volte
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8945
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Invertire l'ordine di celle selezionate...

Messaggio da charlie »

coimbraz ha scritto:
charlie ha scritto:Ciao, c'è anche il semplice comando da menu: Dati --> Ordina --> Ordina per colonna A --> Decrescente
Non è proprio quello che cerco io......
Questo me li ordina dal più grande al più piccolo... io devo completamente invertirli....
Nel mio esempio erano messi dall 1 al 10 per praticità ma potrebbereo esere in ordine casuale...
Allora va bene la macro di Gaetanopr.
Se per caso non volessi la macro puoi sempre utilizzare l'ordinamento che ti ho suggerito scrivendo una colonna con numeri progressivi accanto alla tua ...
charlie
macOS 14.6.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Avatar utente
lucky63
Volontario assiduo
Volontario assiduo
Messaggi: 3059
Iscritto il: martedì 18 maggio 2010, 17:01

Re: Invertire l'ordine di celle selezionate...

Messaggio da lucky63 »

Ecco una possibile soluzione senza l'utilizzo di macro
Allegati
Test - Inverti lista senza macro.ods
(10.46 KiB) Scaricato 3504 volte
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8945
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Invertire l'ordine di celle selezionate...

Messaggio da charlie »

lucky63 ha scritto:Ecco una possibile soluzione senza l'utilizzo di macro
Ciao, interessante la tua soluzione ma non riesco a capirla. Mi puoi spiegare la sintassi?

Codice: Seleziona tutto

=INDIRETTO("a"&$E$1-RIF.RIGA(E1))
Grazie.
charlie
macOS 14.6.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
coimbraz
Messaggi: 79
Iscritto il: lunedì 31 ottobre 2011, 17:08

Re: Invertire l'ordine di celle selezionate...

Messaggio da coimbraz »

Grazie mille l'ho usata ed è efficace....

Grazie anche a Gaetanopr... non ho usato la macro perchè non ho molta dimestichezza ma ho comunque risloto con l'aiuto di Lucky63 :bravo: :bravo: :bravo:
OpenOffice 3.1 su Windows 7
Avatar utente
lucky63
Volontario assiduo
Volontario assiduo
Messaggi: 3059
Iscritto il: martedì 18 maggio 2010, 17:01

Re: [Risolto] Invertire l'ordine di celle selezionate...

Messaggio da lucky63 »

charlie ha scritto:Ciao, interessante la tua soluzione ma non riesco a capirla. Mi puoi spiegare la sintassi?
=INDIRETTO("a"&$E$1-RIF.RIGA(E1))
Grazie.
Con riferimento al mio esempio del file precedente allegato.
Per una lista di pochi numeri si poteva semplicemente scrivere in cella:
C2 =A10
C3 =A9
C4 =A8

C10 =A2
Ottenendo così il medesimo risultato d’inversione.

La formula inserita in cella C2
=INDIRETTO("a"&$E$1-RIF.RIGA(E1))
è apparentemente criptica ma ha il semplice scopo di ricreare la medesima sequenzialità sopra descritta che diventa particolarmente utile nel caso in cui sia necessario invertire una lunga lista di dati.
In tale caso infatti, invece di scrivere una formula per ogni riga, fatta la prima formula con le debite impostazioni di replicabilità, è poi sufficiente copiarla quanto e dove necessario ottenendone l’adattamento automatico della stessa.

La formula utilizza le funzioni:
INDIRETTO()
CONCATENA() … in versione abbreviata è identificata dal simbolo sostitutivo & (il simbolo sopra al numero 6)
RIF.RIGA()


RIF.RIGA(E1) oppure, al posto di E1, qualsiasi altra cella della riga 1, restituisce come valore 1

$E$1-RIF.RIGA(E1)
Nell’esempio $E$1 ha valore 11
Togliendo a 11 il valore 1 ottenuto da RIF.RIGA(E1) si ottiene come risultato 10

Concatenando dunque la lettera “a” con il numero 10 si ottiene “a10” ossia il riferimento “Testuale” all’ultima cella della lista numeri dell’esempio. La corrispondenza così ottenuta =INDIRETTO(a10) restituisce il contenuto della cella A10.

Copiando in basso la formula =INDIRETTO("a"&$E$1-RIF.RIGA(E1)) ottieni che il riferimento assoluto ($E$1) sarà sempre valore 11 mentre il riferimento relativo alla cella E1 diventerà progressivamente E2, E3, E4, … E10.

Per ogni corrispondente riga dunque:
RIF.RIGA(E2) restituisce valore 2
RIF.RIGA(E3) restituisce valore 3
RIF.RIGA(E4) restituisce valore 4
….
RIF.RIGA(E10) restituisce valore 10

La differenza tra il valore fisso 11 (ottenuto dal riferimento assoluto alla cella $E$1) e il corrispondente valore di riferimento riga fa ottenere per ogni riga progressiva il risultato sequenziale 9, 8, 7, ...2 ottenendo così con la funzione di concatenamento le relative corrispondenze a9, a8, a7, … a2.

La funzione =INDIRETTO() trasforma i riferimenti “testuali” di cella precedenti nei corrispondenti contenuti di cella.

Percui se invece della piccola colonna dati A1:A10 ne hai per esempio una di 300 righe (A1:A300), con il valore cella E1 = 301, a partire da cella C2 si avrà intrinsicamente la sequenzialità decrescente a300, a299, a298, a297, … a2. La funzione INDIRETTO() fa il resto nel senso detto sopra.

... hai afferrato ora il senso logico applicato dalla formula ?
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8945
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: [Risolto] Invertire l'ordine di celle selezionate...

Messaggio da charlie »

lucky63 ha scritto: ... hai afferrato ora il senso logico applicato dalla formula ?
Sì, grazie alla tua dotta spiegazione, complimenti.
charlie
macOS 14.6.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Rispondi