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 VBA

Funzione 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 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:

  1. Guida rapida per Excel Ordina per numero
  2. Utilizzo della funzione di corrispondenza VBA
  3. Come ordinare la colonna in Excel?
  4. VBA While Loop | MS Excel

Categoria: