2016-09-07 13 views
0

Я так долго думал об этом, но я не могу найти решение того, что, по моему мнению, является довольно простой проблемой.Формула Excel для применения столбца штрафа к ранжированию

У меня есть таблица результатов, где иногда кому-то дается штраф в разной сумме. Это вводится в столбец штрафа (Col C).

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

Я попытался выяснить, возможно ли это, ссылаясь на штраф за функцию «ROW()», но не смог добиться желаемого эффекта.

Col D показывает желаемый выход формулы.

Col E включен только для справки, чтобы показать желаемый эффект для каждой строки.

Col A Col B  Col C  Col D  Col E 
Pos  Name  Penalty New Pos Change 
1  Jack     1   0 
2  Matt     2   0 
3  Daniel  2   5   +2 
4  Gordon    3   -1 
5  Phillip    4   -1 
6  Günther    6   0 
7  Johann  3   10  +3 
8  Alain     7   -1 
9  John     8   -1 
10  Gianmaria    9   -1 

Большой вопрос: если кому-то вручен большой штраф, например, «10», он затрагивает следующие десять рядов. Я не могу работать, как включить эту переменную логику ...

мне будет интересно услышать приближение других ...

+0

Что делать, если игрок получает 10 штрафных очков, но есть только два игрока ниже? Это по пять или по одному только по одному? – Andreas

+0

В этом случае человек просто уходит в нижнюю часть списка - то есть, если они изначально были P5, получают 10 штрафных, но их всего 10 человек, затем они идут на P10. –

+0

Что произойдет, если два или более человека будут наказаны таким образом, чтобы их результирующие позиции были одинаковыми? Например, игрок в 1-й позиции оштрафован на 3 позиции, а игрок на 2-й позиции оштрафован на 2 позиции? –

ответ

2

Вам нужно использовать RANK() функции:

Excel RANK Function Examples

В новой колонке добавьте значение штрафа в исходное положение, а также небольшой коэффициент в зависимости от исходного положения (возможно, 0,01 за шаг), чтобы переместить заброшенного игрока ниже первоначального лица в этом положении, затем в в следующей колонке вы можете RANK() новый столбец значений (F в моем случае). Поэтому

Новое значение = A2 + (IF (C2> 0, C2 + (0,01 * A2)))

Ранг затем = RANK (F2, F2: F11,1)

Вы можете комбинировать все функции в одном, но вначале это проще сделать в отдельных столбцах.

+0

Отредактировано для удаления столкновений. Коэффициент должен быть меньше 1/кандидатов, чтобы избежать его переполнения. Таким образом, я выбрал 0,01, поэтому даже штраф за 10-го поставленного кандидата будет иметь только добавленный дополнительный 0,1, что не повлияет на их рейтинг целым числом. – fieldsimon

+0

Отлично - но что, если данные заданы таким образом, что они похожи на базу данных с плоским файлом (с результатами для следующей игры прямо в строках 10-20)? т. е. если в новом первом столбце мы действительно имели столбец «GameID», а в вашей второй формуле нам нужно было ограничить часть «F2: F11» только строками, которые соответствовали «GameID». Может ли эта формула также принять индексное соответствие для диапазона? Таким образом, формулу можно было бы перетащить более чем на 10 000 строк, все из которых содержат уникальные игровые данные ... –

+0

Я попробую использовать функцию совпадения индекса. –