Добрый день! Мне необходимо функцией vba извлечь дубликаты из списка(столбца). (можно и макросом (Sub), но я не знаю, как универсально указать место(ячейку) для вывода результата... (адрес ячейки для вывода результата
всегда разный), поэтому хочу использовать Function. Я написал вот такую программку
Код |
---|
Function Список_Дублей_1(Rng1 As Range) As Variant
Dim i As Long, j As Long
Dim a As Variant
Dim k, x, n, ind As Long
Dim Arr(1 To 50) As String j = 1
For i = 1 To Rng1.Rows.Count
k = Application.WorksheetFunction.CountIf(Rng1, Rng1.Cells(i, 1))
If k > 1 Then
Arr(j) = Rng1.Cells(i, 1)
j = j + 1
End If
Next i
Список_Дублей_1 = Application.WorksheetFunction.Transpose(Arr())
End Function |
Но моя функция выдает список дублей с оригиналом. В приложенном файле я хотел бы получить результат в виде списка
Код |
---|
7434175
7448800
7448800 |
а не
Код |
---|
7434175
7434175
7448800
7448800
7448800 |
Я понимаю, что вместо
Цитата |
---|
k = Application.WorksheetFunction.CountIf(Rng1, Rng1.Cells(i, 1)) |
надо написать аналог счётесли(A$1$:А1;А1) > 1 то..... что-то типа
k = Application.WorksheetFunction.CountIf((Rng1.Cells(1,1):Rng1.Cells(i,1)), Rng1.Cells(i, 1)) (хочу просматривать универсальный диапазон, который всегда в разных местах. или еще мой предполагаемый вариант который не работает)
k = Application.WorksheetFunction.CountIf((Rng1.Cells(i,1).End(xlUp)
,Rng1.Cells(i, 1)
Помогите, пожалуйста, написать правильно и универсально! p.s. коллекции и мн. др. я пока не понимаю, хотелось бы увидеть решение на понятном мне уровне))
И еще, подскажите, почему, если я хочу сделать
redim Arr(1 to Rng1.Rows.Count),.. да даже redim Arr(1 to 100), то программа на меня ругается, выделяя желтым цветом первую строчку
Код |
---|
Function Список_Дублей_1(Rng1 As Range) As Variant |