Ordinare i numeri in maniera crescente i numeri in VBA

di il
6 risposte

Ordinare i numeri in maniera crescente i numeri in VBA

Salve,

Ho risolto moltissimi dilemmi ed ho quasi terminato l'automatismo di tutte le procedure.

E' da stamattina che sto provando a fare un'operazione che teoricamente e' semplice ma in pratica sto errando qualcosa...

Ho un elenco di oltre 7000 numeri in una colonna sola, dovrei verificare i singoli valori e metterli in ordine crescente in una seconda colonna.

ecco una piccola parte della tabella (sono oltre 7.000) i numeri:
88
136
184
232
152
232
312
392
472
dovrebbe diventare
88
136
152
184
232
232
312
392
472

Mi sono accorto ora, che dovro' anche verificare di togliere i valori doppi, ma e' un altro argomento

Grazie per la collaborazione

Buona giornata
Daniele

6 Risposte

  • Re: Ordinare i numeri in maniera crescente i numeri in VBA

    Ciao
    suppongo di interpretare in modo non corretto la tua domanda ma, a mio avviso, la cosa più semplice che mi viene in mente è:
    - copio l'intera colonna dei dati (selezionando la lettera della colonna)
    - incollo in altra colonna (selezionando la lettera della colonna)
    - seleziono Dati-Ordina-dal più piccolo al più grande (o come ti serve)
    - seleziono Dati e, nella sezione Strumenti dati, seleziono Rimuovi duplicati
    Ottengo i numeri in ordine e senza doppioni.

    Fai sapere. Ciao,
    Mario
  • Re: Ordinare i numeri in maniera crescente i numeri in VBA

    Marius44 ha scritto:


    Ciao
    suppongo di interpretare in modo non corretto la tua domanda ma, a mio avviso, la cosa più semplice che mi viene in mente è:
    - copio l'intera colonna dei dati (selezionando la lettera della colonna)
    - incollo in altra colonna (selezionando la lettera della colonna)
    - seleziono Dati-Ordina-dal più piccolo al più grande (o come ti serve)
    - seleziono Dati e, nella sezione Strumenti dati, seleziono Rimuovi duplicati
    Ottengo i numeri in ordine e senza doppioni.

    Fai sapere. Ciao,
    Mario
    ciao Ti ringrazio per la risposta, ma devo fare praticamente tutto in automatico.
    senno avrei gia' risolto il problema e' farlo in un VBA

    Grazie comunque
  • Re: Ordinare i numeri in maniera crescente i numeri in VBA

    Ciao
    Mi sembra abbastanza semplice per un ... Super
    Metti in moto il registratore di macro, fai tutto quello che ti ho scritto ed hai il codice bello e pronto.

    Ciao,
    Mario
  • Re: Ordinare i numeri in maniera crescente i numeri in VBA

    Marius44 ha scritto:


    Ciao
    Mi sembra abbastanza semplice per un ... Super
    Metti in moto il registratore di macro, fai tutto quello che ti ho scritto ed hai il codice bello e pronto.

    Ciao,
    Mario
    Ciao e Grazie,

    Domanda di curiosità, se la quantita' dei numeri variasse, funzionerebbe comunque?

    Grazie
    Daniele
  • Re: Ordinare i numeri in maniera crescente i numeri in VBA

    Sì, funzionerebbe lo stesso SOLO CHE devi variare il numero di riga.
    Se, come penso, hai usato il registratore avrai notato che quando selezioni un intervallo il codice ti dice che hai selezionato, ad esempio, l'intervallo A1:A10; è proprio quest'ultima cifra che va cambiata e deve essere riferita all'ultima riga da comprendere nella selezione.
    Per rendere dinamico l'ultima riga, all'inizio della macro metti queswto codice:
    uRiga=ActiveSheet.cells(rows.count,1).end(xlup).row
    La variabile uRiga è da mettere al posto del 10 di cui all'esempio precedente. Il codice relativo all'intervallo diventa ("A1:A" & uRiga)
    Il codice suddetto assume il numero dell'ultima cella "piena" della colonna A.

    Ciao,
    Mario
  • Re: Ordinare i numeri in maniera crescente i numeri in VBA

    Marius44 ha scritto:


    Sì, funzionerebbe lo stesso SOLO CHE devi variare il numero di riga.
    Se, come penso, hai usato il registratore avrai notato che quando selezioni un intervallo il codice ti dice che hai selezionato, ad esempio, l'intervallo A1:A10; è proprio quest'ultima cifra che va cambiata e deve essere riferita all'ultima riga da comprendere nella selezione.
    Per rendere dinamico l'ultima riga, all'inizio della macro metti queswto codice:
    uRiga=ActiveSheet.cells(rows.count,1).end(xlup).row
    La variabile uRiga è da mettere al posto del 10 di cui all'esempio precedente. Il codice relativo all'intervallo diventa ("A1:A" & uRiga)
    Il codice suddetto assume il numero dell'ultima cella "piena" della colonna A.

    Ciao,
    Mario
    Ciao Mario,

    Scusa anche il ritardo ma ci ho messo un po a capire alcune funzioni.
    Comunque seguendo i tuoi Input, sono riuscito a capire il funzionamento della registrazione.
    Quindi ho fatto un piccolo programmino che riordina in ordine crescente anche se...(ci sono ancora le doppie, che presto spero di levare).
    Attualmente ho tenuto i valori A1 e A501 fissi, ma presto li programmero' che siano automatici

    With Foglio2
    lUlta = .Range("A" & Rows.Count).End(xlUp).Row
    .Range("A2:C" & lUlta).Sort _
    Key1:=.Range("A1"), Order1:=xlAscending, _
    Key2:=.Range("A501"), Order2:=xlDescending, Header:=xlGuess, OrderCustom:=1, _
    MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, _
    DataOption2:=xlSortNormal
    End With

    Molte di queste funzioni le apprese dai tuoi suggerimenti e ti ringrazio moltissimo.

    Buona giornata!!!

    Daniele
Devi accedere o registrarti per scrivere nel forum
6 risposte