Электронная таблица: создать столбец на основе одного столбца, отсортированного по значениям другого

Я хочу создать новый столбец данных из одного столбца, отсортированного по другому столбцу.

Проще всего объяснить на примере. На самом деле это не то, чем я занимаюсь, но я думаю, что это хорошо объясняет. Допустим, столбец А имеет имена людей в алфавитном порядке:
Адам
Бетти
Colin
Дебби

а в столбце B указан год их рождения:
1985
1973
1954
1973

Я хотел бы создать столбец C, в котором перечислены имена людей по годам их рождения:
Colin
Бетти
Дебби
Адам

Это должно быть сделано без изменения или сортировки столбца A или B.
Это должно быть сделано способом, который автоматически обновит столбец C, если столбец A или B отредактирован.

Спасибо! (Я работаю в Excel на Windows 10, если это имеет какое-либо значение.)

3 ответа

@ Студент Гарри по какой-то причине я не нашел формулы, которые мне были нужны раньше. Когда я не мог вернуться на эту страницу в течение нескольких дней, немного больше исследований нашло мне формулу RANK. (В новейшем Excel значение RANK обесценивается, поэтому я использовал вместо него более новый RANK.EQ. А потом я подумал о VLOOKUP, но, немного углубившись в поиск, я нашел INDEX MATCH, который выглядит лучше, и вы тоже это использовали.
Итак, вот что я придумал и как справился с дублированием лет: ранжирование имен в таблицах по годам

(Мои формулы начинаются со строки № 2 из-за заголовков)
Столбец C формулы:

=RANK.EQ(B2,B$2:B$15,1)

Важно знать, как работает рейтинг. Если в позиции № 5 есть три предмета, все они получают ранг 5, и не будет предметов с рангом 6 или 7. Следующая позиция - ранг 8.

Столбец D формула:
в первой камере

=C2

и в последующих клетках

=C3+COUNTIF(C$2:C2,C3)

Это избавляет от дублирования рейтинга. Рейтинг увеличивается на 1, если в списке есть повторяющийся рейтинг выше. Таким образом, этим двойным номерам 5 будет присвоен ранг 6 и 7.

Столбец E - это просто список последовательных чисел, который довольно легко заполнить.

Формула столбца F объединяет все это:

=INDEX($A$2:$A$15,MATCH(E2,$D$2:$D$15,0))

Во всяком случае, я хотел бы поделиться тем, что у меня было, как оно работает, и немного по-другому. Но, вероятно, ответ от ученика Гарри лучше, так как он использует меньше столбцов, чтобы добраться туда. (Возможно, я мог бы объединить некоторые и использовать меньше столбцов с моим методом.)

Cx=INDIRECT(ADDRESS(COUNTIF(B:B,">=" & Bx),1))

Значения года рождения должны быть уникальными.

Если данные начинаются со строки с номером больше 1 - добавьте правильное число к значению COUNTIF().

Это было бы легко, если бы годы в столбце B были уникальными, но мы можем скорректировать дубликаты лет. В D1 введите:

=B1

и в D2 введите:

=B2+COUNTIF(B$1:B1,B2)*0.001

и скопировать вниз. Столбец D повторяет столбец B с дубликатами "не конфликтует". Это позволяет MATCH() функция для извлечения всех значений. Наконец, в C1 введите:

=INDEX(A:A,MATCH(SMALL(D:D,ROWS($1:1)),D:D,0))

и скопировать вниз:

Другие вопросы по тегам