/ Excel VBA'da Sayıları Sırala

Excel VBA'da Sayıları Sırala

Aşağıda bir programa bakacağız Excel VBA o numaraları sıralar.

Durum:

Sayıları Sırala Örneği

Çalışma sayfanıza bir komut düğmesi yerleştirin ve aşağıdaki kod satırlarını ekleyin:

1. İlk olarak, Tamsayı ve bir Range nesnesinin üç değişkenini beyan ederiz.

Dim i As Integer, j As Integer, temp As Integer, rng As Range

2. Range nesnesini, A sütunundaki sayılarla başlatıyoruz. Bunun için CurrentRegion özelliğini kullanıyoruz. CurrentRegion, önceden bir aralığın sınırlarını tam olarak bilmediğimizde yararlıdır (bu programın 9 sayı için değil, aynı zamanda 90 sayı için çalışmasını istiyoruz).

Set rng = Range("A1").CurrentRegion

3. İki Sonraki Döngü için başlıyoruz.

For i = 1 To rng.Count
    For j = i + 1 To rng.Count

Açıklama: rng.Count 9 eşittir, böylece ilk iki kod satırı i = 1 ila 9'a ve j = i + 1'den 9'a düşer. İ = 1, j = 2, 3, ..., 8 ve 9 için kontrol edilir.

4. Numaraları düzgün bir şekilde sıralamak için, ilk sayıyı bir sonraki numarayla karşılaştırırız. Bir sonraki sayı daha küçükse, sayıları değiştiririz. Aşağıdaki If Then ifadesini ekleyin.

If rng.Cells(j) < rng.Cells(i) Then

End If

Yukarıdaki ifade doğruysa, sayıları değiştiririz.

Örneğin: i = 1 ve j = 2 için, 2 ve 10 rakamları karşılaştırılmaktadır. Yukarıdaki ifade doğru değil. Böylece sayıları değiştirmeye gerek yok. Excel VBA, j'yi 1 artırır ve i = 1 ve j = 3 için kod satırlarını tekrarlar. 5'in 2'den büyük olduğunu, dolayısıyla sayıları değiştirmeye gerek olmadığını kolayca görebilirsiniz. J = 4, j = 5 ve j = 6 için aynı sonucu elde ederiz. J = 7'ye geldiğimizde, yukarıdaki ifade 1'den küçük olduğu için doğrudur.

5. Numaraları değiştiririz. Bir numarayı geçici olarak saklarız, böylece Excel VBA sayıları doğru şekilde değiştirebilir. If deyiminde aşağıdaki kod satırlarını ekleyin.

"swap numbers
temp = rng.Cells(i)
rng.Cells(i) = rng.Cells(j)
rng.Cells(j) = temp

6. İkinci Sonraki döngü için (If ifadesinin dışında) kapatıyoruz.

Next j

İ = 1 ve j = 7 için, Excel VBA değiştirildisayılar. Bu da ilk pozisyonda 1 ve pozisyon 7'de 2 olacağımız anlamına geliyor. Şimdi ilk pozisyonda 1 var, bu değeri 5 (j = 8) ve 4 (j = 9 için) ile karşılaştırıyoruz. Sayıları değiştirmeye gerek yoktur (1 en küçük sayıdır). Bu şekilde Excel VBA (i = 1 için) ilk konumdaki en küçük sayıyı alır. İkinci sıradaki ikinci en küçük sayıyı elde etmek için, Excel VBA, i = 2 için aynı adımları tekrarlar. Üçüncü konumdaki üçüncü en küçük sayıyı elde etmek için, Excel VBA, i = 3 vb. İçin aynı adımları tekrarlar.

7. Bir sonraki İlk döngü için (If ifadesinin dışında) kapatın.

Next i

8. Programınızı test edin.

Sonuç:

Excel VBA'da Sayıları Sırala

Ayrıca oku: