Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.04.2013, 07:31   #1
n0str0m0
Пользователь
 
Регистрация: 02.12.2010
Сообщений: 36
По умолчанию Как сделать сортировку столбца по клику на его заголовок?

В экселе не силен, но вот возникла задача. Есть таблица со множеством столбцов. Как мне сделать так, чтобы при нажатии на заголовок столбца производилась сортировка по возрастанию, а при повторном нажатии - по убыванию. Знаю, что есть фильтр, но не все умеют им пользоваться, а хотелось бы, чтобы мой файл мог сортироваться по столбцам на любом компе у любого пользователя. Заранее спасибо.
n0str0m0 вне форума Ответить с цитированием
Старый 17.04.2013, 10:32   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

проверяйте.
уже сортируется?
я силой мысли посылал код в Ваш файл (правда, экстрасенс из меня никакой - могло не получиться)
Цитата:
чтобы мой файл мог сортироваться по столбцам на любом компе у любого пользователя
еще посмотрите, разрешены ли у Вас макросы в екселе и потом, в переспективе, они должны быть разрешены "на любом компе у любого пользователя", чтобы и у них сортировалось.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 18.04.2013, 04:24   #3
n0str0m0
Пользователь
 
Регистрация: 02.12.2010
Сообщений: 36
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
проверяйте.
уже сортируется?
я силой мысли посылал код в Ваш файл (правда, экстрасенс из меня никакой - могло не получиться)
еще посмотрите, разрешены ли у Вас макросы в екселе и потом, в переспективе, они должны быть разрешены "на любом компе у любого пользователя", чтобы и у них сортировалось.
Я думал, что проблемка мизерная и без файла понятна. Я не хотел, чтобы за меня все сделали и мне дали готовое. Мне хотелось бы понять сам принцип, как это делается. Прикрепляю файл, если не трудно, то подскажите, как это сделать
Вложения
Тип файла: rar Книга1.rar (7.6 Кб, 15 просмотров)
n0str0m0 вне форума Ответить с цитированием
Старый 18.04.2013, 09:35   #4
BigDaddy
Пользователь
 
Регистрация: 23.11.2012
Сообщений: 45
По умолчанию

а вот так не пойдет?
просто выделяется первая строка с заголовком:

ФИО возраст рост вес

устанавливается фильтр (в меню или правой кнопкой мыши - и нажать на "фильтр")
и сортируйте на здоровье по убываю-возрастанию любой колонки
Вложения
Тип файла: zip Книга1.zip (8.1 Кб, 21 просмотров)
лучше день потерять, а потом за пять минут долететь
BigDaddy вне форума Ответить с цитированием
Старый 18.04.2013, 09:38   #5
BigDaddy
Пользователь
 
Регистрация: 23.11.2012
Сообщений: 45
По умолчанию

или именно таким фильтром, вы говорили, не все могут пользоваться?
может их научить?..
ведь совсем просто!
лучше день потерять, а потом за пять минут долететь
BigDaddy вне форума Ответить с цитированием
Старый 18.04.2013, 11:20   #6
n0str0m0
Пользователь
 
Регистрация: 02.12.2010
Сообщений: 36
По умолчанию

Цитата:
Сообщение от BigDaddy Посмотреть сообщение
или именно таким фильтром, вы говорили, не все могут пользоваться?
может их научить?..
ведь совсем просто!
Да я согласен, что проблемы нет. Проблема с другой стороны. Я даже не знаю, кто этот файл будет смотреть, поэтому и прошу помощи. Поэтому отвергаю вариант с фильтром. Ведь сортируются таблицы на сайтах, причем легко, хотелось бы такое же реализовать у себя в файле
Чувствую, что это надо что-то в виде кнопки в VBA, но как это сделать, не знаю
n0str0m0 вне форума Ответить с цитированием
Старый 18.04.2013, 13:55   #7
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

правой кнопкой по ярлыку листа, "исходный текст", вставте туда этот
Код:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Target.Cells.Count > 1 Then Exit Sub
  If Application.Intersect(Target, Range("B8:E8")) Is Nothing Then Exit Sub
  With Sort
    .SortFields.Clear
    .SortFields.Add Key:=Target.Resize(Target.End(xlDown).Row - Target.Row + 1, 1), SortOn:=xlSortOnValues, _
    Order:=IIf(Right(Target, 1) = " ", xlAscending, xlDescending), DataOption:=xlSortNormal
    If Right(Target, 1) = " " Then Target = Trim(Target) Else Target = Target & " "
    .SetRange Target.Offset(0, 2 - Target.Column).Resize(Target.End(xlDown).Row - Target.Row + 1, 4)
    .Header = xlYes
    .Apply
  End With
End Sub
Цитата:
при нажатии на заголовок столбца производилась сортировка по возрастанию, а при повторном нажатии - по убыванию
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 19.04.2013, 10:34   #8
n0str0m0
Пользователь
 
Регистрация: 02.12.2010
Сообщений: 36
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
правой кнопкой по ярлыку листа, "исходный текст", вставте туда этот
Код:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Target.Cells.Count > 1 Then Exit Sub
  If Application.Intersect(Target, Range("B8:E8")) Is Nothing Then Exit Sub
  With Sort
    .SortFields.Clear
    .SortFields.Add Key:=Target.Resize(Target.End(xlDown).Row - Target.Row + 1, 1), SortOn:=xlSortOnValues, _
    Order:=IIf(Right(Target, 1) = " ", xlAscending, xlDescending), DataOption:=xlSortNormal
    If Right(Target, 1) = " " Then Target = Trim(Target) Else Target = Target & " "
    .SetRange Target.Offset(0, 2 - Target.Column).Resize(Target.End(xlDown).Row - Target.Row + 1, 4)
    .Header = xlYes
    .Apply
  End With
End Sub
Простите, не могли бы Вы подсказать, что с этим всем делать? Сделал буквально, как Вы написали, сохранил файл с поддержкой макросов. И... ничего...
В автокаде знаю, как ЛИСП прикрутить, а здесь - нет
n0str0m0 вне форума Ответить с цитированием
Старый 19.04.2013, 11:22   #9
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

см. вложение
Вложения
Тип файла: rar Сортировка.rar (18.1 Кб, 48 просмотров)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 21.04.2013, 05:01   #10
n0str0m0
Пользователь
 
Регистрация: 02.12.2010
Сообщений: 36
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
см. вложение
Прошу прощения за назойливость. Вы все сделали, почти как мне хотелось. Срабатывает сортировка только один раз, на второе нажатие не реагирует. Необходимо кликнуть в другой ячейке, а затем снова на нужной, чтобы сортировка поменялась с возрастания на убывание.
Вот только мне непонятно, как Вы это сделали. То есть, все работает, но хотелось бы знать, как это работает. Если не трудно, поясните. Ну или дайте ссылочку, где про эту процедуру можно почитать.

Во вкладке РАЗРАБОТЧИК есть кнопка ВСТАВИТЬ, где находятся элементы управления формами. Нельза ли прикрутить как нибудь элемент к заголовкам столбцов, чтобы при нажатии на этот элемент происходила сортировка по возрастанию/убыванию?
n0str0m0 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как сделать чтоб по клику в TreeView в DBGrid yaskin БД в Delphi 8 13.05.2012 10:42
Как сделать сортировку списка Я тут новенький Общие вопросы Delphi 16 23.04.2012 01:43
Как сделать пошаговую сортировку Шелла? Delphi Reydan-46 Помощь студентам 2 23.03.2012 08:38
[Вопрос]Как найти процесс приложения зная его заголовок? saylar_06 Общие вопросы Delphi 9 10.07.2011 21:17
Смена текста по клику на заголовок Иванна JavaScript, Ajax 4 09.02.2011 07:54