Найти и удалить повторяющиеся идентификаторы и заменить

У меня есть очень базовые знания пользователя Excel. У меня есть электронная таблица, в которой я отслеживаю перезагрузку данных. Каждая вводимая мной загрузка получает уникальный номер загрузки, который рассчитывается автоматически по формуле, основанной на названии калибра и постепенно увеличивающемся номере. На данный момент каждая загрузка, которую я ввожу, получает номер, даже если она повторялась раньше. Популярные нагрузки, которые я часто повторяю, все одинаковы, за исключением даты и количества сделанных раундов, но в настоящее время они будут иметь разные номера нагрузок. Есть ли способ пропустить эти повторные загрузки и присвоить им предыдущий номер загрузки или вообще не назначать номер загрузки с помощью формулы, а не вручную?

Я знаю, что это требует многого, но я очень признателен за любую помощь! Я, конечно, открыт для предложений, если это даже не лучший способ сделать это.

Образец трудовой книжки по адресу:

https://www.dropbox.com/s/v5y1ufxjiosmnap/My%20Reloading%20Data%20-%20Sample.xlsx?dl=0

Вот что я пробовал до сих пор:

В столбце Q2 объедините все критерии.

=C17&E17&F17&G17&H17&L17&M17&N17&P17

В столбце R2 найдите дубликаты.

=IF(COUNTIF($Q$2:$Q17, $Q17)>1, "Duplicate", "")

D2 — это столбец № загрузки.

=IF(R17="Duplicate","",(TEXT(C17,0)&"-"&TEXT(COUNTIF($C$2:C17,C17),"000")))

Это пропустит повторяющиеся загрузки и не даст им загрузки, # оставив ячейку пустой. Я хотел бы найти и сопоставить, какой # должна быть эта загрузка, и вставить ее. Кроме того, когда последовательная нумерация возобновляется, она действует так, как если бы она считала повторяющуюся строку. Например, D2 может выглядеть так:

9mm-001
9mm-002

(Пропущено из-за дубликатов и оставлено пустым, но хотелось бы, чтобы он находил, сопоставлял и вставлял дубликат загрузки #)

9mm-004 (I'd like to to be 9mm-003)

person Flyfishermanmike    schedule 06.10.2018    source источник
comment
Вы когда-нибудь слышали о «Фиолетовой опасности»? Абсолютно волшебная форелевая мушка для поздней весны/начала лета.   -  person    schedule 06.10.2018
comment
Это традиционная стальная муха, да? Никогда не пробовал. Я проверю это.   -  person Flyfishermanmike    schedule 06.10.2018
comment
(1) Я понимаю, что «вспомогательные» столбцы делают логику более прозрачной, но как только логика установлена, новые функции, такие как COUNTIFS, могут исключить «вспомогательные» столбцы. (2) Почему было необходимо опубликовать книгу с поддержкой макросов. Некоторые добровольцы могут не решиться загрузить xlsm, в то время как xlsx не будет проблемой. (3) Да, эта мушка хороша и для водотоков, питающихся ледниками в конце января (4) Что у вас есть против 0,40 S&W?   -  person    schedule 06.10.2018
comment
Извините, для примера я сделал копию моей книги перезагрузки, в которой включен макрос, и не поймал ее. Я изменю это. Зачем стрелять из .40 S&W, когда есть 10мм?!   -  person Flyfishermanmike    schedule 06.10.2018
comment
Я предпочитаю темно-синий P226 с рукояткой Hogue P220.   -  person    schedule 06.10.2018


Ответы (1)


Вы сможете добиться этого с помощью формулы VLOOKUP или комбинации MATCH и INDEX.

VLOOKUP (вертикальный поиск) ищет совпадение в другой ячейке и возвращает значение из столбца смещения. Несоответствие, если вы используете FALSE в качестве последнего параметра, возвращает ошибку #N/A.

Итак, в D20 (например) вы могли бы, используя столбец Q в качестве определителя, использовать следующее, предполагая, что у вас есть копия D в столбце R:

=IFERROR(VLOOKUP(Q20,Q$1:R19,2,FALSE),[value for newly found loadno])

Что делает эта формула, так это вычисляет VLOOKUP - если она не находит запись, вычисляет новое значение. ВПР просматривает конкатенированный ключ в столбце Q текущей строки, выполняет поиск по всем предыдущим столбцам (обратите внимание, что он привязан к строке 1, но не привязан к нижней части диапазона, поэтому вы можете скопировать формулу), он использует столбец 2 (Q — столбец 1, поэтому R — столбец 2) для результата и требует точного совпадения (ЛОЖЬ). Если он не найдет его, верните NA и позвольте второй половине IFERROR вступить во владение.

Посмотрите, как вы с этим справитесь.

MATCH INDEX может работать лучше, потому что вам не понадобится дополнительный столбец R из-за того, что VLOOKUP может смотреть только справа от ключа.

Вот решение INDEX и MATCH - немного сложнее для понимания, но более гибкое решение.

=IFERROR(INDEX(D$1:D19,MATCH(Q20,Q$1:Q19,0)),[value for newly found load number])

Я предпочитаю это.

Внешняя функция говорит вернуть n-е значение в списке. Внутренняя функция MATCH предлагает найти это значение (Q20) в этом списке (Q1:Q19). 0 в качестве третьего параметра функции MATCH говорит, что совпадение должно быть точным.

person Alan    schedule 06.10.2018
comment
Спасибо большое! Я заставил обоих работать. Сначала ничего не работало, но я понял это. При использовании ВПР массив таблиц должен иметь столько столбцов, сколько col_index_num. Отсутствующая буква R в IFERROR через меня отключается на минуту. Это кажется более чистым решением. - person Flyfishermanmike; 06.10.2018
comment
Это не большая проблема, но как насчет того, чтобы мои числа были последовательными, даже если строки пропускаются из-за дубликатов? Моя формула отсчитывает номер строки. Вот что у меня в D2: =IFERROR(INDEX(D$1:D2,MATCH(Q2,Q$1:Q1,0)),(TEXT(C2,0)&"-"&TEXT(COUNTIF($C$2:C2,C2),"000"))) - person Flyfishermanmike; 06.10.2018
comment
@Flyfishermanmike, отметьте этот ответ как решенный (бегущая строка под голосованием за этот ответ). Это показывает, что на этот вопрос дан ответ, и отдает должное тому, кто ответил. Спасибо! - person Wizhi; 06.10.2018
comment
Сделаю. Я начну новый вопрос для моего другого вопроса. - person Flyfishermanmike; 07.10.2018