Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Автоматическая сортировка строк по нескольким критериям. - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Manyasha, SLAVICK, китин  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Автоматическая сортировка строк по нескольким критериям. (Формулы/Formulas)
Автоматическая сортировка строк по нескольким критериям.
Shtein Дата: Четверг, 04.07.2019, 14:31 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 64
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Добрый день всем.
Возникла необходимость автоматической сортировки строк по нескольким критериям. Ранее я на каком-то из форумов спрашивал про похожую, более простую задачу (к сожалению, не помню где, давно было). Мне подсказали использовать такой макрос. Суть в том, что у каждого спортсмена есть две попытки, в столбце G я настроил формулой, чтобы подтягивалось меньшее число, то есть более быстрая попытка. И вот по столбу G идет автоматическая сортировка макросом.

[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Range("A2:G55").Sort _
Key1:=Range("G2"), Order1:=xlAscending, _
Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:= _
xlTopToBottom, DataOption1:=xlSortNormal
End Sub
[/vba]

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

Если лучшая попытка, которая подтягивается в столбец G ,одинакова у нескольких спортсменов, то преимущество отдается в первую очередь:
- у кого лучше худшая попытка; - пример в файле: строки 3,4,5 имеют лучший результат по 15,00, то есть их троих надо отсортировать по худшей попытке, у кого из их 3-х она лучше, а именно на 3 строке должен быть спортсмен с лучшей попыткой 15,00, худшей, 23,55; на 4 строке с лучшей попыткой 15,00, худшей, 25,44; на 5 строке лучшей попыткой 15,00, худшей, 27,33;

- если 0,00 - то это нет результата, то есть это хуже любой результативной попытки. - пример в файле: спортсмены из строк 10 и 11 имеют лучший результат по 17,12, но на 10 строке худший результат 0,00, а на 11 строке худший результат 17,25, то есть он должен быть выше.

- если все предыдущие условия равны, то выше должен быть тот спортсмен, у которого меньше номер из столбца В. - пример в файле. Спортсмены из строк 6 и 7 имеют одинаковую лучшую попытку 16,01, и одинаковую худшую попытку 16,27. Но спортсмен из строки 7 имеет личный номер 12, что меньше личного номера 22 спортсмена из строки 6.
К сообщению приложен файл: 9881381.jpg(49.1 Kb) · 7671119.xlsm(16.6 Kb)


"В мире давным давно все известно, главное знать у кого спросить"
Рэй Бредбери.


Сообщение отредактировал Shtein - Четверг, 04.07.2019, 15:41
 
Ответить
СообщениеДобрый день всем.
Возникла необходимость автоматической сортировки строк по нескольким критериям. Ранее я на каком-то из форумов спрашивал про похожую, более простую задачу (к сожалению, не помню где, давно было). Мне подсказали использовать такой макрос. Суть в том, что у каждого спортсмена есть две попытки, в столбце G я настроил формулой, чтобы подтягивалось меньшее число, то есть более быстрая попытка. И вот по столбу G идет автоматическая сортировка макросом.

[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Range("A2:G55").Sort _
Key1:=Range("G2"), Order1:=xlAscending, _
Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:= _
xlTopToBottom, DataOption1:=xlSortNormal
End Sub
[/vba]

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

Если лучшая попытка, которая подтягивается в столбец G ,одинакова у нескольких спортсменов, то преимущество отдается в первую очередь:
- у кого лучше худшая попытка; - пример в файле: строки 3,4,5 имеют лучший результат по 15,00, то есть их троих надо отсортировать по худшей попытке, у кого из их 3-х она лучше, а именно на 3 строке должен быть спортсмен с лучшей попыткой 15,00, худшей, 23,55; на 4 строке с лучшей попыткой 15,00, худшей, 25,44; на 5 строке лучшей попыткой 15,00, худшей, 27,33;

- если 0,00 - то это нет результата, то есть это хуже любой результативной попытки. - пример в файле: спортсмены из строк 10 и 11 имеют лучший результат по 17,12, но на 10 строке худший результат 0,00, а на 11 строке худший результат 17,25, то есть он должен быть выше.

- если все предыдущие условия равны, то выше должен быть тот спортсмен, у которого меньше номер из столбца В. - пример в файле. Спортсмены из строк 6 и 7 имеют одинаковую лучшую попытку 16,01, и одинаковую худшую попытку 16,27. Но спортсмен из строки 7 имеет личный номер 12, что меньше личного номера 22 спортсмена из строки 6.

Автор - Shtein
Дата добавления - 04.07.2019 в 14:31
китин Дата: Четверг, 04.07.2019, 14:43 | Сообщение № 2
Группа: Модераторы
Ранг: Экселист
Сообщений: 5882
Репутация: 914 ±
Замечаний: 0% ±

Excel 2007;Excel 2010
Shtein, - Прочитайте Правила форума
- Оформите код тегами (в режиме правки поста выделите код и нажмите кнопку #, пояснялка здесь)


Не судите строго:я пытаюсь научиться
ЯД 41001877306852/WM R249698041931; Z239672726538
 
Ответить
СообщениеShtein, - Прочитайте Правила форума
- Оформите код тегами (в режиме правки поста выделите код и нажмите кнопку #, пояснялка здесь)

Автор - китин
Дата добавления - 04.07.2019 в 14:43
Pelena Дата: Четверг, 04.07.2019, 16:23 | Сообщение № 3
Группа: Админы
Ранг: Местный житель
Сообщений: 14585
Репутация: 3196 ±
Замечаний: ±

Excel 2010, 2016 & Mac Excel
Так подойдёт?
Код
=ЕСЛИ(E2+F2;МИН(E2+(E2=0)*999+(F2+(F2=0)*999)%%+B2%%%%;F2+(F2=0)*999+(E2+(E2=0)*999)%%+B2%%%%);"без зачета")
К сообщению приложен файл: 7453296.xlsm(16.9 Kb)


"Черт возьми, Холмс! Но как??!!"
ЯД 41001765434816
 
Ответить
СообщениеТак подойдёт?
Код
=ЕСЛИ(E2+F2;МИН(E2+(E2=0)*999+(F2+(F2=0)*999)%%+B2%%%%;F2+(F2=0)*999+(E2+(E2=0)*999)%%+B2%%%%);"без зачета")

Автор - Pelena
Дата добавления - 04.07.2019 в 16:23
Shtein Дата: Четверг, 04.07.2019, 18:01 | Сообщение № 4
Группа: Пользователи
Ранг: Участник
Сообщений: 64
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Pelena, супер, даже без дополнительного макроса. Я вот пытаюсь понять, как вы формулой реализовали, замудрено для меня)
Все вроде как надо. Единственное, там где одна попытка 0,00, формула верно отбирает результат в столбец G, но добавляет к результату 0,1, на скрине выделил.
К сообщению приложен файл: 9123645.jpg(50.6 Kb)


"В мире давным давно все известно, главное знать у кого спросить"
Рэй Бредбери.
 
Ответить
СообщениеPelena, супер, даже без дополнительного макроса. Я вот пытаюсь понять, как вы формулой реализовали, замудрено для меня)
Все вроде как надо. Единственное, там где одна попытка 0,00, формула верно отбирает результат в столбец G, но добавляет к результату 0,1, на скрине выделил.

Автор - Shtein
Дата добавления - 04.07.2019 в 18:01
Pelena Дата: Четверг, 04.07.2019, 20:35 | Сообщение № 5
Группа: Админы
Ранг: Местный житель
Сообщений: 14585
Репутация: 3196 ±
Замечаний: ±

Excel 2010, 2016 & Mac Excel
Так проверьте
К сообщению приложен файл: 5273503.xlsm(16.9 Kb)


"Черт возьми, Холмс! Но как??!!"
ЯД 41001765434816
 
Ответить
СообщениеТак проверьте

Автор - Pelena
Дата добавления - 04.07.2019 в 20:35
Shtein Дата: Пятница, 05.07.2019, 07:54 | Сообщение № 6
Группа: Пользователи
Ранг: Участник
Сообщений: 64
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Супер, все работает hands


"В мире давным давно все известно, главное знать у кого спросить"
Рэй Бредбери.
 
Ответить
СообщениеСупер, все работает hands

Автор - Shtein
Дата добавления - 05.07.2019 в 07:54
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Автоматическая сортировка строк по нескольким критериям. (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс цитирования
© 2010-2019 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!