Ordinamento VBA di Excel
Esistono diversi modi per ordinare i dati in Microsoft Excel. C'è un'icona di ordinamento nella barra multifunzione della scheda Dati di Excel da cui puoi ordinare i tuoi dati in un batter d'occhio e ottenere i risultati. Perché allora è necessario scrivere il codice VBA complesso?
Devi tenerlo a mente ogni volta, i codici VBA sono lì per automatizzare le cose. Supponiamo di avere dei dati che vengono aggiornati di tanto in tanto. Forse tutti i giorni, settimanali, mensili, ecc. E hai bisogno dei tuoi dati in un modo specifico ordinato. In questi casi, la funzione VBA SORT può essere utilizzata e verrà fuori come uno strumento utile come riferimento.
VBA ha un metodo Range.Sort per ordinare i dati per te. Dove intervallo specifica l'intervallo di celle che vogliamo ordinare in ordine crescente o decrescente.
La sintassi per Range.Sort è la seguente:
Dove,
- Chiave : colonna / intervallo che devi ordinare. Ex. Se vuoi ordinare le celle A1: A10, dovresti menzionare Range (A1: A10)
- Ordine : questo parametro consente di ordinare i dati in ordine crescente o decrescente.
- Intestazione - Questo è il parametro che specifica se la colonna / intervallo ha intestazioni o meno.
Questi tre parametri sono sufficienti per i nostri procedimenti. Tuttavia, ci sono alcuni altri parametri come MatchCase, SortMethod, ecc. Che puoi sempre esplorare e vedere come funzionano.
Come utilizzare la funzione di ordinamento VBA di Excel?
Impareremo come utilizzare l'ordinamento VBA per ordinare la colonna senza intestazioni, una colonna con intestazioni e più colonne con esempi in Excel.
Puoi scaricare questo modello di ordinamento Excel VBA qui - Modello di ordinamento Excel VBAFunzione di ordinamento VBA - Esempio n. 1
Ordinamento di una singola colonna senza intestazione
Supponiamo di avere una colonna con nomi come mostrato di seguito e tutto ciò che serve è ordinare questi dati in ordine alfabetico in ordine crescente o decrescente.
Seguire i passaggi seguenti per utilizzare la funzione di ordinamento in VBA.
Passaggio 1: definire una nuova procedura secondaria in un modulo e creare una macro.
Codice:
Sottotitolo ExEx1 () End Sub
Passaggio 2: utilizzare la funzione Range.Sort per essere in grado di ordinare questa colonna in ordine crescente.
Codice:
Sub SortEx1 () Range ("A1", Range ("A1"). End (xlDown)). Sort End Sub
Qui stai dando l'intervallo a partire dalla cella A1 all'ultima cella utilizzata / non vuota (vedi la funzione .End (xlDown)) alla funzione Range.Sort.
Passaggio 3: ora, inserisci i valori dell'argomento.
Codice:
Sub SortEx1 () Range ("A1", Range ("A1"). End (xlDown)). Sort Key1: = Range ("A1"), Order1: = xlAscending, Header: = xlNo End Sub
Come abbiamo discusso in precedenza, Key, Order e Header sono gli argomenti importanti e necessari da fornire. Abbiamo fornito Range ("A1") come intervallo iniziale della colonna che dobbiamo ordinare. L'ordine viene fornito come crescente e l'intestazione come no (il che significa che la colonna non ha intestazione).
Questo codice controllerà tutte le celle non vuote a partire da A1 e quindi le ordinerà in ordine crescente a partire dalla cella A1.
Passaggio 4: eseguire questo codice premendo manualmente il pulsante F5 o Esegui e vedere l'output.
Se puoi confrontare questo con l'immagine all'inizio di questo esempio, puoi vedere che i nomi sono ordinati in ordine crescente.
Funzione di ordinamento VBA - Esempio n. 2
Ordinamento di una singola colonna con intestazione
Supponiamo di avere una colonna con l'intestazione come mostrato di seguito. E tu volevi ordinare questa colonna in ordine crescente o decrescente.
Seguire i passaggi seguenti per utilizzare la funzione di ordinamento in VBA.
Passaggio 1: definire una nuova procedura secondaria in un nuovo modello per memorizzare la macro.
Codice:
Sottotitolo ExEx2 () End Sub
Passaggio 2: Usa Fogli ("Esempio n. 2") per specificare quale foglio sono i tuoi dati.
Codice:
Sottotitoli ExEx2 () ("Esempio n. 2") Fine sottotitoli
Step 3: Usa Range ("A1"). Ordina davanti alla riga di codice sopra per renderla una funzione di ordinamento.
Codice:
Sottotitoli ExEx2 () ("Esempio n. 2"). Range ("A1"). Sottotitolo fine ordinamento
Passaggio 4: Fornisci Key1 come intervallo ("A1") per ordinare i dati dalla cella A1, Ordine1 per ordinare i dati in ordine crescente o decrescente e Intestazione come Sì per far sapere al sistema che la prima riga è intestazione nel tuo dati.
Codice:
Sottotitoli ExEx2 () ("Esempio # 2"). Intervallo ("A1"). Chiave ordinamento1: = Intervallo ("A1"), Ordine1: = xlAscendente, Intestazione: = xl Sì Sì Sottotitolo
Passaggio 5: eseguire questo codice premendo F5 o il pulsante Esegui manualmente e vedere l'output.
Qui, i dati dell'Esempio n. 2 della data cartella di lavoro Excel sono ordinati in ordine crescente dato che ha un'intestazione. Ciò significa che, durante l'ordinamento di questi dati, la prima riga (che contiene Emp Name ) viene trascurata perché viene considerata come intestazione per questi dati nella colonna A.
Puoi anche ordinare gli stessi dati in ordine decrescente di alfabeti. Tutto quello che devi fare è cambiare l'ordine da crescente a decrescente.
Passaggio 6: modificare l'ordine1 in decrescente per ordinare i dati in ordine decrescente.
Codice:
Sottotitoli FogliEx2 () ("Esempio n. 2"). Intervallo ("A1"). Chiave ordinamento1: = Intervallo ("A1"), Ordine1: = xlDescendente, Intestazione: = xl Sì Sì Sottotitolo
Passaggio 7: eseguire il codice e vedere un output come indicato di seguito.
Puoi vedere che i dati sono ordinati in ordine decrescente.
Funzione di ordinamento VBA - Esempio n. 3
Ordinamento di più colonne con intestazioni
Fino ad ora, abbiamo spiegato come ordinare i dati di una singola colonna in ordine crescente o decrescente (senza intestazione e con intestazione). Cosa succede se si dispone di dati che è necessario ordinare in base a più colonne? È possibile scrivere un codice per lo stesso?
La risposta è: "Sì, sicuramente si può fare!"
Supponi di avere i dati come indicato di seguito:
Volevi ordinare questi dati prima per Nome Emp e poi per Posizione. Segui i passaggi seguenti per vedere come possiamo codificarlo in VBA.
Passaggio 1: definire una nuova procedura secondaria per aggiungere una macro in un nuovo modulo.
Codice:
SottotitoloExEx3 () End Sub
Passaggio 2: utilizzare un'istruzione With … End With per aggiungere più condizioni di ordinamento in un singolo loop.
Codice:
Sottotitolo SortEx3 () con ActiveSheet.Sort End Sub
Passaggio 3: utilizzare SortFields.Add per aggiungere le condizioni di ordinamento multiplo nello stesso foglio di lavoro.
Codice:
SottotitoloExEx3 () con ActiveSheet.Sort .SortFields.Add Key: = Range ("A1"), Ordine: = xlAscending .SortFields.Add Key: = Range ("B1"), Ordine: = xlAscending End Sub
Passaggio 4: decidere l'intervallo di fogli da ordinare e l'intestazione Nel passaggio successivo.
Codice:
SottotitoloExEx3 () con ActiveSheet.Sort .SortFields.Add Key: = Range ("A1"), Ordine: = xlAscending .SortFields.Add Key: = Range ("B1"), Ordine: = xlAscending .SetRange Range ("A1 : C13 ") .Header = xlYes End Sub
Passaggio 5: utilizzare .Applicare per applicare tutte queste cose in con istruzione e chiudere il ciclo scrivendo End With.
Codice:
SottotitoloExEx3 () con ActiveSheet.Sort .SortFields.Add Key: = Range ("A1"), Ordine: = xlAscending .SortFields.Add Key: = Range ("B1"), Ordine: = xlAscending .SetRange Range ("A1 : C13 ") .Header = xlYes .Apply End With End Sub
Passaggio 6: eseguire questo codice premendo F5 o il pulsante Esegui manualmente e vedere l'output.
In questo codice, ActiveSheets.Sort aiuta il sistema a identificare il foglio in base al quale devono essere ordinati i dati. SortFields.Add consente di aggiungere due condizioni di ordinamento con il loro ordine (crescente in entrambi i casi). SetRange consente al sistema di impostare l'intervallo da A1 a C13. Puoi anche aumentare questo intervallo. Le istruzioni Apply consentono al sistema di applicare tutte le modifiche apportate nel ciclo With.
Infine, otterrai i dati che sono ordinati in base al nome Emp prima e poi per posizione.
Cose da ricordare
- In Ordinamento VBA, è possibile creare intervalli denominati anziché riferimenti di cella e utilizzare lo stesso. Ex. Se hai creato l'intervallo denominato per la cella A1: A10 come "EmpRange", puoi usarlo in Range.Sort come Range ("EmpRange").
- Puoi ordinare i dati in ordine crescente o decrescente come quello di in Excel.
- Se non si è sicuri che i propri dati abbiano o meno un'intestazione, è possibile utilizzare xlGuess nella sezione Intestazione per consentire al sistema di indovinare se la prima riga di dati è un'intestazione o meno.
Articoli consigliati
Questa è stata una guida all'ordinamento VBA di Excel. Qui abbiamo discusso dell'ordinamento VBA e di come utilizzare la funzione di ordinamento VBA di Excel insieme ad esempi pratici e modello Excel scaricabile. Puoi anche consultare i nostri altri articoli suggeriti:
- Guida rapida per Excel Ordina per numero
- Utilizzo della funzione di corrispondenza VBA
- Come ordinare la colonna in Excel?
- VBA While Loop | MS Excel