Страницы: 1
RSS
Определение второго максимального, третьего максимального и т.д., создание автоматической турнирной таблицы
 
Есть таблица заработанных баллов (столбцы с целыми неотрицательными числами, возможно повторяющимися - в примере Data). Максимальное значение может быть в каждом столбце своё, значения могут уменьшаться не последовательно (т.е. не 25,24,23..., а, например, 25,22,21,18)
За баллы начисляются очки (столбец Score) по принципу "за максимальное дается N, за следующее максимальное N-1, далее N-2 и т.д., пока не достигнем 0, который дается всем оставшимся". Сейчас этот столбец заполнен вручную, исходя из N=5.
Затем эти столбцы суммируются и результат пишется в Result.

Очень хочется научиться заполнять Score автоматически. Если бы нужно было вычислить только максимальное - очевидно, для ячейки D4 =ЕСЛИ(C4=МАКС(C2:C26);5;0) Но совсем не понимаю, как сделать поиск "второго максимального".
В голове бродят мысли о макросовой сортировке пузырьком каждого столбца отдельно и дальнейшей обработке массива, но как-то уж очень громоздко получается. Возможно, есть более красивый метод?
 
Не понятно из файла что должно получиться в итоге. См. справку по НАИБОЛЬШИЙ() и НАИМЕНЬШИЙ().

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
как то так
Лень двигатель прогресса, доказано!!!
 
Спасибо за ответ!

1) Файл в итоге должен был получиться таким же, но с автозаполненными колонками Score (сейчас они заполнены вручную).

2) За "НАИБОЛЬШИЙ" спасибо, практически то, что надо. "Практически" - потому что ему на вход для моего случая надо подавать отфильтрованные данные без дубликатов. Если сейчас в приаттаченном примере для последовательности данных 20,19,19,18,18,17 в score получится 5,4,4,2,2,0, то хотелось бы добиться 5,4,4,3,3,2.
Знаю про инструмент "Удалить дубликаты", но он интерактивный, поэтому даже если вводить промежуточные столбцы и применять этот инструмент на них, то после каждого изменения таблицы придется это делать заново. Нет ли функции, позволяющей удалить дубликаты в поданных на вход данных, чтобы использовать ее в формуле?

3) Пока у меня получилась некрасивая конструкция из большого количества вложенных "ЕСЛИ" (см. формулу в столбцах Score приложенного файла). Нет ли какого-то метода ее оптимизировать? Какой-то аналог CASE в процедурных языках?
 
ваще не понял вашего ответа чем не устроил мой вариант он как раз обрабатывает массив удалив дубли после этого определяет 5 наибольших сравнивает с ячейкой и присваивает  значения от 1 до 5
Лень двигатель прогресса, доказано!!!
 
Сергей, спасибо, я писал ответ еще на предыдущее и не обновил страницу перед отправкой.
Ваш вариант, похоже, идеально работает. Буду разбираться в логике формулы.
 
Раньше никогда с массивами в Excel не работал, поэтому вдуматься в логику потребовалось время, но вроде разобрался. Красивое решение.

Но не могу победить уже, видимо, чисто технический вопрос. Хочу расширить количество игроков в таблице. Добиваю данные в столбец C3, выделяю в C4 нужный диапазон, встаю на формулу в первой ячейке массива, правлю в ней вроде бы всё нужное (в диапазонах R3C[-1]:R26C[-1] изменяю 26 на 62), давлю Ctrl-Shift-Enter.
Получаю, как положено, заполненную формулу для всего массива - только в результатах нули. :( Пример - в аттаче.

Что я делаю не так, подскажите, пожалуйста. Как-то неприятно ощущать себя Буратиной.
 
Автору темы: измените отображаемое имя.
Цитата
ЗАПРЕЩЕНО:
3.5. Рекламировать (использовать) в ... именах...любые товары и услуги, публиковать там ссылки на внешние интернет-ресурсы...

Помощь скрыта до устранения замечания
Страницы: 1
Наверх