Come ordinare un intervallo utilizzando VBA in Excel (6 esempi)

  • Condividi Questo
Hugh West

Sapere come ordinare un intervallo utilizzando VBA in Excel ci permette di risparmiare tempo e fatica nei nostri calcoli quotidiani. Sebbene Excel fornisca una funzione di ordinamento per impostazione predefinita, utilizzando il comando Gamma.Ordina metodo , si accede a diversi parametri per ordinare un insieme di dati con più opzioni del solito.

Scarica il quaderno di esercizi

Scaricate questo quaderno di esercizi per esercitarvi durante la lettura di questo articolo.

Ordinamento dell'intervallo in Excel.xlsm

Introduzione all'istruzione Range.Sort in Excel VBA

Obiettivo : Per ordinare un intervallo di dati delle celle.

Sintassi:

espressione .ordinamento ( Chiave1 , Ordine1 , Chiave2 , Tipo , Ordine2 , Chiave3 , Ordine3 , Intestazione , OrdinePersonalizzato , Caso di incontro , Orientamento , Metodo di ordinamento , DatiOpzione1 , DatiOpzione2 , DatiOpzione3 )

Qui, il espressione rappresenta un Gamma cioè una cella, una riga, una colonna o una selezione di celle.

Argomenti:

Dobbiamo fornire tre parametri principali per il Gamma.Ordina metodo. Sono...

Chiave - L'intervallo di celle di una o più colonne da ordinare.

Ordine - Specificare l'ordine di ordinamento ascendente o discendente.

Intestazione - Dichiara se le colonne da ordinare hanno un'intestazione o meno.

6 esempi di ordinamento dell'intervallo in Excel VBA

In questo articolo, come set di dati, utilizzeremo un elenco di nomi di persone con la loro data di nascita ed età. Applicheremo diversi metodi per ordinare il set di dati. Esaminiamo l'articolo e facciamo pratica per padroneggiare questi metodi.

1. Ordinare un intervallo di colonne singole utilizzando Excel VBA

In questo esempio tipo persone da più antico a più giovane Seguiamo i passi per utilizzare il programma Gamma . Ordinamento metodo che tipo il Colonna età in ordine decrescente .

Passi:

  • Vai al sito Scheda sviluppatore nel Nastro di Excel a clicca sul Visual Basic

  • Scegliere quindi la voce Opzione modulo dal Scheda Inserisci per aprire un nuovo modulo .

Ora, inseriamo il nostro codice in tipo il Età gamma di colonne.

1.1 Colonna con intestazione

Inserite il seguente codice nell'editor di codice visivo.

 Sub SortRange() Range("D4:D11").Sort Key1:=Range("D4"), _ Order1:=xlDescending, _ Header:=xlYes End Sub 

Stampa F5 o fare clic sul pulsante Correre per eseguire il codice.

Spiegazione:

Nel codice precedente, abbiamo messo

Espressione (oggetto Range)=Range("D4:D11"); il colonna età con un intestazione in cella D4 e valori in D5:D11.

Chiave = Intervallo("D4"); il chiave per smistamento.

Ordine= xlDiscendente; come vogliamo tipo valori da più grande a più basso impostiamo il ordine di ordinamento come in discesa.

Intestazione =xlYes; Nella schermata seguente, si può notare che l'elemento set di dati ha un intestazione per ciascuno degli elementi colonne.

1.2 Colonna senza intestazione

Inserite il seguente codice nell'editor di codice visivo.

 Sub SortRange() Range("D4:D10").Sort Key1:=Range("D4"), _ Order1:=xlDescending, _ Header:=xlNo End Sub 

Stampa F5 o fare clic sul pulsante Correre per eseguire il codice.

Spiegazione:

Nel codice precedente, abbiamo messo

Espressione (oggetto Gamma)=Range("D4:D10"); il colonna età senza un intestazione ha valori in D4:D10.

Chiave = Intervallo("D4"); il chiave per smistamento.

Ordine= xlDiscendente; come vogliamo tipo valori da più grande a più basso impostiamo il ordine di ordinamento come in discesa.

Intestazione =xlNo; Nella schermata seguente, si può notare che l'elemento set di dati non ha intestazione.

Contenuti correlati: Come ordinare le colonne in Excel senza mischiare i dati (3 modi)

2. Utilizzo del codice VBA per ordinare intervalli di colonne multiple in Excel

Per mostrare l'ordinamento in colonne multiple , abbiamo bisogno di modificare nostro set di dati un po'. inserito alcuni nuovo file Nel set di dati modificato, le righe 7, 8, e 9 avere il stesso per i valori di data di nascita e età ma tre nomi diversi . nomi sono non in qualsiasi ordine specifico di salire o scendere.

In questo esempio, ordineremo i nomi in ordine ascendente Eseguiamo il seguente codice nell'editor di Visual Basic:

 Sub SortRange() Range("B4:D12").Sort Key1:=Range("D4"), _ Order1:=xlDescending, _ Key2:=Range("B4"), _ Order2:=xlAscending, _ Header:=xlYes End Sub 

Spiegazione:

Nella schermata precedente, si può notare che le età in colonna D sono ordinata in discendente ordine. Abbiamo aggiunto altri due parametri nel nostro codice precedente.

Chiave2: =Range("B4") , il tasto per ordinare i nomi.

Ordine2: =xlAscendente , il ordine per shorting di nomi .

Di conseguenza, vediamo il nomi in file 7, 8 e 9 sono ora in ordine alfabetico ordinati in ascendente ordine.

Nella schermata seguente, abbiamo modificato il parametro valore del Parametro Ordine2 a tipo il nomi in discendente ordine.

Per saperne di più: Come ordinare più colonne in Excel (5 approcci rapidi)

3. Doppio clic sull'intestazione per ordinare l'intervallo di colonne in Excel VBA

La funzione di ordinamento predefinita di Excel non permette di ordinare i valori di una colonna da doppio clic il intestazione di colonna Ma utilizzando il codice VBA è possibile farlo. Illustriamo questa funzionalità applicando il seguente codice.

 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim KeyRange As Range Dim ColCount As Integer ColCount = Range("A1:C8").Columns.Count Cancel = False If Target.Row = 1 And Target.Column <= ColCount Then Cancel = True Set KeyRange = Range(Target.Address) Range("A1:C8").Sort Key1:=KeyRange, Header:=xlYes End If End Sub 

In questo codice, abbiamo usato il metodo Evento BeforeDoubleClick a disabilitare il solito doppio - clicca che è quello di avviare il montaggio Con questo evento in corso, se si doppio - clicca su uno qualsiasi dei intestazioni di colonna ordina i dati delle colonne in ordine ascendente .

Per saperne di più: VBA per ordinare le colonne in Excel (4 metodi)

Letture simili:

  • Come aggiungere un pulsante di ordinamento in Excel (7 metodi)
  • Ordinare un elenco unico in Excel (10 metodi utili)
  • Come utilizzare la funzione di ordinamento in Excel VBA (8 esempi)
  • Ordinare i duplicati in Excel (colonne e righe)
  • Ordinamento casuale in Excel (formule + VBA)

4. Ordinamento dell'intervallo di colonne in base al colore di sfondo con Excel VBA

È possibile ordinare un intervallo di celle in una colonna basato sul loro colore di sfondo Per farlo, dobbiamo aggiungere a parametro denominato Ordinamento che ha un valore xlSortOnCellColor Per dimostrare l'ordinamento, abbiamo prima impostato diversi colori di sfondo alle file del nostro set di dati .

Poi, nell'editor di codice di Visual Basic copia il seguente codice e premere F5 per eseguirlo.

 Sub SortRangeByBackgroundColor() ActiveWorkbook.Worksheets("background").Sort.SortFields.Add2 Key:=Range("B4"), _ SortOn:=xlSortOnCellColor, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("background").Sort .SetRange Range("B4:D10") .Apply End With End Sub 

Nella schermata seguente, si può vedere il file set di dati ordinati in base al loro colore di sfondo.

Spiegazione:

  • In questo esempio, abbiamo dato un nome al file foglio di lavoro " sfondo "Quindi, nel codice, mettiamo " sfondo " come nostro nome del foglio di lavoro attivo.
  • Abbiamo impostato B4 come il chiave e B4:D10 come il gamma Il codice ordina i dati in base alla chiave.
  • Poiché non è stato specificato il parametro parametro di intestazione , il codice viene eseguito per il valore predefinito nessuna intestazione.
  • Abbiamo impostato il ordine come ascendente, in modo da ordinare i dati da valori più bassi a valori più alti .

Per saperne di più: Come ordinare per colore in Excel (4 criteri)

5. Applicare il codice VBA per ordinare l'intervallo di colonne in base al colore del carattere

Applicando il codice VBA, possiamo ordinare il nostro set di dati in base alla loro colore del carattere Per prima cosa, dobbiamo colorare diverse righe per illustrare l'esempio.

Applicare il codice sottostante per ordinare il set di dati in base a colore del carattere.

 Sub SortRangeByFontColor() ActiveWorkbook.Worksheets("fontcolor").Sort.SortFields.Add(Range("B4"), _ xlSortOnFontColor, xlAscending, xlSortNormal).SortOnValue.Color = RGB(0, 0, 0) With ActiveWorkbook.Worksheets("fontcolor").Sort .SetRange Range("B4:D11") .Header = xlYes .Orientation = xlTopToBottom .Apply End With End Sub 

Spiegazione:

  • In questo esempio, abbiamo dato un nome al file foglio di lavoro " colore del carattere "Quindi, nel codice, mettiamo " colore del carattere " come nostro nome del foglio di lavoro attivo.
  • Abbiamo impostato B4 come il chiave e B4:D11 come il gamma Il codice ordina i dati in base alla chiave.
  • In questo esempio, abbiamo anche specificato il parametro dell'intestazione come xlSì .
  • Qui si imposta il valore ordine come ascendente, in modo da ordinare i dati dai valori più bassi a quelli più alti .
  • Il valore di Ordinamento parametro è
  • Il parametro di orientamento contiene il valore xlTopToBottom perché è obbligatorio.
  • Colore per l'ordinamento è in termini RGB che ha un valore da 0 a 255 .

Per saperne di più: Come ordinare due colonne in Excel in base alla corrispondenza (sia esatta che parziale)

6. Cambiare l'orientamento dell'intervallo di ordinamento utilizzando Excel VBA

Utilizzando il orientamento possiamo cambiare il modo in cui vogliamo ordinare i dati. In questo esempio abbiamo trasposto il nostro set di dati per tipo esso orizzontalmente .

Inseriamo il seguente codice nell'editor di Visual Basic e premiamo F5 per eseguirlo.

 Sub Orientation() Range("B4:H6").Sort Key1:=Range("B6"), _ Order1:=xlAscending, _ Orientation:=xlSortRows, _ Header:=xlYes End Sub 

Qui ordinata i dati in base alla riga dell'età in ascendente ordine da sinistra a diritto Nel codice, si imposta il parametro orientamento come xlSortRows .

Contenuti correlati: Come ordinare automaticamente più colonne in Excel (3 modi)

Cose da ricordare

  • Il Parametro SortOn che abbiamo usato per tipo in base all'intervallo di colonne colore di sfondo e colore del carattere può essere utilizzato solo da un oggetto foglio di lavoro Non possiamo utilizzarlo con un oggetto gamma .
  • Il Evento BeforeDoubleClick ordina i dati solo in ascendente.

Conclusione

Ora sappiamo come ordinare un intervallo utilizzando VBA in Excel. Speriamo che questo vi incoraggi a usarlo con maggiore sicurezza. Per qualsiasi domanda o suggerimento, non dimenticate di inserirlo nella casella dei commenti qui sotto.

Hugh West è un istruttore e analista di Excel di grande esperienza con oltre 10 anni di esperienza nel settore. Ha conseguito una laurea in Contabilità e Finanza e un Master in Economia Aziendale. Hugh ha una passione per l'insegnamento e ha sviluppato un approccio didattico unico che è facile da seguire e capire. La sua conoscenza approfondita di Excel ha aiutato migliaia di studenti e professionisti in tutto il mondo a migliorare le proprie competenze ed eccellere nella propria carriera. Attraverso il suo blog, Hugh condivide le sue conoscenze con il mondo, offrendo esercitazioni gratuite su Excel e formazione online per aiutare le persone e le aziende a raggiungere il loro pieno potenziale.