Note: The other languages of the website are Google-translated. Back to English

Come ordinare i dati delle colonne facendo clic sull'intestazione in Excel?

Supponendo, ho un intervallo di dati, ora, vorrei ordinare i dati in ordine crescente o decrescente facendo clic su qualsiasi intestazione di colonna per visualizzare la seguente schermata. Come hai potuto risolvere questo lavoro in Excel?

ordinamento documento per clic 1

Ordina i dati facendo clic sull'intestazione della colonna con il codice VBA


freccia blu freccia destra Ordina i dati facendo clic sull'intestazione della colonna con il codice VBA

Normalmente, in Excel, puoi applicare la funzione Ordina per ordinare i dati in modo rapido e semplice, ma, per ordinare i dati semplicemente facendo clic su una cella, il seguente codice VBA può farti un favore.

1. Fare clic con il pulsante destro del mouse sulla scheda del foglio in cui si desidera ordinare i dati facendo clic su una cella e scegliere Visualizza codice dal menu contestuale e nel file Microsoft Visual Basic per le applicazioni finestra, copia e incolla il seguente codice nel modulo vuoto:

Codice VBA: ordina i dati facendo clic su un'intestazione di cella o colonna:

Public blnToggle As Boolean
Private Sub Worksheet_BeforeDoubleClick _
(ByVal Target As Range, Cancel As Boolean)
'Updateby Extendoffice
Dim LastColumn As Long, keyColumn As Long, LastRow As Long
Dim SortRange As Range
LastColumn = _
Cells.Find(What:="*", After:=Range("A1"), _
SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
keyColumn = Target.Column
If keyColumn > LastColumn Then Exit Sub
Application.ScreenUpdating = False
Cancel = True
LastRow = Cells(Rows.Count, keyColumn).End(xlUp).Row
Set SortRange = Target.CurrentRegion
blnToggle = Not blnToggle
If blnToggle = True Then
SortRange.Sort _
Key1:=Cells(2, keyColumn), Order1:=xlAscending, Header:=xlYes
Else
SortRange.Sort _
Key1:=Cells(2, keyColumn), Order1:=xlDescending, Header:=xlYes
End If
Set SortRange = Nothing
Application.ScreenUpdating = True
End Sub

ordinamento documento per clic 2

2. Quindi salva e chiudi la finestra del codice, ora, quando fai doppio clic su qualsiasi cella o intestazione di colonna all'interno dell'intervallo di dati, la colonna verrà ordinata in ordine crescente, se fai doppio clic di nuovo, la colonna verrà ordinata in modo decrescente in una volta.


Altri articoli correlati:

Come modificare il valore della cella facendo clic sulla cella?

Come filtrare i dati semplicemente facendo clic sul contenuto della cella in Excel?


I migliori strumenti per la produttività in ufficio

Kutools per Excel risolve la maggior parte dei tuoi problemi e aumenta la tua produttività dell'80%

  • Riutilizzo: Inserisci rapidamente formule complesse, grafici e tutto ciò che hai usato prima; Crittografa celle con password; Crea mailing list e invia email ...
  • Bar Super Formula (modifica facilmente più righe di testo e formula); Layout di lettura (leggi e modifica facilmente un gran numero di celle); Incolla su intervallo filtrato...
  • Unisci celle / righe / colonne senza perdere dati; Contenuto delle celle divise; Combina righe / colonne duplicate... Impedisci celle duplicate; Confronta intervalli...
  • Seleziona Duplica o Unico Righe; Seleziona Righe vuote (tutte le celle sono vuote); Super Find e Fuzzy Find in molte cartelle di lavoro; Selezione casuale ...
  • Copia esatta Più celle senza modificare il riferimento della formula; Riferimenti di creazione automatica a più fogli; Inserisci punti elenco, Caselle di controllo e altro ...
  • Estrai testo, Aggiungi testo, Rimuovi per posizione, Rimuovi spazio; Creare e stampare totali parziali di paging; Converti contenuto e commenti tra celle...
  • Super filtro (salva e applica schemi di filtri ad altri fogli); Ordinamento avanzato per mese / settimana / giorno, frequenza e altro; Filtro speciale in grassetto, corsivo ...
  • Combina cartelle di lavoro e fogli di lavoro; Unisci tabelle in base a colonne chiave; Suddividi i dati in più fogli; Conversione in batch xls, xlsx e PDF...
  • Più di 300 potenti funzionalità. Supporta Office/Excel 2007-2021 e 365. Supporta tutte le lingue. Facile implementazione nella tua azienda o organizzazione. Funzionalità complete Prova gratuita di 30 giorni. Garanzia di rimborso di 60 giorni.
scheda kte 201905

Scheda Office porta l'interfaccia a schede a Office e semplifica notevolmente il lavoro

  • Abilita la modifica e la lettura a schede in Word, Excel, PowerPoint, Publisher, Access, Visio e Project.
  • Apri e crea più documenti in nuove schede della stessa finestra, piuttosto che in nuove finestre.
  • Aumenta la produttività del 50% e riduce ogni giorno centinaia di clic del mouse!
fondo officetab
Commenti (9)
Ancora nessuna valutazione. Puoi essere il primo a votare!
Questo commento è stato fatto dal moderatore sul sito
Funziona bene per salire, fare doppio clic una seconda volta come indicato per scendere non fa nulla
Questo commento è stato fatto dal moderatore sul sito
Non funziona, non succede nulla, so come creare un modulo in vba, l'ho fatto, salvato e niente quando si è fatto doppio clic sull'intestazione. Per favore, aggiustalo.
Questo commento è stato fatto dal moderatore sul sito
No può fare crackerjack - non funziona
Questo commento è stato fatto dal moderatore sul sito
Ciao, Rob, il codice sopra funziona bene nel mio Excel, puoi fornire uno screenshot del tuo problema qui?
Questo commento è stato fatto dal moderatore sul sito
Hallo,
der Code funktioniert auch gut bei mir. Allerdings würde ich gerne die oberen beiden Zeilen nicht mit sortieren, da diese die Überschriften sind.
Wie muss ich dann diesen Code ändern?

Grazie!
Questo commento è stato fatto dal moderatore sul sito
Ciao amico,
Ecco il VBA di cui hai bisogno:

blnToggle pubblico come booleano
Foglio di lavoro secondario privato_BeforeDoubleClick _
(ByVal target come intervallo, annulla come booleano)
'Aggiorna entro Extendoffice
Dim LastColumn As Long, keyColumn As Long, LastRow As Long
Dim SortRange come intervallo
Ultima Colonna = _
Cells.Find(What:="*", After:=Range("A1"), _
SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
keyColumn = Target.Column
Se keyColumn > LastColumn quindi esci da Sub
Application.ScreenUpdating = False
Annulla = Vero
UltimaRiga = Celle(Righe.Conteggio,Colonnachiave).Fine(xlSu).Riga
On Error Resume Next
Imposta SortRange = Target.CurrentRegion
Dim I As Long
i = 2
Imposta SortRange = SortRange.Offset(i, 0)
Imposta SortRange = SortRange.Resize(SortRange.Rows.Count - i, SortRange.Columns.Count)
blnToggle = Non blnToggle
Se blnToggle = Vero allora
SortRange.Ordina _
Key1:=Cells(2, keyColumn), Order1:=xlAscending, Header:=xlNo
Altro
SortRange.Ordina _
Key1:=Cells(2, keyColumn), Order1:=xlDescending, Header:=xlNo
End If
Imposta SortRange = Niente
Application.ScreenUpdating = True
End Sub


Se hai intestazioni di 3 righe, cambia semplicemente "i =2" in "i =3" nel VBA. Spero che sia d'aiuto. Vi auguro una buona giornata.

Cordiali saluti,
Mandy
Questo commento è stato fatto dal moderatore sul sito
Ciao Mandy/a tutti,

È possibile modificare il codice per ordinare solo quando si fa doppio clic sulle intestazioni anziché su qualsiasi cella?

Grazie mille!
Questo commento è stato fatto dal moderatore sul sito
Ciao,
Per risolvere il tuo problema, applica il codice seguente:
Public blnToggle As Boolean
Private Sub Worksheet_BeforeDoubleClick _
(ByVal Target As Range, Cancel As Boolean)
'Updateby Extendoffice
Dim LastColumn As Long, keyColumn As Long, LastRow As Long
Dim SortRange As Range
Dim xAddress As String
Dim xRgI As Range
xAddress = "A1:E2" 'The headers
Set xRgI = Intersect(Range(xAddress), Target)
If xRgI Is Nothing Then Exit Sub
LastColumn = _
Cells.Find(What:="*", After:=Range("A1"), _
SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
keyColumn = Target.Column
If keyColumn > LastColumn Then Exit Sub
Application.ScreenUpdating = False
Cancel = True
LastRow = Cells(Rows.Count, keyColumn).End(xlUp).Row
On Error Resume Next
Set SortRange = Target.CurrentRegion
Dim i As Long
i = 2
Set SortRange = SortRange.Offset(i, 0)
Set SortRange = SortRange.Resize(SortRange.Rows.Count - i, SortRange.Columns.Count)
blnToggle = Not blnToggle
If blnToggle = True Then
SortRange.Sort _
Key1:=Cells(2, keyColumn), Order1:=xlAscending, Header:=xlNo
Else
SortRange.Sort _
Key1:=Cells(2, keyColumn), Order1:=xlDescending, Header:=xlNo
End If
Set SortRange = Nothing
Application.ScreenUpdating = True
End Sub



Per favore, prova, spero che possa aiutarti!
Questo commento è stato fatto dal moderatore sul sito
This works perfectly! Thank you very much skyyang!
Non ci sono ancora commenti pubblicati qui
Si prega di lasciare i commenti in inglese
Pubblicazione come ospite
×
Valuta questo post:
0   Personaggi
Posizioni suggerite

Seguici

Copyright © 2009 - www.extendoffice.com. | Tutti i diritti riservati. Offerto da ExtendOffice, | Mappa del sito
Microsoft e il logo Office sono marchi o marchi registrati di Microsoft Corporation negli Stati Uniti e / o in altri paesi.
Protetto da Sectigo SSL