Sıralama

ckarabacak

Altın Üye
Katılım
12 Ocak 2010
Mesajlar
340
Excel Vers. ve Dili
Excel 2010
Altın Üyelik Bitiş Tarihi
10-07-2026
Merhaba Arkadaşlar

Ekli dosyada açıklamaya çalıştığım gibi kişi koduna ve ismine göre sıralama yaptırmak için yazılımda nasıl bir düzenleme yapılabilir

Yardımlarınızı rica ederim.
 

Ekli dosyalar

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,379
Excel Vers. ve Dili
2019 Türkçe
Merhaba.
Tam anlamadım ama aşağıdaki iki kodu deneyin istediğiniz olmazsa sorunuzu daha açık ifade edin. Örnek dosya üzerinde görmek istediğiniz sıralamayı el ile yapıp yeniden paylaşın.

Kod:
Sub görevkodunagöre_isimsırala1()
    Application.ScreenUpdating = False

    Range("C3:H65000").Sort Key1:=Range("C3"), Order1:=xlAscending, Key2:=Range("E3") _
        , Order2:=xlAscending, Header:=xlNo, OrderCustom:=1, MatchCase:=False, _
        Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal
    Application.ScreenUpdating = True
End Sub
Kod:
Sub görevkodunagöre_isimsırala2()
    Application.ScreenUpdating = False

    Range("C3:H65000").Sort Key1:=Range("E3"), Order1:=xlAscending, Key2:=Range("C3") _
        , Order2:=xlAscending, Header:=xlNo, OrderCustom:=1, MatchCase:=False, _
        Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal
    Application.ScreenUpdating = True
End Sub
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,071
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Toplam satırı olması nedeniyle 65000. satıra kadar sıralama yaptıramazsınız, makro hata verir. Zaten 65000 satır olmayan bir şeyi sıralamak da mantıklı değildir. Kaç satırsa o kadarı sıralatılabilir.

Aşağıdaki gibi deneyin:

PHP:
Sub görevkodunagöre_isimsırala()
    Application.ScreenUpdating = False
        son = Cells(Rows.Count, "C").End(3).Row
        ActiveWorkbook.Worksheets("LİSTE").Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("LİSTE").Sort.SortFields.Add Key:=Range("C3:C" & son), _
            SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        ActiveWorkbook.Worksheets("LİSTE").Sort.SortFields.Add Key:=Range("E3:E" & son), _
            SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        With ActiveWorkbook.Worksheets("LİSTE").Sort
            .SetRange Range("C2:H" & son)
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    
        Range("C3").Select
    Application.ScreenUpdating = True
End Sub
 

ckarabacak

Altın Üye
Katılım
12 Ocak 2010
Mesajlar
340
Excel Vers. ve Dili
Excel 2010
Altın Üyelik Bitiş Tarihi
10-07-2026
Sayın dalgalikur ilginize teşekkür ederim.
Sayın YUSUF44 sorunu çözdük. çok teşekkür ederim iyi çalışmalar dilerim
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,071
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Şunu açıklayayım. Ben bu kodları makro kaydet yoluyla elde ettikten sonra sadece son dolu satıra göre çalışabilsin diye "son" değişkenini ekleyip kodu tamamladım. Yani makro kaydetmeyi çalıştırıp, C2:H10 aralığını seçtikten sonra sıralama işlemin, istediğiniz gibi yaptıktan sonra makro kodlarını elde etmiş olursunuz. Aklınızda bulunsun.
 

ckarabacak

Altın Üye
Katılım
12 Ocak 2010
Mesajlar
340
Excel Vers. ve Dili
Excel 2010
Altın Üyelik Bitiş Tarihi
10-07-2026
Sayın YUSUF44 tekrar merhaba

Bende Makro Kodu yazılımını pek bilmem bana lazım olanı benzer konularda yazılan makroları kendi çalışma dosyamın yapısına ve mantığına göre uyarlamaya çalışıyorum ve çoğunlukla işimi görüyorum. Sizin göndermiş olduğunuz makroya benzer bir yazılımda son satır durumunu gördüm ancak o yazılımlardan kendime göre uyarlama yapamadım.

Yardımınız için tekrar teşekkür ederim.

Ancak vaktiniz varmı bilmiyorum merak ettim kodları makro kaydet ile elde ttiğinizi yazmışsınız böyle bir programmı var yoksa her konuda bir önceki konulardan mantık yürüterek yeni soru için yeniden kod yazılımımı yapıyorsunuz.

Ayrıca c2:h10 yazmama gerek yok çünki dosya satırı daha uzayabiliyor. h10 yazmamam veya yeni listede yeni sütun ve son satır no'sunu yazmammı gerekiyor.

İyi Akşamlar
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,071
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Makro kaydet Excel'in kendi özelliği. Öncelikle Excel programınıza geliştirici sekmesi ekleyin. Nasıl yapılacağını excel sürümünüze göre araştırıp bulabilirsiniz. Normalde Excel seçeneklerine bulunur.

Bu sekmede makroyla ilgili kmenü ve komutlar vardır ve bunların biri de makro kaydet düğmesidir.

Bu düğmeye bastığınızda önce makro için isim vermenizi ister. İsim belirleyip başlattığınızdan itibaren excel üzerinde yaptığınız her işlem makro kodu olarak kaydedilir. Bu kodu da o dosyadaki Module içinde görebilirsiniz.

Ben son değişkenini zaten dosyanızda daha uzatma olursa da kullanılsın diye belirledim. O değişken her zaman C sütunundaki son dolu hücreyi bulur ve sıralamayı da bu satıra göre yapmamızı sağlar.

Sıralama işlemlerinde ilk olarak "Sortfields.clear" işlemi yapılmalıdır. Yoksa makro her çalıştığında sıralama menüsünde yeni sıralama oluşturulur ve sıralama kriterleri hep artar. Bunu görmek için o satırın başına ' işareti koyun ya da o satırı silin. Sonra makroyu üstüste bir kez çalıştırıp sonra sıralama menüsünü inceleyin.

Sütun işi ise farklı bir uygulama gerektiriyor. Eğer tablonuzda satırlar atıp azaldığı gibi sütunlar da değişiyorsa son dolu sütunu da belirleyip sıralama alanında kullanmamız gerekir.
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,493
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,

Benim kodlarda şöyle :

Kod:
Sub Sırala()

    Dim Son As Long
    
    Son = Cells(Rows.Count, "B").End(3).Row - 1
    Range("C3:H" & Son).Sort Key1:=[C3], Key2:=[E3]
    
End Sub
 

ckarabacak

Altın Üye
Katılım
12 Ocak 2010
Mesajlar
340
Excel Vers. ve Dili
Excel 2010
Altın Üyelik Bitiş Tarihi
10-07-2026
Sayın Necdet Merhaba

İlginize ve yardımınız için çok teşekkür ederim.

İyi çalışmalar
 
Katılım
24 Nisan 2005
Mesajlar
3,680
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Benim değil ama tek satır olması daha güzel :)

Kod:
Sub Sırala()
     Range("C3:H" & Cells(Rows.Count, "B").End(3).Row - 1).Sort Key1:=[C3], Key2:=[E3]
End Sub
 

ckarabacak

Altın Üye
Katılım
12 Ocak 2010
Mesajlar
340
Excel Vers. ve Dili
Excel 2010
Altın Üyelik Bitiş Tarihi
10-07-2026
Sayın Asri Merhaba

İlginize çok teşekkür ederim. Bu kod' da işimi gördü

İyi akşamlar
 
Katılım
24 Nisan 2005
Mesajlar
3,680
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Sayın Asri Merhaba

İlginize çok teşekkür ederim. Bu kod' da işimi gördü

İyi akşamlar
Kod @Necdet bey in yazdığı kod ben sadece tek satır olarak yazdım. Her hangi bir katkım yok.
 
Üst