Excel показывает имя дважды - PullRequest
2 голосов
/ 15 апреля 2020

У меня возникла проблема с моим Excel, когда он дважды показывает одно и то же имя, если у «гонщиков» точное время. Например, на картинке гонщики 7 и 9 и гонщики 5 и 10 имеют одинаковое время, но в стартовой сетке дважды отображается одно и то же имя. Это должно быть 4. Racer7 5. Racer9 & 9. Racer5 10. Racer10

enter image description here

Функция ячейки I3 =IF(OR(ISBLANK(B3);ISBLANK(C3));"";INDEX($B$3:$B$32;MATCH(J3;$D$3:$D$32;0))) (я должен использовать формат ';' вместо ',') Функция ячейки J3 =IFERROR(SMALL($D$3:$D$32;H3);"")

Ссылка на файл (не работает в Google Sheets и функции должны использовать локальное форматирование)

xlsx file

Ответы [ 3 ]

2 голосов
/ 15 апреля 2020

Решение в стиле массива формул старой школы будет выглядеть следующим образом:

Примечание Это формула массива, которую необходимо подтвердить с помощью CTRL SHIFT ENTER

=IF(OR(ISBLANK(B3),ISBLANK(C3)),"",INDEX($B$1:$B$32,SMALL(IF($D$1:$D$12=J3,ROW($J$1:$J$12)),COUNTIF($J$1:$J3,J3))))

IF проверяет список времени на текущее значение времени и возвращает все соответствующие строки обратно которые получают ранжирование по малым. COUNTIF подсчитывает вхождения текущего времени до текущей строки.

2 голосов
/ 15 апреля 2020

МАТЧ и RANK Становятся больными во время обработки


Формулы

COMMA

[D3]    =IF(NOT(ISNUMBER(C3)),"",ROUND($D$1-A3*"00:10,0"-C3,8))
[H3]    =IF(ISNUMBER(K3),RANK(J3,D$3:D$32,2),"")
[I3]    =IF(IFERROR(INDEX($B$3:$B$32,SMALL(IF($D$3:$D$32=J3,ROW($J$3:$J$32)-ROW(J$3)+1),COUNTIF($J$3:$J3,J3))),"")=0,"",IFERROR(INDEX($B$3:$B$32,SMALL(IF($D$3:$D$32=J3,ROW($J$3:$J$32)-ROW(J$3)+1),COUNTIF($J$3:$J3,J3))),""))
[J3]    =IFERROR(SMALL($D$3:$D$32,A3),"")
[K3]    =IFERROR(J3-J$3,IF(I3="","","disqualified"))

enter image description here

КОЛОН

[D3]    =IF(NOT(ISNUMBER(C3));"";ROUND($D$1-A3*"00:10;0"-C3;8))
[H3]    =IF(ISNUMBER(K3);RANK(J3;D$3:D$32;2);"")
[I3]    =IF(IFERROR(INDEX($B$3:$B$32;SMALL(IF($D$3:$D$32=J3;ROW($J$3:$J$32)-ROW(J$3)+1);COUNTIF($J$3:$J3;J3)));"")=0;"";IFERROR(INDEX($B$3:$B$32;SMALL(IF($D$3:$D$32=J3;ROW($J$3:$J$32)-ROW(J$3)+1);COUNTIF($J$3:$J3;J3)));""))
[J3]    =IFERROR(SMALL($D$3:$D$32;A3);"")
[K3]    =IFERROR(J3-J$3;IF(I3="";"";"disqualified"))

Почему MATCH «просчитывается» в «7» вместо «6» в ячейках «I6» и «I7» на рабочем листе OP (формула в «D3»)?

Время имеет массу десятичных дробей, поэтому я предполагаю, что он «видит» значения в «D8» и «D9» как разные значения. Чтобы избежать этого, вы можете округлить значения. Если вы хотите использовать только эти значения, достаточно округлить их до 8 десятичных знаков, чтобы числа распознавались как отличающиеся даже на миллисекунду. Если вы хотите суммировать их, могут быть некоторые неточности. В случае ОП 8 десятичных знаков более чем достаточно.

RANK (формула в 'H3') также «просчитывается», если нет округления.

Почему длинная формула?

Лучшая попытка с заявлением IF и без него, и убедитесь сами.

Вот подсказка:

enter image description here

2 голосов
/ 15 апреля 2020

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

=D3+ROW()/10^8

Дело в том, что сложение должно быть настолько маленьким, чтобы не иметь значения для результата при округлении. Таким образом, число результатов, которые вы рассматриваете в этом, может иметь значение. Если вы обнаружите, что сложение изменяет результат в последней строке, увеличьте показатель степени. Сделанное мною изменение добавляет к каждому результату 0,0001 секунды, умноженное на номер строки: 0,0001 в первой строке, 0,0002 во второй, 0,0003 в третьей и т. Д. c. Проверьте результаты в 10-й и 100-й строках.

Теперь все результаты в столбце E различны, и именно эти результаты используются в столбцах J и I.

[J3] =SMALL($E$3:$E$32,H3)

и

[I3] =INDEX($B$3:$B$32,MATCH(J3,$E$3:$E$32,0))

Дубликатов больше не будет, но «победитель» розыгрыша определяется его положением в списке.

...