Pat si chiede se esiste un modo per ordinare automaticamente ogni volta che aggiunge nuovi dati a un foglio di lavoro. Pat pensa che sarebbe fantastico, ad esempio, che quando aggiunge un nuovo nome a un elenco di nomi, i nomi vengono automaticamente ordinati per essere sempre in ordine.

L’unico modo per farlo è utilizzare una macro che viene attivata ogni volta che viene immesso qualcosa di nuovo nel foglio di lavoro. Ad esempio, puoi aggiungere una macro al codice per un foglio di lavoro che viene attivato quando qualcosa nel foglio di lavoro cambia. (È possibile visualizzare la finestra del codice facendo clic con il pulsante destro del mouse sulla scheda del foglio di lavoro e scegliendo Visualizza codice dal menu contestuale risultante.) Il seguente è un esempio di una macro così semplice:

Private Sub Worksheet_Change(ByVal Target As Range)

On Error Resume Next     Range("A1").Sort Key1:=Range("A2"), _       Order1:=xlAscending, Header:=xlYes, _       OrderCustom:=1, MatchCase:=False, _       Orientation:=xlTopToBottom End Sub

La macro presuppone che si desideri ordinare i dati nella colonna A e che sia presente un’intestazione nella cella A1. Se i nomi sono in una colonna diversa, cambia semplicemente il riferimento della cella A2 a una colonna diversa, come B2, C2, ecc.

Naturalmente, l’ordinamento in qualsiasi momento in cui viene apportata una modifica può essere fastidioso.

Potresti voler limitare il momento in cui l’ordinamento viene eseguito in modo che si verifichi solo quando vengono apportate modifiche a una parte specifica dei dati. La seguente versione della macro ordina i dati solo quando viene apportata una modifica nella colonna A.

Private Sub Worksheet_Change(ByVal Target As Range)

On Error Resume Next     If Not Intersect(Target, Range("A:A")) Is Nothing Then         Range("A1").Sort Key1:=Range("A2"), _           Order1:=xlAscending, Header:=xlYes, _           OrderCustom:=1, MatchCase:=False, _           Orientation:=xlTopToBottom     End If End Sub

Esistono alcuni svantaggi nell’usare una macro per ordinare automaticamente i dati. Innanzitutto, poiché stai utilizzando una macro per ordinare, l’operazione è essenzialmente “finale”. In altre parole, dopo l’ordinamento non è possibile utilizzare Ctrl + Z per annullare l’operazione.

Un secondo inconveniente è che l’immissione dei dati potrebbe diventare un po ‘sconcertante.

Ad esempio, se si utilizza una delle macro precedenti e si inizia a inserire i nomi nel foglio di lavoro, verranno ordinati non appena si finisce ciò che è nella colonna A. Se i dati utilizzano cinque colonne e si inizia la voce nella riga 15 , non appena hai finito di inserire il nome nella colonna A (e prima di inserire i dati nelle colonne da B a E), i tuoi dati vengono ordinati nell’ordine corretto. Ciò significa che dovrai trovare dove è stato spostato nell’ordinamento, selezionare la cella corretta nella colonna B e quindi inserire il resto dei dati per il record. Ovviamente, il modo per aggirare questo è aggiungere i dati in un ordine innaturale: assicurati semplicemente che il nome nella colonna A sia l’ultima cosa che inserisci per il record.

_Nota: _

Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.

ExcelTips è la tua fonte di formazione economica su Microsoft Excel.

Questo suggerimento (9006) si applica a Microsoft Excel 2007 e 2010. Puoi trovare una versione di questo suggerimento per la vecchia interfaccia del menu di Excel qui: