VBA Sıralama Dizisi

Bu öğretici, VBA'da bir Dizideki değerlerin nasıl sıralanacağını gösterecektir.

Bir Döngü Kullanarak Tek Boyutlu Diziyi Sıralama

Bir Diziyi sıralamak, döngüler, değişkenler ve geçici diziler kullanarak biraz veri işlemeyi gerektirir.

  • İlk önce diziyi değerlerinizle doldurmanız gerekir.
  • Daha sonra dizide iki kez dolaşmanız gerekir! Geçerli öğe dizisinden bir değer almak için bir kez ve dizideki bir sonraki öğenin değerini almak için hala o döngüdeyken.
  • Daha sonra öğeleri karşılaştırmanız gerekir - ve 2. öğe alfabetik olarak 1. öğeden ÖNCE ise, 2. öğeyi birincinin konumuna taşıyın.

Aşağıdaki örnek bu prosedürü göstermektedir.

1234567891011121314151617181920212223 Alt SorAnArray()Dim kadar uzun'Diziyi ayarlaDim strName() Varyant OlarakVaryant Olarak Düşük Sıcaklık'diziyi doldurstrName() = Array("Bob Smith", "John Davies", "Fred Jones", "Steve Jenkins", "Bob Williams")'arry'nin sınırından geç ve ilk adı ali = LBound(strName) için UBound(strName) - 1'tekrar dolaşın ve sonraki adın alfabetik olarak orijinalden önce mi sonra mı olduğunu kontrol edinj = i + 1 için UBound(strName)Eğer UCase(strName(i)) > UCase(strName(j)) ise'adın önceki addan önce taşınması gerekiyorsa, geçici bir diziye ekleyinSıcaklık = strName(j)'isimleri değiştirstrName(j) = strName(i)strName(i) = SıcaklıkBitirsonraki jsonraki ben'Diziyi bir mesaj kutusundan çıkarMsgBox Join(strName(), vbCrLf)Alt Bitiş

Bu prosedürü çalıştırırsanız, aşağıdaki mesaj kutusunu alırsınız.

Diziyi diğer yönde de sıralayabilirsiniz - örneğin: bu kod satırını değiştirerek Z'den A'ya

1 Eğer UCase(strName(i)) > UCase(strName(j)) ise

bu kod satırına

1 Eğer UCase(strName(i)) < UCase(strName(j)) ise

Daha sonra aşağıdaki mesaj kutusunu alırsınız.

Arkadaşlarınızla sayfasını paylaşan sitenin gelişimine yardımcı olacak

wave wave wave wave wave