Ordinare subtotali

Buongiorno, nel file che allego ho usato l’opzione “Dati → Subtotali” sommando la colonna PrezzoTotale e ora vorrei ordinare questa colonna in modo da avere i prodotti che fatturano di più in cima. Facendo Dati → Ordina e selezionando la colonna PrezzoTotale ottengo dei risultati strani. Ci sono altri modi?

test.ods (157.5 KB)

Suggerimento di soluzione utilizzando la tabella pivot e l’ordinamento per macro.

test_GS.ods (136.1 KB)

1 Like

Grazie, funziona ma non ho capito come hai fatto.Riusciresti a spiegarmi come fare se volessi replicare la tua soluzione in altre situazioni?

Dopo aver utilizzato la tabella pivot, identifica la prima cella di dati nella colonna di sinistra e modificala nella macro.
Le colonne e le righe vengono selezionate dalla macro e nella macro viene modificata la colonna da ordinare.

Vedi la macro con le note…

sub Ordinare
dim document   as object
dim dispatcher as object
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

''''  CELLA INIZIALE
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint" : args1(0).Value = "$A$2"  '<====
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1()) 

''''  SELEZIONA LE COLONNE
dispatcher.executeDispatch(document, ".uno:GoRightSel", "", 0, Array())

''''  SELEZIONA LE RIGHE, INCLUDI IL TOTALE
dispatcher.executeDispatch(document, ".uno:GoDownToEndOfDataSel", "", 0, Array())

''''  ESCLUDI LA RIGA DAL TOTALE.
dispatcher.executeDispatch(document, ".uno:GoUpSel", "", 0, Array())
rem ----------------------------------------------------------------------
dim args6(9) as new com.sun.star.beans.PropertyValue
args6(0).Name = "ByRows" : args6(0).Value = true
args6(1).Name = "HasHeader" : args6(1).Value = false
args6(2).Name = "CaseSensitive" : args6(2).Value = false
args6(3).Name = "NaturalSort" : args6(3).Value = false
args6(4).Name = "IncludeAttribs" : args6(4).Value = true
args6(5).Name = "UserDefIndex" : args6(5).Value = 0

''''  NUMERO DI COLONNA SELEZIONATO
args6(6).Name = "Col1" : args6(6).Value = 2 '<====

args6(7).Name = "Ascending1" : args6(7).Value = false
args6(8).Name = "IncludeComments" : args6(8).Value = false
args6(9).Name = "IncludeImages" : args6(9).Value = true
dispatcher.executeDispatch(document, ".uno:DataSort", "", 0, args6())
rem ----------------------------------------------------------------------
dim args7(0) as new com.sun.star.beans.PropertyValue
args7(0).Name = "ToPoint"
args7(0).Value = "$D$3"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args7())
end Sub

.

Se vuoi maggiori dettagli, puoi contattarci direttamente: gilberto@schiavinatto.com

1 Like