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

Jak sortować dane kolumn, klikając nagłówek w programie Excel?

Przypuśćmy, że mam szereg danych, teraz chciałbym posortować dane w kolejności rosnącej lub malejącej, klikając dowolny nagłówek kolumny, aby wyświetlić poniższy zrzut ekranu. Jak możesz rozwiązać tę pracę w programie Excel?

doc sortuj według kliknięcia 1

Sortuj dane, klikając nagłówek kolumny z kodem VBA


strzałka niebieski prawy bąbelek Sortuj dane, klikając nagłówek kolumny z kodem VBA

Zwykle w programie Excel można zastosować funkcję Sortuj, aby szybko i łatwo posortować dane, ale aby posortować dane, klikając po prostu komórkę, następujący kod VBA może wyświadczyć ci przysługę.

1. Kliknij prawym przyciskiem myszy kartę arkusza, którą chcesz posortować dane, klikając komórkę, i wybierz Wyświetl kod z menu kontekstowego oraz w otwartym Microsoft Visual Basic dla aplikacji w oknie, skopiuj i wklej następujący kod do pustego modułu:

Kod VBA: Sortuj dane, klikając nagłówek komórki lub kolumny:

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

doc sortuj według kliknięcia 2

2. A następnie zapisz i zamknij okno kodu, teraz, po dwukrotnym kliknięciu dowolnej komórki lub nagłówka kolumny w zakresie danych, kolumna zostanie posortowana w kolejności rosnącej, jeśli ponownie klikniesz dwukrotnie, kolumna zostanie posortowana malejąco.


Więcej powiązanych artykułów:

Jak zmienić wartość komórki, klikając komórkę?

Jak filtrować dane, klikając zawartość komórki w programie Excel?


Najlepsze narzędzia biurowe

Kutools dla programu Excel rozwiązuje większość problemów i zwiększa produktywność o 80%

  • Ponowne użycie: Szybko włóż złożone wzory, wykresy i wszystko, czego używałeś wcześniej; Szyfruj komórki z hasłem; Utwórz listę mailingową i wysyłaj e-maile ...
  • Pasek Super Formula (łatwo edytować wiele wierszy tekstu i formuły); Układ do czytania (łatwe odczytywanie i edytowanie dużej liczby komórek); Wklej do filtrowanego zakresu...
  • Scal komórki / wiersze / kolumny bez utraty danych; Podziel zawartość komórek; Połącz zduplikowane wiersze / kolumny... Zapobiegaj zduplikowanym komórkom; Porównaj zakresy...
  • Wybierz Duplikat lub Unikalny Wydziwianie; Wybierz puste wiersze (wszystkie komórki są puste); Super Find i Fuzzy Find w wielu zeszytach ćwiczeń; Losowy wybór ...
  • Dokładna kopia Wiele komórek bez zmiany odwołania do formuły; Automatyczne tworzenie odniesień do wielu arkuszy; Wstaw punktory, Pola wyboru i nie tylko ...
  • Wyodrębnij tekst, Dodaj tekst, Usuń według pozycji, Usuń przestrzeń; Tworzenie i drukowanie podsumowań stronicowania; Konwertuj zawartość komórek i komentarze...
  • Super filtr (zapisz i zastosuj schematy filtrów do innych arkuszy); Zaawansowane sortowanie według miesiąca / tygodnia / dnia, częstotliwości i innych; Specjalny filtr pogrubieniem, kursywą ...
  • Połącz skoroszyty i arkusze robocze; Scal tabele na podstawie kluczowych kolumn; Podziel dane na wiele arkuszy; Konwersja wsadowa xls, xlsx i PDF...
  • Ponad 300 zaawansowanych funkcji. Obsługuje Office / Excel 2007-2021 i 365. Obsługuje wszystkie języki. Łatwe wdrażanie w przedsiębiorstwie lub organizacji. Pełne funkcje 30-dniowa bezpłatna wersja próbna. 60-dniowa gwarancja zwrotu pieniędzy.
karta kte 201905

Karta Office wprowadza interfejs z zakładkami do pakietu Office i znacznie ułatwia pracę

  • Włącz edycję i czytanie na kartach w programach Word, Excel, PowerPoint, Publisher, Access, Visio i Project.
  • Otwieraj i twórz wiele dokumentów w nowych kartach tego samego okna, a nie w nowych oknach.
  • Zwiększa produktywność o 50% i redukuje setki kliknięć myszką każdego dnia!
officetab dół
Sortuj komentarze według
Komentarze (7)
Brak ocen. Oceń jako pierwszy!
Ten komentarz został zminimalizowany przez moderatora na stronie
Wznoszenie się działa dobrze, kliknij dwukrotnie drugi raz, jak podano, aby zejść nic nie robi
Ten komentarz został zminimalizowany przez moderatora na stronie
Nie działa, nic się nie dzieje, wiem, jak utworzyć moduł w vba, zrobiłem to, zapisano i nic po dwukrotnym kliknięciu nagłówka. Proszę napraw to.
Ten komentarz został zminimalizowany przez moderatora na stronie
No can do crackerjack - nie działa
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć, Rob, Powyższy kod działa dobrze w moim Excelu, czy możesz podać tutaj zrzut ekranu swojego problemu?
Ten komentarz został zminimalizowany przez moderatora na stronie
Witam,
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?

Dziękujemy!
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć przyjacielu,
Oto VBA, którego potrzebujesz:

Publiczny blnToggle As Boolean
Prywatny arkusz pomocniczy_PrzedDoubleClick _
(ByVal Target As Range, Anuluj jako Boolean)
„Aktualizuj do” Extendoffice
Przyciemnij ostatnią kolumnę tak długo, kluczową kolumnę tak długo, ostatni rząd tak długo
Przyciemnij zakres sortowania jako zakres
Ostatnia kolumna = _
Cells.Find(Co:="*", After:=Range("A1"), _
Porządek wyszukiwania:=xlByColumns, SearchDirection:=xlPrevious).Kolumna
keyColumn = Target.Column
Jeśli keyColumn > LastColumn to wyjdź z Sub
Application.ScreenUpdating = Fałsz
Cancel = True
LastRow = Cells(Rows.Count, keyColumn).End(xlUp).Row
On Error Resume Next
Ustaw SortRange = Target.CurrentRegion
Przyciemnij i tak długo
i = 2
Ustaw SortRange = SortRange.Offset(i, 0)
Ustaw SortRange = SortRange.Resize(SortRange.Rows.Count - i, SortRange.Columns.Count)
blnToggle = Nie blnToggle
Jeśli blnToggle = Prawda Wtedy
SortujZakres.Sortuj _
Key1:=Cells(2, keyColumn), Order1:=xlRosnąco, Nagłówek:=xlNo
Więcej
SortujZakres.Sortuj _
Klucz1:=Komórki(2, kolumna kluczowa), Porządek1:=xlMalejąco, Nagłówek:=xlNie
End If
Ustaw Zakres sortowania = Nic
Application.ScreenUpdating = True
End Sub


Jeśli masz nagłówki 3 wierszy, po prostu zmień „i =2” na „i =3” w VBA. Mam nadzieję, że to pomoże. Miłego dnia.

Pozdrawiamy,
Mandy
Ten komentarz został zminimalizowany przez moderatora na stronie
Hi Mandy/all,

Is it possible to change your code to only sort when the headers are double clicked instead of any cell?

Dziękuję bardzo!
Nie ma tu jeszcze żadnych komentarzy
Zostaw swój komentarz
Publikowanie jako gość
×
Oceń ten post:
0   Postacie
Sugerowane lokalizacje

Bądż na bieżąco

Prawa autorskie © 2009 - www.extendoffice.com. | Wszelkie prawa zastrzeżone. Zasilany przez ExtendOffice, | Mapa strony
Microsoft i logo Office są znakami towarowymi lub zastrzeżonymi znakami towarowymi Microsoft Corporation w Stanach Zjednoczonych i / lub innych krajach.
Chronione przez Sectigo SSL