Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: FlyfishermanmikeОтветов: 1

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

duplicatesexceluniqueidentifier

Ответы

Ответ 1 · рейтинг 1 · Alan

Вы сможете добиться этого с помощью формулы 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 говорит, что совпадение должно быть точным.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы