Ordinamento progressivo



  • Ordinamento progressivo.
    di Diego. (utente non iscritto) data: 28/02/2014 17:12:10

    Buona sera a tutti, spero che qualcuno riesca a risolvere il mio problemino.
    Il codice VBA riportato riordina le righe dalla cella B4 alla AK33, cioè procede al riordino dalla colonna D nel range B4:AK33.
    Bene fino qua la macro fa il suo lavoro di riordino, il problema è il seguente: la colonna da D4 a D33 contenuta all'interna del range B4:AK33 viene riordinata verso il basso cioè i dati contenuti vengono compilati all'interno di detta colonna dal basso, mettendo le celle senza alcun valore al di sopra partendo da D4. I valori contenuti nella colonna da D4 a D33 sono dei nominativi importati tramite formula da altro foglio, quindi mi mette esempio le prime 20 righe bianche e le ultime 10 compilate, io vorrei che i nominativi in questione vadano a finire in cima quindi partendo dalla cella D4 e non per esempio dalla cella D21.
    Spero di risolvere il problema.
    Grazie, aspetto fiducioso.
    Diego
     
    Sub RiordinaAZ()
      
        Columns("B:AK").AutoFilter
        Range("B4:AK33").Sort Key1:=Range("D5"), Order1:=xlAscending, Header:= _
            xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal
        Selection.AutoFilter
    
    End Sub



  • di Diego (utente non iscritto) data: 28/02/2014 17:15:31

    Scusate il riordino della cella dell'elenco parte dal Range("D5") come dice la mcro VBA.
    Grazie



  • di patel data: 01/03/2014 11:57:15

    il sorting non parte da D5, l'istruzione Key1:=Range("D5") indica soltanto quale colonna deve essere presa a riferimento per fare il sort, se vuoi ordinare soltanto una parte del foglio devi modificare il range su cui fai il sort Range("B4:AK33")





  • di patel data: 01/03/2014 11:58:55

    allega un file di esempio con i dati ed il risultato desiderato





  • di Diego (utente non iscritto) data: 01/03/2014 13:24:31

    Ho allegato il file, come puoi vedere sull'ALLEGATO NR.3 è presente un elenco, quando vado a cliccare su commandbutton1 avviene il riordino.
    Il Range("B4:AK33") parte da B4 in quanto essendo un filtro devo dargli il rigo superiore, altrimenti se il Range parte da B5:AK33, il riordino parte da D6 saltando la riga D5, invece mettendo Range("B4:AK33") calcola giusto partendo da D5.
    Il problema dove riordina cioè invece di far partire le lettere come nell'esempio del file allegato da sopra iniziando in cella D5 le riordina partendo dal basso in cella D28.
    Le celle superiori a D28 come puoi vedere contengono riferimenti di formula, come per le lettere aaa,bbb,ccc, ed è per questo che riordina dal basso conta le celle come occupate essendo presenti dei rife di formula, quindi mette in basso tutto il resto.
    Riesci ad aiutarmi a risolvere, grazie mille intanto.
    Ciao Diego



  • di patel data: 01/03/2014 16:21:56

    Nell'ALLEGATO NR.3 è presente un elenco, ma già ordinato ed in fondo alla tabella, perché, avrei bisogno di ulteriori spiegazioni






  • di Diego (utente non iscritto) data: 02/03/2014 13:37:02

    Il problema è proprio quello non deve partire dal basso, ma dalla prima cella in D5, il riordino viene eseguito ma dal basso anzichè dall'alto, l'elenco deve andare in cima.
    Ciao Diego.



  • di patel data: 02/03/2014 13:56:31

    Non ho capito niente, qual'è l'elenco di partenza da ordinare ? deve rimanere nel foglio iniziale o deve essere copiato in un altro foglio ?






  • di Diego (utente non iscritto) data: 02/03/2014 18:49:15

    Il file contiene due fogli di lavoro, allegato nr.1 e allegato nr.3, il riodino deve avvenire nell'allegato nr.3 dove già esiste un commandbutton con una macro di riordino.
    I nominativi vengono presi dall'allegato n.1 all'egato n.3 con riferimenti di formula execel nella colonna che va da D5 a D33, così come per tutto la tabella riportata nell'allegato n3.
    Nell'allegato n.1 in colonna L vengono inseriti ipotetici nomi che io ho messo come lettere casuali, lo spazio che mi serve per inserire cio' che mi serve va da L4 a L32 ma non tutte le celle verranno impiegate quindi resteranno vuote come sono adesso nel file che avevo allegato.
    I dati di questa colonna vengono presi da fomule e trasmesse all'allegato n.3, a me serve solo che il riordino avvenga spostando il contenuto all'inizio della tabella dell'allegato n.3 cioè parta dalla cella D5 e no dal basso in cella D23.
    Grazie mille.
    Diego



  • di patel data: 02/03/2014 19:17:38

    nel foglio Allegato 3 i dati stanno in basso a causa delle formule che hai messo tu, perché non modifichi le formule ?





  • di Diego (utente non iscritto) data: 02/03/2014 19:58:04

    Si puo' fare ma il riordino sarà sempre lo stesso, lo metterà sempre dal basso, partirà dalla cella d5 solo se le altre saranno vuote e con i rife di formula non sarà possibile dovrei trovare una macro che estrapoli i dati dei nomi, il che non sarebbe un problema ma il vero problema sarebbero i riferimenti connessi al nome che andrà nel foglio dell'allegato n.3, cioè il nome inserito nell'allegato n.1 si porta oltre al nome anche altri dati presenti.
    Hai qualche idea in proposito da propormi?
    Grazie.



  • di patel data: 02/03/2014 20:38:43

    Purtroppo non sono riuscito a capire la logica del tuo foglio e neppure a cosa serve, quindi non sono in grado di aiutarti.





  • di Diego (utente non iscritto) data: 03/03/2014 10:12:47

    Grazie cmq, sei stato molto gentile.
    Un saluto a tutti.
    Ciao Diego.