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

Как отсортировать данные столбца, щелкнув заголовок в Excel?

Предположим, у меня есть диапазон данных, теперь я хотел бы отсортировать данные в порядке возрастания или убывания, щелкнув заголовок любого столбца, чтобы получить следующий снимок экрана. Как бы вы могли решить эту задачу в Excel?

Сортировка документов по клику 1

Сортировка данных, щелкнув заголовок столбца с кодом VBA


стрелка синий правый пузырь Сортировка данных, щелкнув заголовок столбца с кодом VBA

Обычно в Excel вы можете применить функцию сортировки для быстрой и простой сортировки данных, но для сортировки данных, просто щелкнув ячейку, следующий код VBA может оказать вам услугу.

1. Щелкните правой кнопкой мыши вкладку листа, данные которой вы хотите отсортировать, щелкнув ячейку, и выберите Просмотреть код из контекстного меню, а в открывшемся Microsoft Visual Basic для приложений окна, скопируйте и вставьте следующий код в пустой модуль:

Код VBA: отсортируйте данные, щелкнув заголовок ячейки или столбца:

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

Сортировка документов по клику 2

2. А затем сохраните и закройте окно кода, теперь, когда вы дважды щелкаете любую ячейку или заголовок столбца в диапазоне данных, столбец будет отсортирован в порядке возрастания, если вы дважды щелкните его еще раз, столбец будет отсортирован по убыванию сразу.


Еще статьи по теме:

Как изменить значение ячейки, нажав на ячейку?

Как отфильтровать данные, просто щелкнув содержимое ячейки в Excel?


Лучшие инструменты для работы в офисе

Kutools for Excel решает большинство ваших проблем и увеличивает вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма ...
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон...
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы... Предотвращение дублирования ячеек; Сравнить диапазоны...
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор ...
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое ...
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии...
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом ...
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF...
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
вкладка kte 201905

Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
офисный дно
Сортировать комментарии по
Комментарии (7)
Оценок пока нет. Оцените первым!
Этот комментарий был сведен к минимуму модератором на сайте
Работает нормально, чтобы подняться, дважды щелкните второй раз, как указано, чтобы спуститься, ничего не происходит
Этот комментарий был сведен к минимуму модератором на сайте
Не работает, ничего не происходит, знаю, как создать модуль в vba, сделал это, сохранил и ничего при двойном щелчке заголовка. Пожалуйста, исправьте это.
Этот комментарий был сведен к минимуму модератором на сайте
Не умеешь делать взломщик - не работает
Этот комментарий был сведен к минимуму модератором на сайте
Привет, Роб. Приведенный выше код хорошо работает в моем Excel. Не могли бы вы привести здесь скриншот своей проблемы?
Этот комментарий был сведен к минимуму модератором на сайте
Алло,
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?

Спасибо!
Этот комментарий был сведен к минимуму модератором на сайте
Привет друг,
Вот VBA, который вам нужен:

Public blnToggle As Boolean
Частный подчиненный рабочий лист_BeforeDoubleClick _
(ByVal Target As Range, Cancel As Boolean)
'Обновить Extendoffice
Dim LastColumn As Long, keyColumn As Long, LastRow As Long
Dim SortRange As Range
Последняя колонка = _
Cells.Find(What:="*", After:=Range("A1"), _
SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
keyColumn = Цель.Колонка
Если keyColumn > LastColumn, то выйдите из Sub
Приложение.ScreenUpdating = False
Отмена = True
LastRow = Cells(Rows.Count, keyColumn).End(xlUp).Row
On Error Resume Next
Установите SortRange = Target.CurrentRegion
Dim i As Long
я = 2
Установите SortRange = SortRange.Offset(i, 0)
Установите SortRange = SortRange.Resize (SortRange.Rows.Count - i, SortRange.Columns.Count)
blnToggle = Не blnToggle
Если blnToggle = True Тогда
Диапазон сортировки.Сортировка _
Key1:=Cells(2, keyColumn), Order1:=xlAscending, Заголовок:=xlNo
Еще
Диапазон сортировки.Сортировка _
Key1:=Cells(2, keyColumn), Order1:=xlDescending, Заголовок:=xlNo
End If
Установить диапазон сортировки = ничего
Application.ScreenUpdating = True
End Sub


Если у вас есть заголовки из 3 строк, просто измените «i = 2» на «i = 3» в VBA. Надеюсь, поможет. Хорошего дня.

С уважением,
Мэнди
Этот комментарий был сведен к минимуму модератором на сайте
Привет, Мэнди/все,

Можно ли изменить ваш код, чтобы сортировать только при двойном щелчке заголовков вместо любой ячейки?

Большое спасибо!
Здесь еще нет комментариев
Оставляйте свои комментарии
Публикация как гость
×
Оценить этот пост:
0   Характеристики
Предлагаемые места

Подписывайтесь на Нас

Copyright © 2009 - www.extendoffice.ком. | Все права защищены. Питаться от ExtendOffice, | Карта сайта
Microsoft и логотип Office являются товарными знаками или зарегистрированными товарными знаками Microsoft Corporation в США и / или других странах.
Защищено Sectigo SSL