Новости:

К первому сообщению темы должен быть прикреплен файл примера в формате xls*.
Приложив пример, Вы избавите себя и других от вопросов типа "А какой критерий?", "А куда выводить результат?", "А сколько строк?" и все тех же просьб выложить файл. Рисовать за Вас Ваши же таблички с заданиями, а затем и решение к ним, никто желанием не горит. Да и, как показывает практика, в большинстве случаев без файла решения не найти.

Главное меню

Как узнать текущие параметры сортировки

Автор Poltava, 22.05.2012, 11:40

« назад - далее »

Poltava

Добрый день. Захотел реализовать функцию чтоб при двойном клике по шапке таблицы она сортировалась по этому столбцу. Уперся в то что не могу получить текущие параметры сортировки
То есть клацнул два раза отсортировало от A до Я клацнул опять два раза отсортировало от Я до А
Вопрос в том как определить что уже произведена сортировка от A до Я и отсортировать теперь уже нужно от Я до А
ЦитироватьActiveWorkbook.Worksheets(1).Sort.SortFields.Clear
    ActiveWorkbook.Worksheets(1).Sort.SortFields.Add Key:=Range("E10:E4032") _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets(1).Sort
        .SetRange Range("A10:H4032")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
Сортировку делаю таким макросом

Не пытайтесь спорить с дебилом. Иначе вы опуститесь до его уровня. Где он задавит вас своим опытом.

kuklp

#1
Очень просто:
f = IIf([a1] > [a2], xlAscending, xlDescending)
Или короче:
f = ([a1] > [a2]) + 2
А в сорт:
Order:=f
Я, как всегда, чертовски адекватен... Email: pilipnikop@yandex.ua WM Z206653985942, R334086032478, U238399322728, E332314026771

Poltava

#2
Да но это скорее обход проблемы а не ее решение. Подойдет если нас интересует именно параметр Order: а если нужно узнать SortOn: то тогда как ??? или если данные вообще не сортированы??? тогда чистый рандом получается.
Не пытайтесь спорить с дебилом. Иначе вы опуститесь до его уровня. Где он задавит вас своим опытом.

kuklp

Дерзайте. Может Вам удастся найти то, чего нет.
Я, как всегда, чертовски адекватен... Email: pilipnikop@yandex.ua WM Z206653985942, R334086032478, U238399322728, E332314026771

Poltava

Это намек на то что невозможно узнать отсортированы данные или нет или на то что вообще нельзя ничего узнать???
Не пытайтесь спорить с дебилом. Иначе вы опуститесь до его уровня. Где он задавит вас своим опытом.

kuklp

Это не намек:) Такие вопросы уже задавались на форумах.
"невозможно узнать отсортированы данные" - почему, возможно. Принцип такой же, как я предложил. А узнавать по каким полям группированы данные... можно, но хлопотно. Да и в жизни не нужно. На самом деле всегда нужно сортировать по каким-то условиям. А как оно было отсортировано ранее - какая разница?
Я, как всегда, чертовски адекватен... Email: pilipnikop@yandex.ua WM Z206653985942, R334086032478, U238399322728, E332314026771

Poltava

Ну по сути задача такая. Всего возможны 4 варианта сортировки для одного и того же поля! от А до Я; от Я до А; от большего к меньшему и от меньшего к большему
если с параметром от до можно сравнить то вот как понять как отсортировано сейчас как числа или как текст. То есть по алфавиту или по порядку номеров даже не представляю.
Хотя если все так сложно то может просо вывести пользователю окно сортировки а там сам пусть думает! но опять таки как вывести пользователю окно сортировки ???


Не пытайтесь спорить с дебилом. Иначе вы опуститесь до его уровня. Где он задавит вас своим опытом.

kuklp

Я, как всегда, чертовски адекватен... Email: pilipnikop@yandex.ua WM Z206653985942, R334086032478, U238399322728, E332314026771

RAN

Цитата: Poltava от 22.05.2012, 18:25
отсортировано сейчас как числа или как текст.  То есть по алфавиту или по порядку номеров
А в файле это поглядеть можно?
А то в моем все это как-то фиолетово смотрится! ;D

Poltava

#9
За неимением лучшего будем пользоваться тем что есть! Спасибо KuklP именно тот диалог что я хотел. Правда так и не понял разницу между 39 и 192 полагаю это одно и тоже. Спасибо вам и +1 за терпение и помощь
Ну а в файле посмотреть тоже не проблема смотрите :) столбец КОД можно отсортировать 4 разными методами. Двойной клик на шапке вызывает нужный диалог.
Не пытайтесь спорить с дебилом. Иначе вы опуститесь до его уровня. Где он задавит вас своим опытом.

RAN

Спросил у рекордера.
Он подтверждает - фиолетово!
   ActiveWorkbook.Worksheets("База").Sort.SortFields.Add Key:=Range("E10:E18"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
........

    ActiveWorkbook.Worksheets("База").Sort.SortFields.Add Key:=Range("B10:B18"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

Poltava

Вы прям как в старом анекдоте:
ЦитироватьСловили бандиты зажиточного мужика связали, отвезли на реку
и давай пытать.Окунают его в воду головой.
Через 5 секунд вытаскивают:
- Деньги есть?!
- Неет!
Опять окунают. Через 10 секунд вытаскивают:
- Драгоценности есть?!
- Неет!!
Снова в воду. Через 15 секунд вытаскивают:
- Золото есть?!!
- Нееет!! Вы или фонарик дайте, или опускайте глубже
- дна вообще не видно!!
Значит не те вопросы задавали редактору :) Так сказать вот вам фонарик
ЦитироватьActiveWorkbook.Worksheets(1).Sort.SortFields.Add Key:=Range("C10:C110") _
        , SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal

    ActiveWorkbook.Worksheets(1).Sort.SortFields.Add Key:=Range("C10:C110") _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortTextAsNumbers
Не пытайтесь спорить с дебилом. Иначе вы опуститесь до его уровня. Где он задавит вас своим опытом.