• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Çözüldü sıralama macrosu

Katılım
18 Ağustos 2009
Mesajlar
752
Excel Vers. ve Dili
Office Ev ve İş 2021 - Türkçe
A sütunundan Z sütununa kadar olan verileri sıralama ölçüsü Sütun B ve daha sonra Sütun C olmak şartıyla ve Verilerimde üst bilgi var işaretli olacak şekilde en kısa nasıl macroyla yapabiliriz arkadaşlar? Aşağıdaki macro ile oluyor ancak daha kısa olursa dosya biraz daha hızlı olacaktır.



Sub sırala()
'
' sırala Makro
'

'
Columns("A:Z").Select
ActiveWorkbook.Worksheets("DATA").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("DATA").Sort.SortFields.Add2 Key:=Range("B2:B835") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("DATA").Sort.SortFields.Add2 Key:=Range("C2:C835") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("DATA").Sort
.SetRange Range("A1:Z835")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("A1").Select
End Sub
 
Dener misiniz?

Daha kısa ve optimize edilmiş bir macro kodu, belirli satır aralığını manuel olarak belirtmek yerine, otomatik olarak verinin olduğu bölgeyi bulacak ve sıralama işlemini gerçekleştirecektir. Bu da kodu daha esnek ve hızlı hale getirecektir. Aşağıdaki şekilde, satır sayısını belirtmek zorunda kalmadan işlemi yapacak bir macro oluşturabilirsiniz:
Kod:
Sub Sirala()
    ' "Sirala" Makrosu
    
    Dim ws As Worksheet
    Set ws = ActiveWorkbook.Worksheets("DATA")
    
    With ws.Sort
        .SortFields.Clear
        .SortFields.Add Key:=ws.Range("B2"), Order:=xlAscending
        .SortFields.Add Key:=ws.Range("C2"), Order:=xlAscending
        .SetRange ws.Range("A1:Z" & ws.Cells(ws.Rows.Count, "A").End(xlUp).Row)
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .Apply
    End With
End Sub

Bu makro:

  1. ws adlı bir değişken ile hedef çalışma sayfasını tanımlar.
  2. SetRange içinde verinin olduğu son satırı otomatik olarak bulur (ws.Cells(ws.Rows.Count, "A").End(xlUp).Row).
  3. Sıralama kriteri olarak B ve ardından C sütununu ekler.
Bu şekilde, daha kısa ve esnek bir kod ile sıralama işlemini yapabilirsiniz.
 
Geri
Üst