|
|
|
|
Strumenti |
12-08-2012, 11:09 | #1 |
Senior Member
Iscritto dal: Mar 2004
Messaggi: 604
|
Ordinare dati Excel tramite VBA
Ciao a tutti!
Avrei un problema ad ordinare dei dati in excel tramite vba: in pratica dovrei piazzare nel foglio un pulsante che per mezzo di una macro mi ordini dei dati. Ho 3 colonne (A,B,C) e dovrei ordinare in ordine alfabetico la prima e le restanti due (che contengono valori numerici) di conseguenza. esempio: ORIGINE: (A - frutta) (B - costo) (C - ricavo) ALBICOCCHE 1 1,5 MELE 1,5 1,8 FRAGOLE 0,5 2,2 ARANCE 2 2,1 RISULTATO: (A - frutta) (B - costo) (C - ricavo) ALBICOCCHE 1 1,5 ARANCE 2 2,1 FRAGOLE 0,5 2,2 MELE 1,5 1,8 Ho trovato diversi esempi di funzine sort, ma non riesco a capirne i parametri... Come posso fare? Grazie
__________________
Flickr |
13-08-2012, 13:40 | #2 |
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3208
|
Classico problema di ordinamento a cascata di un Range con più criteri di ordinamento. Alcuni esempi online semplicemente non funzionano perchè vengono tirate in ballo operazioni di selezione, che in VBA e automazione, NON sono necessarie, e spesso sono dannose.
Il mio esempio per il tuo quesito, facile da leggere/adattare è il seguente : Codice:
'Range da ordinare : [A2:C10] Dim WS As Worksheet Set WS = ThisWorkbook.Worksheets("Foglio2") Dim R As Range Set R = WS.Range("A2:C10") With WS.Sort .SortFields.Clear 'Colonna A ASC .SortFields.Add Key:=Range("A2:A10"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal 'Colonna B ASC .SortFields.Add Key:=Range("B2:B10"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal 'Colonna C ASC .SortFields.Add Key:=Range("C2:C10"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal .SetRange R .Header = xlNo 'Nessun Header : titoli colonne su Riga 1 .MatchCase = False .Orientation = xlTopToBottom '... 'Altre opzioni '... .Apply End With
__________________
Contattami su FaceBook --> [ ::: MarcoGG su FaceBook ::: ] Visita il mio Blog --> [ ::: Il Blog di MarcoGG ::: ] |
13-08-2012, 15:06 | #3 |
Senior Member
Iscritto dal: Mar 2004
Messaggi: 604
|
Grazie 1000
Essendo poco pratico di vba ed excel (ci sto giocando da una settimanella per fare un lavoretto molto semplice) non sono riuscito ad adattare il tuo codice... Girando un altro po' su internet ho trovato questo che pare funzioni: Range("A1:C4").Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlNo Alla prossima!
__________________
Flickr |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:50.