VBA - Odeberte duplikáty z pole

Tento tutoriál vás naučí, jak odstranit duplikáty z pole ve VBA.

Odebrat duplikáty

Nejjednodušší způsob, jak odebrat duplikáty z pole VBA, je přiřadit hodnoty pole do kolekce VBA a poté předat hodnoty zpět do pole. Sbírky neumožňují duplicitní hodnoty, a proto pomocí kolekce můžeme odstranit duplikáty z pole. Vytvořili jsme funkci k provedení tohoto úkolu:

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 Funkce ArrayRemoveDups (MyArray jako varianta) jako variantaDim nFirst As Long, nLast As Long, i As LongZtlumit položku jako řetězecDim arrTemp () jako řetězecDim Coll jako nová kolekce„Získejte pozice prvního a posledního polenFirst = LBound (MyArray)nLast = UBound (MyArray)ReDim arrTemp (nFirst To nLast)„Převést pole na řetězecFor i = nFirst To nLastarrTemp (i) = CStr (MyArray (i))Příště já„Naplňte dočasnou sbírkuPři chybě Pokračovat DalšíFor i = nFirst To nLastColl.Add arrTemp (i), arrTemp (i)Příště jáErr.JasnéPři chybě GoTo 0„Změňte velikost polenPoslední = počet sběratelů + nPrvní - 1ReDim arrTemp (nFirst To nLast)„Naplňte poleFor i = nFirst To nLastarrTemp (i) = Coll (i - nPrvní + 1)Příště já"Výstupní pole."ArrayRemoveDups = arrTempKoncová funkceSub ArrTest ()Dim strNames (1 až 4) jako řetězecDim outputArray () As StringDim i As LongDim položka jako varianta'Nastavte hodnoty počátečního polestrNames (1) = "Shelly"strNames (2) = "Steve"strNames (3) = "Neema"strNames (4) = "Steve"'Funkce Call DupoutputArray = ArrayRemoveDups (strNames)'Výstupní hodnoty do okamžitého okna (CTRL + G)Pro každou položku In outputArrayPoložka Debug.PrintDalší položkaEnd Sub

Poznámka: V tomto příkladu jsme vynutili, aby naše pole začalo na 1 (ne 0). Pokud vaše pole začíná na 0, budete muset kód mírně upravit.

Všimněte si, že převádíme obsah pole na řetězec. Pokud je to nutné, můžete řetězce převést zpět na celá čísla po dokončení procesu.

wave wave wave wave wave