VBA - pašalinkite dublikatus iš masyvo

Ši pamoka išmokys jus, kaip pašalinti dublikatus iš masyvo VBA.

Pašalinti dublikatus

Lengviausias būdas pašalinti dublikatus iš VBA masyvo yra priskirti masyvo vertes VBA kolekcijai ir tada perduoti vertes atgal į masyvą. Kolekcijos neleidžia pasikartojančių verčių, todėl naudodami kolekciją galime pašalinti dublikatus iš masyvo. Šiai užduočiai atlikti sukūrėme funkciją:

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 Funkcija ArrayRemoveDups („MyArray As Variant“) Kaip variantasDim nPirmas kaip ilgai, n Paskutinis, kaip ilgai, ir kaip ilgaiPritemdyti elementą kaip eilutęDim arrTemp () kaip eilutė„Dim Coll“ kaip nauja kolekcija„Gaukite pirmojo ir paskutiniojo masyvo pozicijasnFirst = LBound („MyArray“)nLast = UBound („MyArray“)„ReDim arrTemp“ („nFirst to nLast“)„Konvertuokite masyvą į eilutęNes i = nPirmas iki paskutinisarrTemp (i) = CStr („MyArray“ (i))Kitas I.„Gyventi laikinoje kolekcijojeDėl klaidos Tęsti toliauNes i = nPirmas iki paskutinisRink. Pridėti arrTemp (i), arrTemp (i)Kitas I.Klaida. AiškuKlaida „GoTo 0“„Pakeiskite masyvo dydįn Paskutinis = Rink. Skaičius + nPirmas - 1„ReDim arrTemp“ („nFirst to nLast“)„Užpildykite masyvąNes i = nPirmas iki paskutinisarrTemp (i) = Coll (i - nPirmas + 1)Kitas I.„Išvesties masyvas„ArrayRemoveDups“ = arrTempPabaigos funkcija„Sub ArrTest“ ()Dim strNames (nuo 1 iki 4) kaip eilutėDim outputArray () kaip eilutėTamsiai ilgasApšviesti elementą kaip variantą'Nustatykite pradines masyvo vertesstrNames (1) = "Shelly"strNames (2) = "Styvas"strNames (3) = "Neema"strNames (4) = "Styvas"„Skambučio„ Dup “funkcijaoutputArray = ArrayRemoveDups (strNames)„Išvesties vertės į tiesioginį langą (CTRL + G)Kiekvienam elementui „outputArray“Derinimas. Spausdinti elementąKitas elementasPabaiga Sub

Pastaba: Pavyzdyje mes privertėme savo masyvą pradėti nuo 1 (ne 0). Jei jūsų masyvas prasideda nuo 0, turėsite šiek tiek pakeisti kodą.

Atkreipkite dėmesį, kad masyvo turinį konvertuojame į eilutę. Jei reikia, baigę procesą, eilutes galite konvertuoti į sveikus skaičius.

wave wave wave wave wave