2014-10-30 2 views
3

У меня есть кусок кода, чтобы удалить дубликаты с листа, просмотрев два столбца (столбец 3 & 5).Excel VBA - метод RemoveDuplicates не работает с Mac

lRow = .Cells(Rows.Count, "A").End(xlUp).Row 
'.Range("A1:BR" & lRow).RemoveDuplicates Columns:=Array(3, 5), Header:=xlYes 
.Range("$A$1:$BR$" & lRow).RemoveDuplicates Columns:=Array(3, 5), Header:=xlYes 

Он отлично работает в Windows, но, к сожалению, не на Mac.

Может кто-нибудь, пожалуйста, предложите мне, что мне нужно изменить здесь?

+2

Насколько я помню '.RemoveDuplicates' не работает в Excel 2011. Вам нужно будет пройти через диапазон, чтобы найти дубликаты. –

+1

В соответствии с предложением @ SiddharthRout используйте словарь или метод сбора. Это сложнее, но он добьется успеха. – Manhattan

+0

@ SiddharthRout & Nanashi: хорошо спасибо. Я напишу специальный код :( – Tejas

ответ

0

Эта часть кода создаст список уникальных значений и скопирует их в другую ячейку. Поэтому создайте уникальный список.

Вы должны указать, где находится ваш список, и куда вы хотите скопировать. Вы можете сделать это, изменив переменные fromCell и toCell. Надеюсь, это поможет.

Sub uniqueList() 

    fromCell = "A1" 
    toCell = "B1" 

    fromColumn = Mid(fromCell, 1, 1) 'This will resolve to A 
    toColumn = Mid(toCell, 1, 1)  'This will resolve to B 

    fromRow = Mid(fromCell, 2)  'This will resolve to 1 
    toRow = Mid(toCell, 2)   'This will resolve to 1 


    Dim cl As Range, UniqueValues As New Collection, uValue As Variant 
    Application.Volatile 

    numRows = Range(fromCell).End(xlDown).Row 

    On Error Resume Next 
    For Each cl In Range(fromCell & ":" & fromColumn & numRows) 
     UniqueValues.Add cl.Value, CStr(cl.Value) 
    Next cl 

    y = toRow - 1 

    For Each uValue In UniqueValues 
     y = y + 1 
     Range(toColumn & y) = uValue 
    Next uValue 


End Sub