Vba: bir sayfayı birden çok sütuna göre sıralama


VBA’yı kullanarak bir Excel sayfasını birden çok sütuna göre sıralamak için aşağıdaki temel sözdizimini kullanabilirsiniz:

 Sub SortMultipleColumns()
    Range(" A1:B11 ").Sort Key1:=Range(" A1 "), Order1:=xlAscending, _
                         Key2:=Range(" B1 "), Order2:=xlDescending, _
                         Header:=xlYes
End Sub

Bu özel örnek , A1:B11 aralığındaki hücreleri önce A sütunundaki değerlere göre artan sırada, ardından B sütunundaki değerlere göre azalan sırada sıralar.

Header:=xlYes’in ilk satırın başlık satırı olarak değerlendirilmesi gerektiğini belirttiğini unutmayın.

Aşağıdaki örnek, bu sözdiziminin pratikte nasıl kullanılacağını gösterir.

Örnek: VBA Kullanarak Bir Excel Sayfasını Birden Çok Sütuna Göre Sıralama

Diyelim ki Excel’de çeşitli basketbol oyuncuları hakkında bilgiler içeren aşağıdaki veri kümesine sahibiz:

Veri kümesini aşağıdaki şekilde sıralamak istediğimizi varsayalım:

  • Öncelikle Takım sütunundaki değerleri artan düzende (A’dan Z’ye) sıralayın.
  • Daha sonra Puanlar sütunundaki değerleri azalan düzende (en büyüğünden en küçüğüne) sıralayın.

Bunun için aşağıdaki makroyu oluşturabiliriz:

 Sub SortMultipleColumns()
    Range(" A1:B11 ").Sort Key1:=Range(" A1 "), Order1:=xlAscending, _
                         Key2:=Range(" B1 "), Order2:=xlDescending, _
                         Header:=xlYes
End Sub

Bu makroyu çalıştırdığımızda aşağıdaki çıktıyı alıyoruz:

Satırlar artık takım adına göre artan sırada ve puanlara göre azalan sırada sıralanıyor.

Not #1 : Bu örnekte iki sütuna göre sıralama yaptık. Ancak daha fazla sütunu sıralamak için istediğiniz kadar anahtar belirleyebilirsiniz.

Not #2 : VBA sıralama yönteminin tam belgelerini burada bulabilirsiniz.

Ek kaynaklar

Aşağıdaki eğitimlerde VBA’da diğer ortak görevlerin nasıl gerçekleştirileceği açıklanmaktadır:

VBA: EĞER ORTALAMA ve EĞER ORTALAMA işlevleri nasıl yazılır
VBA: ETOPLA ve ETOPLA işlevleri nasıl yazılır
VBA: COUNTIF ve COUNTIFS işlevleri nasıl yazılır?

Yorum ekle

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir