Condividi:        

Excel 2011 - ORDINARE INDIPENDENTEMENTE COPPIE DI COLONNE

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Excel 2011 - ORDINARE INDIPENDENTEMENTE COPPIE DI COLONNE

Postdi matteo. » 03/09/15 14:27

Ciao ragazzi, vi descrivo il mio cruccio. All'interno di un worksheet excel (versione per Mac, 2011) ho 5740 colonne disposte l'una accanto all'altra (come se fossero una gigantesca tabella), ciascuna di 250 righe. Le colonne in questione devono essere considerate a coppie (2870 x 2 = 5740): la prima colonna di ciascuna coppia contiene al suo interno, in ognuna delle 250 righe, delle variazioni percentuali (positive e negative), mentre la seconda associa a ciascun valore della prima colonna uno specifico ed UNICO valore, anch'esso percentuale (si tratta di un peso di ponderazione, per cui la somma totale di tale seconda colonna sarà 1 per intenderci).
Bene, questa coppia di colonne si ripete, come detto, per 2870 volte: mentre i valori contenuti in ogni prima colonna cambiano, la colonna con i pesi di ponderazione rimane sempre la stessa tutte le 2870 volte.

La mia esigenza è (tramite macro o formula è indifferente) ordinare ciascuna coppia di colonne in ordine ascendente rispetto alla prima colonna (vale a dire partendo dalla variazione % più bassa, per es. -5%, alla più alta). E' fondamentale che l'ordinamento sia indipendente da una coppia all'altra: proprio questo rende inutile l'applicazione del comando di Excel "Ordina" all'intero intervallo di 5740 colonne. Certo si potrebbe utilizzare il comando "ordina" selezionando le coppie di colonne una per una, ma questo mi farebbe perdere circa 8 ore!!

Prima di scrivere qui ho smanettato un po' da solo e cercato altrove sul web ma, come chiaro, senza risultati.
Vi ringrazio già adesso per il vostro aiuto!! :)
Grazie mille, ciao!
Matteo
matteo.
Newbie
 
Post: 2
Iscritto il: 03/09/15 12:10

Sponsor
 

Re: Excel 2011 - ORDINARE INDIPENDENTEMENTE COPPIE DI COLONN

Postdi wallace&gromit » 03/09/15 16:07

ciao matteo e benvenuto nel forum (incredibile che il semplice nickname "matteo" fosse ancora disponibile!!!),

prova con questa macro (funziona in windows7, excel 2013).

Codice: Seleziona tutto
Sub Ordina2Colonne()

For colonna = 1 To 5740 Step 2
    ActiveSheet.Range(Cells(1, colonna), Cells(250, colonna + 1)).Select
    Selection.Sort Key1:=Cells(2, colonna), Order1:=xlDescending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
Next colonna

End Sub


P.S. provala su una copia del file mi raccomando
P.S. 2 la macro presuppone che in riga 1 vi sia un'intestazione
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2174
Iscritto il: 16/01/12 14:21

Re: Excel 2011 - ORDINARE INDIPENDENTEMENTE COPPIE DI COLONN

Postdi matteo. » 04/09/15 16:44

Alè!! Grazie mille, mi hai risparmiato ore di lavoro (devo dire che vedere la macro in esecuzione su milioni di dati mentre tu osservi e basta dà un preoccupante senso di onnipotenza :):)). A parte gli scherzi la macro era perfetta, ho solo cambiato la direzione dell'ordinamento (da disc. ad ascendente) ed il numero di righe (nel mio caso 251 compresa la riga di intestazione).
Grazie ancora! :)
Matteo
matteo.
Newbie
 
Post: 2
Iscritto il: 03/09/15 12:10

Re: Excel 2011 - ORDINARE INDIPENDENTEMENTE COPPIE DI COLONN

Postdi wallace&gromit » 04/09/15 17:30

bene! mi fa piacere che sia funzionato.
Per completezza allego comunque una versione un po' più raffinata. Non aggiorna lo schermo quindi toglie il sentimento di onnipotenza (ma forse va un po' più veloce!)
Inoltre seleziona automaticamente i dati fino all'estensione dell'area usata (assumendo come aree complete la riga1 e la colonna A).
Codice: Seleziona tutto
Sub Ordina2Colonne()

Application.ScreenUpdating = False

UC = Cells(1, 1).End(xlToRight).Column
UR = Cells(1, 1).End(xlDown).Row


For colonna = 1 To UC Step 2
    ActiveSheet.Range(Cells(1, colonna), Cells(UR, colonna + 1)).Select
    Selection.Sort Key1:=Cells(2, colonna), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
Next colonna

End Sub
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2174
Iscritto il: 16/01/12 14:21


Torna a Applicazioni Office Windows


Topic correlati a "Excel 2011 - ORDINARE INDIPENDENTEMENTE COPPIE DI COLONNE":


Chi c’è in linea

Visitano il forum: Anthony47 e 25 ospiti