Condividi:        

Macro seleziona intervallo di celle variabile e ordina

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

Macro seleziona intervallo di celle variabile e ordina

Postdi ANTONIO1105 » 17/10/19 09:43

Devo fare una macro che faccia i seguenti passaggi, tenendo conto anche del fatto che il comando utilizzato Range("O48").End(xlDown).Offset(0, 2).Select mi permette di volta in volta di individuare “l’altezza” (la riga) dove svolgere il resto della macro.
Riesco ad arrivare fino al primo punto ma poi non riesco a far selezionare tutte le celle presenti nella colonna che variano di volta in volta e quindi registrando la macro e utilizzando il CTRL + Shift, non funziona se la volta successiva il numero di celle occupate aumenta. Come venirne a capo?
I passaggi sono i seguenti: 1. vai prima riga vuota colonna O, spostati di 2 colonne a destra (Q), quindi seleziona tutte le celle in basso presenti nella colonna e ordinale dalla a alla z; 2. di nuovo, vai prima riga vuota colonna O, spostati di 3 colonne a destra (R), quindi seleziona tutte le celle in basso presenti nella colonna e ordinale dalla a alla z; 3. vai prima riga vuota colonna O, spostati di 9 colonne a destra (w), quindi seleziona tutte le celle in basso presenti nella colonna e ordinale dalla a alla z; 4. vai prima riga vuota colonna O, spostati di 11 colonne a destra (y), quindi seleziona tutte le celle in basso presenti nella colonna e ordinale dalla a alla z; 5. infine, vai prima riga vuota colonna O, inserisci trattini fino alla riga finale che coincide con quella in cui c'è scritto "non inserire caratteri speciali o spazi e righe vuoti". Come stabilire il limite?
Grazie anticipatamente
https://www.dropbox.com/transfer/cap_pi ... x63j309Mmo
ANTONIO1105
Utente Junior
 
Post: 37
Iscritto il: 23/01/17 22:25

Sponsor
 

Re: Macro seleziona intervallo di celle variabile e ordina

Postdi Anthony47 » 17/10/19 14:22

Purtroppo non hai spiegato l'impostazione complessiva del tuo lavoro, quindi mi limito a rispondere alle tue domande "tattiche"...
Con l'istruzione Range("O48").End(xlDown).Offset(0, 2).Select tu selezioni la cella di colonna Q che corrisponde alla prima cella libera di colonna O; per inciso, nel file che hai allegato, anche questa cella di colonna Q e' vuota, quindi (visto che vuoi poi procedere con il Sort alfabetico dei dati) mi immagino che in realta' la selezione debba spostarsi alla riga successiva. Pertanto la tua istruzione diventerebbe:
Codice: Seleziona tutto
Range("O48").End(xlDown).Offset(1, 2).Select


Per estendere la selezione sulle celle sottostanti compilate, possiamo usare
Codice: Seleziona tutto
Range(Selection, Selection.End(xlDown)).Select


Quanto all'ordinamento delle Selezione Corrente, modificando leggermente il codice di una macro autoregistrata ho ottenuto questo codice:
Codice: Seleziona tutto
Sub SortSelect()
'Sort monocolonna AZ sulla Selezione corrente
    ActiveSheet.Sort.SortFields.Clear
    ActiveSheet.Sort.SortFields.Add2 Key:=Selection.Cells(1, 1), SortOn:=xlSortOnValues, _
       Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveSheet.Sort
        .SetRange Selection
        .Header = xlNo
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub


Aggiungilo in un "Modulo Standard" del tuo vba, poi quando ti serve userai
Codice: Seleziona tutto
If Selection.Rows.Count < 10000 Then Call SortSelect

L' If serve a evitare di Ordinare aree in cui non sono presenti dati (nel qual caso la selezione risulterebe estesa fino all'ultima riga del foglio, ben piu' delle 10mila inserite nel controlo).

Quanto a riempire le righe di colonna O, lo potresti fare con
Codice: Seleziona tutto
Range("O48").End(xlDown).Offset(1, 1).Select
Range(Selection, Selection.End(xlDown)).Offset(0, -1).Value = "'-"  'Fill con "-"


Insomma la tua macro potrebbe diventare:
Codice: Seleziona tutto
Range("O48").End(xlDown).Offset(1, 2).Select        'Colonna Q
Range(Selection, Selection.End(xlDown)).Select
If Selection.Rows.Count < 10000 Then Call SortSelect

Range("O48").End(xlDown).Offset(1, 3).Select        'Colonna R
Range(Selection, Selection.End(xlDown)).Select
If Selection.Rows.Count < 10000 Then Call SortSelect

'replicare per altre colonne

'Fill colonna O:
Range("O48").End(xlDown).Offset(1, 1).Select
Range(Selection, Selection.End(xlDown)).Offset(0, -1).Value = "'-"  'Fill con "-"

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19438
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro seleziona intervallo di celle variabile e ordina

Postdi ANTONIO1105 » 17/10/19 16:22

grazie 1000 intanto per la tua sollecitudine e disponibilità
ho provato a limitare i tuoi suggerimenti esclusivamente alla colonna Q e il successivo riempimento della O. ma mi da errore. ti allego lo screenshot

https://www.dropbox.com/transfer/cap_pi ... 2j0UAGZKZg

ancora grazie
ANTONIO1105
Utente Junior
 
Post: 37
Iscritto il: 23/01/17 22:25

Re: Macro seleziona intervallo di celle variabile e ordina

Postdi Anthony47 » 17/10/19 17:55

Ma... il codice della Sub SortSelect dove lo hai inserito?
Avatar utente
Anthony47
Moderatore
 
Post: 19438
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro seleziona intervallo di celle variabile e ordina

Postdi ANTONIO1105 » 17/10/19 18:02

ho tentato di unificare le due macro
pensavo potesse essere praticabile
e cioè seguendo i seguenti passaggi logici: 1. vai a ; 2 seleziona; 3 ordina; 4 compila con i trattini la colonna O
ANTONIO1105
Utente Junior
 
Post: 37
Iscritto il: 23/01/17 22:25

Re: Macro seleziona intervallo di celle variabile e ordina

Postdi ANTONIO1105 » 17/10/19 18:02

ho tentato di unificare le due macro
pensavo potesse essere praticabile
e cioè seguendo i seguenti passaggi logici: 1. vai a ; 2 seleziona; 3 ordina; 4 compila con i trattini la colonna O
ANTONIO1105
Utente Junior
 
Post: 37
Iscritto il: 23/01/17 22:25

Re: Macro seleziona intervallo di celle variabile e ordina

Postdi ANTONIO1105 » 17/10/19 18:18

ecco la macro:
Range("O48").End(xlDown).Offset(1, 2).Select
Range(Selection, Selection.End(xlDown)).Select
If Selection.Rows.Count < 10000 Then Call SortSelect
ActiveSheet.Sort.SortFields.Clear
ActiveSheet.Sort.SortFields.Add2 Key:=Selection.Cells(1, 1), SortOn:=xlSortOnValues, _
Order:=xlAscending, DataOption:=xlSortNormal
With ActiveSheet.Sort
.SetRange Selection
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply

Range("O48").End(xlDown).Offset(1, 1).Select
Range(Selection, Selection.End(xlDown)).Offset(0, -1).Value = "'-" 'Fill con "-"


End Sub
ANTONIO1105
Utente Junior
 
Post: 37
Iscritto il: 23/01/17 22:25

Re: Macro seleziona intervallo di celle variabile e ordina

Postdi Anthony47 » 17/10/19 18:33

Fai come suggerito:
-metti il codice della Sub SortSelect in un "Modulo Standard" del tuo vba (ve bene quello dove hai messo il codice principale)
-poi all'occorrenza lo richiami con Call SortSelect

Quindi:
1) Copia e Incolla sul tuo vba il codice della Sub SortSelect

2) L'ultimo codice che hai pubblicato sara':
Codice: Seleziona tutto
Range("O48").End(xlDown).Offset(1, 2).Select
Range(Selection, Selection.End(xlDown)).Select
If Selection.Rows.Count < 10000 Then Call SortSelect

Range("O48").End(xlDown).Offset(1, 1).Select
Range(Selection, Selection.End(xlDown)).Offset(0, -1).Value = "'-" 'Fill con "-"


Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19438
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro seleziona intervallo di celle variabile e ordina

Postdi ANTONIO1105 » 17/10/19 18:57

appena torno dal lavoro provo a rifare il tutto e ti faccio sapere
grazie per la pazienza
ANTONIO1105
Utente Junior
 
Post: 37
Iscritto il: 23/01/17 22:25

Re: Macro seleziona intervallo di celle variabile e ordina

Postdi ANTONIO1105 » 17/10/19 21:50

Risolto grazie ai tuoi suggerimenti
funziona tutto alla perfezione
grazie 1000
ANTONIO1105
Utente Junior
 
Post: 37
Iscritto il: 23/01/17 22:25


Torna a Applicazioni Office Windows


Topic correlati a "Macro seleziona intervallo di celle variabile e ordina":


Chi c’è in linea

Visitano il forum: Nessuno e 29 ospiti