VBA - Diziden Yinelenenleri Kaldır

İçindekiler

Bu eğitim size VBA'daki bir Diziden kopyaları nasıl kaldıracağınızı öğretecektir.

Yinelenenleri Kaldır

Bir VBA Dizisinden kopyaları kaldırmanın en kolay yolu, dizi değerlerini bir VBA Koleksiyonuna atamak ve ardından değerleri bir Diziye geri iletmektir. Koleksiyonlar yinelenen değerlere izin vermez ve bu nedenle bir Koleksiyon kullanarak yinelenenleri bir diziden kaldırabiliriz. Bu görevi gerçekleştirmek için bir işlev oluşturduk:

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 Varyant Olarak İşlev ArrayRemoveDups(MyArray As Variant)Dim nİlk Kadar Uzun, nSon Kadar Uzun, Ben Kadar UzunÖğeyi Dize Olarak KarartDim arrTemp() Dize OlarakDim Coll Yeni Koleksiyon Olarak'İlk ve Son Dizi Konumlarını AlınnFirst = LBound(MyArray)nLast = UBound(MyArray)ReDim arrTemp(nFirst to nLast)'Diziyi Dizeye Dönüştüri için = nİlk ila nSonarrTemp(i) = CStr(MyArray(i))sonraki ben'Geçici Koleksiyonu DoldurHatada Devam Et Sonrakii için = nİlk ila nSonColl.Add arrTemp(i), arrTemp(i)sonraki benHata.TemizleHatada GoTo 0'Diziyi Yeniden BoyutlandırnLast = Coll.Count + nFirst - 1ReDim arrTemp(nFirst to nLast)'Diziyi Dolduri için = nİlk ila nSonarrTemp(i) = Coll(i - nFirst + 1)sonraki ben'Çıktı DizisiArrayRemoveDups = arrTempBitiş İşleviAlt ArrTest()Dim strNames(1 - 4) As StringDim outputArray() As StringDim kadar uzunÖğeyi Varyant Olarak Karart'Başlangıç ​​Dizi Değerlerini AyarlastrNames(1) = "Shelly"strNames(2) = "Steve"strNames(3) = "Neema"strNames(4) = "Steve"'Çağrı Dup İşlevioutputArray = ArrayRemoveDups(strNames)Anında Pencereye çıkış değerleri (CTRL + G)outputArray içindeki her öğe içinHata ayıklama. Öğeyi yazdırSıradaki eşyaAlt Bitiş

Not: Örnekte Dizimizi 1'den (0 değil) başlatmaya zorladık. Diziniz 0'dan başlıyorsa, kodu biraz değiştirmeniz gerekecektir.

Dizi içeriğini bir dizgeye dönüştürdüğümüze dikkat edin. Gerekirse, işlem tamamlandıktan sonra dizeleri tekrar tam sayılara dönüştürebilirsiniz.

wave wave wave wave wave