Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Как выполнить сортировку по нескольким столбцам?
 
Хм. Интересно тогда, что в терминах Excel означает "сначала по столбцу Х, потом по столбцу Y", если вторая сортировка разрушает результаты первой. В моей голове это было "отсортировать по первому столбцу, строки, в которых значения в первом столбце одинаковы, отсортировать по второму".

Но да, конечно, тогда мне нужно решение. Как лучше назвать - "Сортировка по нескольким столбцам"?  
Как выполнить сортировку по нескольким столбцам?
 
Коллеги, помогите - я уже себе мозг сломал.

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

Но вот почему-то не везде это работает. Обратите внимание на строки 84:90 - там почему-то на первое место внутри сортировки по последнему столбцу вышли пустые ячейки. В строках 45:47 такая же ситуация. А вот, например, в строках 14:16 и 17:19 всё правильно отсортировалось.

Что я делаю не так? И если это исправимо - то как?

Спасибо.
Как учесть изменение количества значащих столбцов в формулах массива
 
Bionika, это волшебно работает, тысяча благодарностей.
Полез в формулы разбираться, как устроено :)
Спасибо!
Как учесть изменение количества значащих столбцов в формулах массива
 
Добрый день.

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

В чем суть - есть такая игра "60 секунд", для нее ведется таблица результатов (в приложении). Результаты считаются следующим образом - за конкретную игру каждая команда имеет сумму очков (столбцы "С"), за максимальный результат этой суммы команде дается 7 очков в столбце "О", за следующий - 6, и так далее, за любой ненулевой - 1 очко, за 0 - 0. Это уже сделано и работает, за что спасибо тем, кто помогал.

Теперь хочется добиться автопересчета в столбцах 3 "Место" и 5 "Без 3" - это текущие результаты по сезону.

Дело в том, что столбец "Без 3" заполняется по следующему алгоритму - после N игр в "без трех" попадает сумма первых N-1 столбцов "О" минус три минимальных результата в этих столбцах и плюс N-ный столбец "О" (т.е. в результат не попадают три наихудшие игры, но обязательно попадает финальная игра, вне зависимости от ее результата).
Формулу для этого я худо-бедно написал, но при каждой новой игре в сезоне, когда добавляется новый столбец "О", приходится менять границу диапазоне в этой формуле (в текущем состоянии файла - это "RC[22]"). Очень хочется научить формулу двигать эту границу самостоятельно. Есть подозрение, что это как-то можно сделать через функцию "ГПР", но моих знаний Excel не хватает, хотя пытался подступиться с разных сторон, и со стороны гугла в том числе.

Второй вопрос - это столбец "Место". Поскольку применение формул массива не живет одновременно с сортировкой по столбцу (или я не нашел, как живет), то столбец 3 "Место" просто определяет позицию команды согласно данным столбца "Без 3" - за максимальное значение первое место, за следующее - второе и т.д. Отличие от текущего расчета столбца "О" в том, что там диапазон значений строго определен, а здесь может быть от 1 до полного количества команд. И тут возникает вторая проблема - я не смог разобраться, как автоматически рассчитывать этот диапазон :(. Каждый раз приходится экспериментально определять, сколько же мест должно быть в этот раз, и править формулу на этот счет. Опять же, хотелось бы, чтобы это происходило автоматически.

Свои запасы знаний и гуглений я уже исчерпал, поэтому прошу помощи у сообщества.  
Определение второго максимального, третьего максимального и т.д., создание автоматической турнирной таблицы
 
Раньше никогда с массивами в Excel не работал, поэтому вдуматься в логику потребовалось время, но вроде разобрался. Красивое решение.

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

Что я делаю не так, подскажите, пожалуйста. Как-то неприятно ощущать себя Буратиной.
Определение второго максимального, третьего максимального и т.д., создание автоматической турнирной таблицы
 
Сергей, спасибо, я писал ответ еще на предыдущее и не обновил страницу перед отправкой.
Ваш вариант, похоже, идеально работает. Буду разбираться в логике формулы.
Определение второго максимального, третьего максимального и т.д., создание автоматической турнирной таблицы
 
Спасибо за ответ!

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 в процедурных языках?
Определение второго максимального, третьего максимального и т.д., создание автоматической турнирной таблицы
 
Есть таблица заработанных баллов (столбцы с целыми неотрицательными числами, возможно повторяющимися - в примере 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) Но совсем не понимаю, как сделать поиск "второго максимального".
В голове бродят мысли о макросовой сортировке пузырьком каждого столбца отдельно и дальнейшей обработке массива, но как-то уж очень громоздко получается. Возможно, есть более красивый метод?
Страницы: 1
Наверх