В Excel можно создать список уникальных значений из столбца и копировать данные из другого столбца с ним? - PullRequest
0 голосов
/ 03 октября 2019

У меня есть список данных в столбце B, который иногда содержит повторяющиеся элементы. В столбце А есть идентификатор для каждого элемента. Я хотел бы создать список, который показывает только 1 экземпляр каждого элемента и идентификатор с ним.

Вот снимок экрана со списком, который у меня есть, и ожидаемый результат:

Expected Result

Ответы [ 3 ]

1 голос
/ 03 октября 2019

Если ваш столбец ITEM ID всегда является числом, я бы предложил использовать MINIFS.

. Вы можете выбрать самый низкий идентификатор, который больше, чем любой, который вы уже выбрали:

 MINIFS($A$3:$A$17,$A$3:$A$17,">" & MAX($E$2:$E2))

Если больше не осталось уникальных идентификаторов, он вернет 0. Поэтому мы можем добавить проверку для этого и получить вместо нее пустую строку:

=IF(MINIFS($A$3:$A$17,$A$3:$A$17,">" & MAX($E$2:$E2))=0,"",MINIFS($A$3:$A$17,$A$3:$A$17,">" & MAX($E$2:$E2)))

Затем, чтобы получить имена изэтот идентификатор мне сильно не нравится VLOOKUP. На мой взгляд, эта формула никогда не должна использоваться. Формула INDEX / MATCH лучше во всех отношениях. Он быстрее, надежнее (поскольку вставка столбцов не нарушает его), проще в использовании (так как вам не нужно считать столбцы), более универсален (ваши диапазоны не обязательно должны быть связаны друг с другом).

Используемый INDEX / MATCH:

INDEX($B$3:$B$17,MATCH($E3,$A$3:$A$17,0))

Затем вы можете заключить его в IF, чтобы вернуть пустую строку, когда не осталось идентификаторов:

=IF($E3="","",INDEX($B$3:$B$17,MATCH($E3,$A$3:$A$17,0)))

Пожалуйста, смотрите это изображение для иллюстрации:

enter image description here

РЕДАКТИРОВАТЬ: Как создать последовательный числовой идентификатор из текстовых идентификаторов

enter image description here

=IF(COUNTIFS($A$1:$A1,$A2)>0,
    INDEX($B$1:$B1,MATCH($A2,$A$1:$A1,0)),
    MAX($B$1:$B1)+1
)

Эта формула проверяет, не присвоено ли этому строковому значению идентификатор. Если это так, он получает этот идентификатор с помощью INDEX / MATCH. Если это не так, он присваивает ему следующий номер в последовательности, беря ранее назначенный максимальный числовой идентификатор и добавляя 1.

Если вы хотите игнорировать пустые идентификаторы текста, просто оберните его в IF, чтобы вернутьпробел:

=IF($A2="","",<Formula Above>)
1 голос
/ 03 октября 2019

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

Скажем такВы получили это:

enter image description here

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

Вы получите это:

enter image description here

Требуется около ... 25 секунд, чтобы сделать это. Нет сложных формул. Но, как я уже сказал, это решение может не работать для всех.

Но мне это нравится. Дополнительная информация о сводных таблицах:

Создание сводной таблицы для анализа данных листа

0 голосов
/ 03 октября 2019

Для идентификаторов используйте:

=INDEX($A$3:$A$17,MATCH(0,COUNTIF($E$3:E3,$A$3:$A$17),0))

Поместите его в E4 и перетащите его, как только вы нажмете #N/A, перечислены все уникальные значения.

Затем вы можете использовать VLOOKUP для имен:

=VLOOKUP(E4,$A$3:$B$17,2,0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...