Как отсортировать таблицу баллов кандидатов, в которой упорядочены все столбцы, на основе наивысшего балла кандидата в этой области? - PullRequest
0 голосов
/ 25 января 2019

Мне нужно отсортировать кандидатов в разные ящики на основе результатов. Я подсчитал их рейтинг совпадений для всех ящиков и хочу, чтобы сначала были выбраны наиболее подходящие кандидаты.

Я хочу создать код VBA, который автоматизирует процесс. Пример данных:

Appl |   Box1  | Box2   | Box3  

1    |  316.67 | 453.57 | 244.44

2    |  183.33 | 196.43 | 366.67

3    |  50.00  | 463.10 | 244.44

4    |  16.67  | 16.67  | 61.11

В идеале, после того, как кандидат отсортирован 2 раза, он удаляется из списка. Я думаю об использовании функции ранга, но не могу обернуть голову вокруг двойной сортировки ... Есть предложения?

Желаемый результат:

     |   Box1   | Box2    | Box3    

     |  Appl 1  | Appl 3  | Appl 2

     |  Appl 3  | Appl 2  | Appl 1

1 Ответ

0 голосов
/ 26 января 2019

по вашему примеру;с данными образца в A1:D5

Вставьте заголовки Box1, Box2 и Box3 в соседние ячейки на том же листе, что и данные образца.

Поместите эту формулу вячейка под Box1 =INDEX(A2:A5,MATCH(LARGE(B2:B5,1),B2:B5,FALSE),1)

Часть формулы LARGE найдет наибольшее значение в B2:B5, 1 идентифицирует наибольшее значение.Если вы замените его на 2, оно будет идентифицировать следующее нижнее значение в диапазоне, например: LARGE(B2:B5,2)

Функция MATCH может быть изменена для диапазонов Box2 и Box3;=INDEX(A2:A5,MATCH(LARGE(C2:C5,1),C2:C5,FALSE),1)

Если вы хотите получить второе по величине значение, просто измените 1 в функции LARGE;например;=INDEX(A2:A5,MATCH(LARGE(C2:C5, 2 ),C2:C5,FALSE),1)

Пример изображения:

enter image description here

...