• DİKKAT

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

Sıralama

ckarabacak

Altın Üye
Katılım
12 Ocak 2010
Mesajlar
369
Excel Vers. ve Dili
Excel 2010
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

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
 
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
 
Sayın dalgalikur ilginize teşekkür ederim.
Sayın YUSUF44 sorunu çözdük. çok teşekkür ederim iyi çalışmalar dilerim
 
Ş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.
 
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
 
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.
 
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
 
Sayın Necdet Merhaba

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

İyi çalışmalar
 
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
 
Sayın Asri Merhaba

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

İyi akşamlar
 
Geri
Üst