Çözüldü sıralama macrosu

incsoft

Altın Üye
Katılım
18 Ağustos 2009
Mesajlar
740
Excel Vers. ve Dili
Office Ev ve İş 2021 - Türkçe
Altın Üyelik Bitiş Tarihi
12-12-2024
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
 

tugkan

Altın Üye
Katılım
6 Kasım 2004
Mesajlar
445
Excel Vers. ve Dili
Excel 2016
Türkçe 64 BIT
Altın Üyelik Bitiş Tarihi
16-10-2025
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.
 
Üst