Potrzebuje po dodaniu danych do tablicy z arkusza Excel usunąć te elementy które są zduplikowane. Chciałbym dokonać tego na poziomie tablicy nie zmieniając danych z arkusza. W późniejszym etapie będę potrzebował porównać te tablice z inną tablicą w celu odnalezienia elementów występujących w obu tablicach, tylko w pierwszej, tylko w drugiej tablicy.
Sub duplikaty() Dim poArr() As Variant ' declare an unallocated array. poArr = Range("A2:A546") ' poArr is now an allocated array poArr = eliminateDuplicate(poArr) Set Destination = Worksheets(2).Range("K1") Destination.Resize(UBound(poArr, 1), UBound(poArr, 2)).Value = poArr End Sub Public Function eliminateDuplicate(poArr As Variant) As Variant Dim poArrNoDup() dupArrIndex = -1 For i = LBound(poArr) To UBound(poArr) dupBool = False For j = LBound(poArr) To i If poArr(i) = poArr(j) And Not i = j Then dupBool = True End If Next j If dupBool = False Then dupArrIndex = dupArrIndex + 1 ReDim Preserve poArrNoDup(dupArrIndex) poArrNoDup(dupArrIndex) = poArr(i) End If Next i eliminateDuplicate = poArrNoDup End Function
W trakcie uruchamiania procedury otrzymuję następujący błąd:
"Run time error "9". Subscript out of range.
Załączniki
- Duplikaty.xlsm ( 24K )