Страницы: 1
RSS
VBA - Поиск уникальных значений ячеек в одном столбце
 
Всем доброго дня! Помогите, пожалуйста. Я в макросах нубище, пытался где-то что-то похожее найти в интернете, и вроде как близок к верному решению, но чет не работает ничего.
Тема такая. В столбце А, начиная с 1 строки идёт перечень неких значений, например: 1, 2, 3, 4, 5, d, 7, a8, 9. В конце данного списка стоит условный разделитель, например, три звёздочки - ***. После разделителя идёт второй список значений: 2, 5, a8, 9. Необходимо сделать макрос, который сравнивал бы каждое значение из первого списка (ДО разделителя ***) со значениями из второго списка, и если эти значения уникальны, то они должны копироваться из первого спика в столбец В на ТУ ЖЕ строку, откуда были взяты. Во вложении пример файла, как должно все выглядеть.
Я пытался сделать через Find, но каждый раз столбец А копируется целиком в столбец В... Идей больше нет. Помогите, пожалуйста.

Один из вариантов кодов, который, как я думал, будет работать, но нет)

Dim myCell As Range, i As Long
i = 1
Do
Set myCell = Range("A:A").Find(Cells(i, 1), Cells(i + 1, 1))
If myCell Is Nothing Then
Cells(i, 1).Copy Cells(i, 2)
i = i + 1
Else
i = i + 1
End If
Loop Until Cells(i, 1) = "***"
End Sub

p.s. В самих списках по отдельности повторов значений быть не может. То есть в первом списке все значения априори уникальны. Поэтому я и делал поиск по всему столбцу, но начиная с ячейки "i + 1, 1".
Изменено: Олегсандр - 02.10.2022 12:02:49
 
См. вложение.
 
Цитата
написал:
См. вложение.
Спасибо Вам большущее! Сейчас затестим с реальными списками по 100-120 тысяч кодов  :D  
 
Если там сильно больше 100 тыс. идущих после ***, то может быть быстрее на несколько секунд если переделать на коллекцию. Если там всего 120 тыс., то это вообще не проблема.
 
Цитата
написал:
Если там сильно больше 100 тыс. идущих после ***, то может быть быстрее на несколько секунд если переделать на коллекцию. Если там всего 120 тыс., то это вообще не проблема.
У нас производственные масштабы, сейчас тестировал на 130тыс.***100тыс. - всё летает. Еще раз спасибо!
Страницы: 1
Читают тему (гостей: 1)
Наверх