Obsah
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.