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

Cum se sortează datele coloanei făcând clic pe antet în Excel?

Presupunând că am o serie de date, acum aș dori să sortez datele în ordine crescătoare sau descendentă făcând clic pe orice antet de coloană pentru a afișa următoarea captură de ecran. Cum ați putea rezolva această sarcină în Excel?

sortare doc după clic pe 1

Sortează datele făcând clic pe antetul coloanei cu codul VBA


săgeată albastru dreapta balon Sortează datele făcând clic pe antetul coloanei cu codul VBA

În mod normal, în Excel, puteți aplica caracteristica Sortare pentru a sorta datele rapid și ușor, dar, pentru a sorta datele doar făcând clic pe o celulă, următorul cod VBA vă poate face o favoare.

1. Faceți clic dreapta pe fila de foaie pe care doriți să sortați datele făcând clic pe o celulă și alegeți Afișați codul din meniul contextual și în meniul deschis Microsoft Visual Basic pentru aplicații fereastră, copiați și lipiți următorul cod în modulul gol:

Cod VBA: Sortează datele făcând clic pe un antet de celulă sau coloană:

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

sortare doc după clic pe 2

2. Și apoi salvați și închideți fereastra de cod, acum, când faceți dublu clic pe orice antet de celulă sau coloană din intervalul de date, coloana va fi sortată în ordine crescătoare, dacă faceți dublu clic pe ea din nou, coloana va fi sortată descendent simultan.


Mai multe articole conexe:

Cum se schimbă valoarea celulei făcând clic pe celulă?

Cum se filtrează datele doar făcând clic pe conținutul celulei din Excel?


Cele mai bune instrumente de productivitate Office

Kutools pentru Excel vă rezolvă majoritatea problemelor și vă crește productivitatea cu 80%

  • reutilizarea: Introduceți rapid formule complexe, diagrame și orice ai folosit anterior; Criptați celulele cu parola; Creați o listă de corespondență și trimiteți e-mailuri ...
  • Super Formula Bar (editați cu ușurință mai multe linii de text și formulă); Layout de citire (citiți și editați cu ușurință un număr mare de celule); Lipiți la interval filtrat...
  • Merge celule / rânduri / coloane fără a pierde date; Conținut de celule divizate; Combinați rânduri / coloane duplicate... Prevenirea celulelor duplicate; Comparați gamele...
  • Selectați Duplicat sau Unic Rânduri; Selectați Rânduri goale (toate celulele sunt goale); Super Find și Fuzzy Find în multe cărți de lucru; Selectare aleatorie ...
  • Copie exactă Mai multe celule fără modificarea referinței formulelor; Creați automat referințe la foi multiple; Introduceți gloanțe, Casete de selectare și multe altele ...
  • Extrageți textul, Adăugați text, eliminați după poziție, Eliminați spațiul; Creați și imprimați subtotaluri de paginare; Convertiți conținutul dintre celule și comentarii...
  • Super Filtru (salvați și aplicați scheme de filtrare altor foi); Sortare avansată după lună / săptămână / zi, frecvență și multe altele; Filtru special cu bold, italic ...
  • Combinați cărți de lucru și foi de lucru; Merge Tables pe baza coloanelor cheie; Împărțiți datele în mai multe foi; Conversia în loturi xls, xlsx și PDF...
  • Peste 300 de funcții puternice. Suportă Office / Excel 2007-2021 și 365. Acceptă toate limbile. Implementare ușoară în întreprinderea sau organizația dvs. Funcții complete Probă gratuită de 30 de zile. Garanție de returnare a banilor de 60 de zile.
fila kte 201905

Fila Office aduce interfața cu file în Office și vă face munca mult mai ușoară

  • Activați editarea și citirea cu file în Word, Excel, PowerPoint, Publisher, Access, Visio și Project.
  • Deschideți și creați mai multe documente în filele noi ale aceleiași ferestre, mai degrabă decât în ​​ferestrele noi.
  • Vă crește productivitatea cu 50% și reduce sute de clicuri de mouse pentru dvs. în fiecare zi!
fundul officetab
Comentarii (8)
Încă nu există evaluări. Fii primul care evaluează!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Funcționează ok pentru a urca, dublu clic a doua oară, așa cum este menționat pentru a coborî, nu face nimic
Acest comentariu a fost redus la minimum de moderatorul de pe site
Nu funcționează, nu se întâmplă nimic, știu cum să creeze un modul în vba, am făcut asta, am salvat și nimic când s-a făcut dublu clic pe antet. Vă rog să o reparați.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Nu pot face crackerjack - nu funcționează
Acest comentariu a fost redus la minimum de moderatorul de pe site
Salut, Rob, Codul de mai sus funcționează bine în Excel-ul meu, poți să dai problemei tale o captură de ecran aici?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună ziua,
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?

Mulțumesc!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Salut prietene,
Iată VBA de care aveți nevoie:

Public blnToggle As Boolean
Fișă de lucru secundară privată_BeforeDoubleClick _
(ByVal Target As Range, Cancel As Boolean)
'Actualizare de Extendoffice
Dim LastColumn As Long, keyColumn As Long, LastRow As Long
Dim SortRange ca interval
Ultima coloană = _
Cells.Find(What:="*", After:=Range("A1"), _
SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
keyColumn = Target.Column
Dacă keyColumn > LastColumn, apoi ieșiți din sub
Application.ScreenUpdating = Fals
Anulare = Adevărat
LastRow = Cells(Rows.Count, keyColumn).End(xlUp).Row
La data de eroare CV următoare
Setați 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 = Nu blnToggle
Dacă blnToggle = Adevărat, atunci
SortRange.Sort _
Key1:=Cells(2, keyColumn), Order1:=xlAscending, Header:=xlNo
Altfel
SortRange.Sort _
Key1:=Cells(2, keyColumn), Order1:=xlDescending, Header:=xlNu
Final, dacă
Set SortRange = Nimic
Application.ScreenUpdating = Adevărat
End Sub


Dacă aveți anteturi de 3 rânduri, schimbați doar „i =2” cu „i =3” în VBA. Sper ca ajuta. O zi bună.

Cu sinceritate,
Mandy
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună Mandy/toți,

Este posibil să vă schimbați codul pentru a sorta numai atunci când se face dublu clic pe antete în loc de orice celulă?

Vă mulțumesc foarte mult!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Buna,
Pentru a vă rezolva problema, vă rugăm să aplicați codul de mai jos:
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



Vă rugăm să încercați, sper că vă poate ajuta!
Nu există comentarii postate aici încă
Lăsa comentarii
Postare ca invitat
×
Evaluează această postare:
0   Caractere
Locații sugerate

Urmărește-ne

Copyright © 2009 - www.extendoffice.com. | Toate drepturile rezervate. Cu sprijinul ExtendOffice. | Harta site-ului
Microsoft și sigla Office sunt mărci comerciale sau mărci comerciale înregistrate ale Microsoft Corporation în Statele Unite și / sau în alte țări.
Protejat de Sectigo SSL