İçindekiler
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.