VBA - Diziyi Sütundan Benzersiz Değerlerle Doldur

Bu eğitim size VBA'daki bir sütundan benzersiz değerler içeren bir diziyi nasıl dolduracağınızı öğretecektir.

Diziyi Sütundan Benzersiz Değerlerle Doldur

Bir Excel sayfasından bir Dizi'ye bir değerler listesi almak, Excel'deki satırlar arasında dolaşmak ve diziyi doldurmak meselesidir.

Bir Excel sayfasında aşağıdaki müşteri listesini göz önünde bulundurun.

Bir döngü kullanarak VBA'da bir Dizi doldurabiliriz. Bununla birlikte, yinelenen satırlar da dahil olmak üzere her satırda standart bir döngü dolaşır ve Dizinizde yinelenen değerler elde edersiniz.

Hücreler arasında döngü oluşturma ve bir Koleksiyon nesnesini bir koleksiyon nesnesi olarak değerlerle doldurma çözümü, çoğaltmalara izin vermez. Ardından dizinizi doldurmak için bu koleksiyon nesnesini kullanabilirsiniz.

1234567891011121314151617181920212223242526 Sub PopulateUniqueArray()Dim StrCustomers() As StringDim Col Yeni Koleksiyon OlarakDim valCell As StringDim i Tamsayı OlarakTamsayı Olarak Dim n'aralıktaki satırları sayınn = Aralık("A1", Aralık("A1").End(xlDown)).Rows.Count'Geçici Koleksiyonu DoldurHatada Devam Et Sonrakii = 0 için n içinvalCell = Aralık("A1").Offset(i, 0).ValueSütun. ValCell, valCell eklesonraki benHata.TemizleHatada GoTo 0' n'yi yeniden boyutlandırn = Sütun Sayısı'Diziyi yeniden bildirReDim StrMüşteriler(1'den n'ye)'Koleksiyonda dolaşarak Diziyi Dolduruni = 1 için Col.Count içinStrCustomers(i) = Sütun(i)sonraki benDebug.Print Join(StrCustomers(), vbCrLf)Alt Bitiş

Diziyi Benzersiz Değerlerle Doldur - İşlev

Yukarıdaki örnek, istediğiniz eylemleri gerçekleştirecek bir prosedür gösterdi. Ancak bunun yerine görevi gerçekleştirmek için taşınabilir bir İşlev tercih edebilirsiniz:

123456789101112131415161718192021222324 İşlev CreateUniqueList(nStart as Long, nEnd kadar uzun) Variant olarakDim Col Yeni Koleksiyon Olarakloş arrTemp() Olarak SicimDim valCell As StringDim i Tamsayı Olarak'Geçici Koleksiyonu DoldurHatada Devam Et Sonrakii = 0 için nEnd içinvalCell = Aralık("A" & nStart).Offset(i, 0).ValueSütun. valCell, valCell eklesonraki benHata.TemizleHatada GoTo 0' n'yi yeniden boyutlandırnEnd = Sütun Sayısı'Diziyi yeniden bildirYeniden Karartma arrTemp(1'den Son'a)'Koleksiyon arasında döngü yaparak geçici diziyi dolduruni = 1 için Col.Count içinarrTemp(i) = Sütun(i)sonraki ben'geçici diziyi işlev sonucuna döndürCreateUniqueList = arrTemp()Bitiş İşlevi

İşlevi kullanmak için, onu bir Alt Prosedürden çağırmanız gerekir:

123456789 Sub PopulateArray()Dim StrCustomers() As StringKoleksiyon olarak Dim strColDim n Uzun'aralıktaki satırları sayınn = Aralık("A1", Aralık("A1").End(xlDown)).Rows.Count'benzersiz değerler dizisi oluşturmak için işlevi çalıştırınstrCustomers() = CreateUniqueList(1,n)Alt Bitiş
wave wave wave wave wave