Добрый день всем. Возникла необходимость автоматической сортировки строк по нескольким критериям. Ранее я на каком-то из форумов спрашивал про похожую, более простую задачу (к сожалению, не помню где, давно было). Мне подсказали использовать такой макрос. Суть в том, что у каждого спортсмена есть две попытки, в столбце 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.
Добрый день всем. Возникла необходимость автоматической сортировки строк по нескольким критериям. Ранее я на каком-то из форумов спрашивал про похожую, более простую задачу (к сожалению, не помню где, давно было). Мне подсказали использовать такой макрос. Суть в том, что у каждого спортсмена есть две попытки, в столбце 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
Pelena, супер, даже без дополнительного макроса. Я вот пытаюсь понять, как вы формулой реализовали, замудрено для меня) Все вроде как надо. Единственное, там где одна попытка 0,00, формула верно отбирает результат в столбец G, но добавляет к результату 0,1, на скрине выделил.
Pelena, супер, даже без дополнительного макроса. Я вот пытаюсь понять, как вы формулой реализовали, замудрено для меня) Все вроде как надо. Единственное, там где одна попытка 0,00, формула верно отбирает результат в столбец G, но добавляет к результату 0,1, на скрине выделил.Shtein