soyada göre makrolu sırala

şehiriçi

Altın Üye
Katılım
1 Ağustos 2013
Mesajlar
563
Excel Vers. ve Dili
Ofis 2016 TR 32 Bit
Altın Üyelik Bitiş Tarihi
12-03-2025
Selam Arkadaşlar,
ekteki dosyamda ki tablodaki verileri soyada göre makrolu sırala yabilirmiyiz, teşekkürler.
 

Ekli dosyalar

Necdet

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

Kod:
Sub Sırala()

    Dim i As Long
    
    i = Cells(Rows.Count, "A").End(3).Row
    
    Range("A2:H" & i).Sort Key1:=[C1]
    
End Sub
 

şehiriçi

Altın Üye
Katılım
1 Ağustos 2013
Mesajlar
563
Excel Vers. ve Dili
Ofis 2016 TR 32 Bit
Altın Üyelik Bitiş Tarihi
12-03-2025
Teşekkürler Necdet Bey
 

şehiriçi

Altın Üye
Katılım
1 Ağustos 2013
Mesajlar
563
Excel Vers. ve Dili
Ofis 2016 TR 32 Bit
Altın Üyelik Bitiş Tarihi
12-03-2025
aynı dosyanın tarihe göre sıralaması makrolu nasıl oluyor ,yukardaki makro sadece soyada göre sıralanıyor , teşekkürler
 

Ekli dosyalar

Son düzenleme:

şehiriçi

Altın Üye
Katılım
1 Ağustos 2013
Mesajlar
563
Excel Vers. ve Dili
Ofis 2016 TR 32 Bit
Altın Üyelik Bitiş Tarihi
12-03-2025
nadir yıldız teşekkürler .Emin olamadığım için gerçek dosyamın benzeri bir örnek dosya gönderiyorum .B sütunundaki tarihler tüm satırlar dahil sıralanması gerek , size ve ilgilenen tüm arkadaşlara teşekkürler
 

Ekli dosyalar

Necdet

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

Tüm satırlar diyorsunuz arada sütunlarda boşluklar var, onlar da sıralamaya dahil olacak mı?
Eğer olacaksa W1, X1 ve Y1 hücrelerini herhangi bir karakterle doldurun, görülmesini istemiyorsanız font rengini beyaz yapın.
Aşağıdaki kod yukarıdaki şartları gerçekleştirdiğinizde Cursor hangi sütunda ise o sütuna göre sıralama yapar.

Dolayısıyla tek bir kod yeterli.

Kod:
Sub Sırala()

    Range("A1").CurrentRegion.Sort Key1:=Cells(1, Selection.Column), Order1:=xlAscending, Header:= _
        xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortTextAsNumbers
      
End Sub
 

şehiriçi

Altın Üye
Katılım
1 Ağustos 2013
Mesajlar
563
Excel Vers. ve Dili
Ofis 2016 TR 32 Bit
Altın Üyelik Bitiş Tarihi
12-03-2025
Necdet bey ilginize teşekkürler , alman aşısı yaptırmıştım oda yan etki olarak üşütme ve sıtma yaptı o yüzden cevabınızı yeni gördüm ,Teşekkürler
Ancak benim yeni çalışmamda sütunlarda boşluklar olabilir yukarıdaki kod benim dosyada tarihe göre sıralama yapmıyor.Ayrıca sadece tarihin olduğu sütun değil tarihin olduğu satırın tamamı değişmeli
saygılarımla
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,375
Excel Vers. ve Dili
Ofis 365 Türkçe
Necdet bey ilginize teşekkürler , alman aşısı yaptırmıştım oda yan etki olarak üşütme ve sıtma yaptı o yüzden cevabınızı yeni gördüm ,Teşekkürler
Ancak benim yeni çalışmamda sütunlarda boşluklar olabilir yukarıdaki kod benim dosyada tarihe göre sıralama yapmıyor.Ayrıca sadece tarihin olduğu sütun değil tarihin olduğu satırın tamamı değişmeli
saygılarımla
Merhaba,

Şanslısınız alaman aşısı olmuşsunuz, onun da bazı sıkıntıları oluyormuş ama daha koruyucu diyorlar. Geçmiş olsun.

Aşağıdaki kodları ilgili sayfanın kod bölümüne kopyalayın.

Hangi sütunda sıralama yapmak istiyorsanız o sütundan bir hücrey ÇİFT TIKLAYIN

Kod:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

    Range("A1").CurrentRegion.Sort Key1:=Cells(1, Target.Column), Order1:=xlAscending, Header:= _
        xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortTextAsNumbers
        
End Sub
 

Ekli dosyalar

Son düzenleme:

şehiriçi

Altın Üye
Katılım
1 Ağustos 2013
Mesajlar
563
Excel Vers. ve Dili
Ofis 2016 TR 32 Bit
Altın Üyelik Bitiş Tarihi
12-03-2025
Necdet Bey çok teşekkür ederim . Şimdi anladım .
Fakat olur da yanlışlık la da olsa sütun başlığından biri boş bırakılırsa sütun başlığını da butonu da dosyayı da bozuyor onun için ben sizin koda bir for döngüsü ve If fonksiyonu ile bu sıkıntının olmaması için önlem aldığımı düşünüyorum .revize olan dosyamı inceleyip varsa bir eksiğim beni uyarırsanız memnun olurum çünkü ileride dosya da ki veri artıp ta sıralama hatası olması beni çok sıkıntıya sokar , teşekkürler.
 

Ekli dosyalar

Necdet

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

Olayı anladığınıza sevindim.
Ben Sınır koymayı sevmediğim için kodları aşağıdaki şekilde düzenledim.

Son dolu hücre ile arada boş hücre olduğunda mesaj verip çıkılıyor.

Kod:
Sub Sırala()

    Dim i As Integer
           
    i = Cells(1, Columns.Count).End(1).Column
   
    If Not Evaluate("=COUNTA(1:1)") = i Then
        MsgBox "BİRİNCİ SATIRIN SON DOLU HÜCRESİ İLE 1. HÜCRE ARASINDA BOŞ BAŞLIK VAR", vbCritical, "----- UYARI ----"
        Exit Sub
    End If
   
    If Selection.Column > i Then
        MsgBox "Seçim Yaptığınız Sütun, Verinin Dışında Bir Sütun ....", vbCritical, "SEÇİM DIŞI UYARISI"
        Exit Sub
    End If
   
    Range("A1").CurrentRegion.Sort Key1:=Cells(1, Selection.Column), Order1:=xlAscending, Header:= _
            xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
            DataOption1:=xlSortTextAsNumbers
           
End Sub
 
Son düzenleme:

şehiriçi

Altın Üye
Katılım
1 Ağustos 2013
Mesajlar
563
Excel Vers. ve Dili
Ofis 2016 TR 32 Bit
Altın Üyelik Bitiş Tarihi
12-03-2025
Merhaba Necdet Bey,
Bende sizin yukardaki kodu kullanarak Sütunda ki sınırı kaldırdım.
Lakin dosyamda şöyle bir sıkıntıyla karşılaştım.(örnek dosya hazırladım ekte)
Ben bu soruyu sorarken B sütununda ki tarihleri excele direk girmiştim ,excelde bunu tarih olarak anladığı için sizin kodda bir sıkıntı olmadı .
Ancak ben verileri excele form üzerinden girince tarih sıralamasını yapamadım.Çünkü textboxtan excele tarih girince excel sola yanaşık yazıyor ve tarih olarak algılamıyor dolayısıyla bizim kod da hata veriyor .
Rica etsem hazırladığım örnek dosyada textboxa bir tarih girerek , bu tarihin excele sağa yanaşık yani tarih olarak girmesini sağlarmısınız , ben yapamadım
Saygılarımla
 

Ekli dosyalar

Necdet

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

Tarih girerken kendimi sıkmadım. 2/5/21 olarak girdim. Gerisini vba halletti.

Kod:
Private Sub CommandButton1_Click()

    Dim bul As Integer
    bul = Sheets("sayfa1").Cells(Rows.Count, 1).End(xlUp).Row + 1

    Sheets("sayfa1").Range("a" & bul) = TextBox1
    Sheets("sayfa1").Range("b" & bul) = CDbl(CDate(TextBox2.Value)) 'Tarih
    Sheets("sayfa1").Range("c" & bul) = TextBox3

End Sub
 

şehiriçi

Altın Üye
Katılım
1 Ağustos 2013
Mesajlar
563
Excel Vers. ve Dili
Ofis 2016 TR 32 Bit
Altın Üyelik Bitiş Tarihi
12-03-2025
Merhaba ,
Necdet bey ,tarih girerken artık sıkıntı çekmiyorum ama bazen tarih girmeye gerek görmediğim durumlar için veya tarih harici bir metin girerken hata uyarısı almamak için ne yapmalıyım, kod da ben uyarlayamadım ,bakabilirmisiniz. yani ,
eğer tarih ise sizin yazdığınız kod değilse ben herhangi bir veri girebilmeliyimde boş da bırakabilmeliyim.teşekkürler
 

Ekli dosyalar

Necdet

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

Dener misiniz?

Kod:
Private Sub CommandButton1_Click()

    Dim bul As Integer
    
    On Error Resume Next
    
    bul = Sheets("sayfa1").Cells(Rows.Count, 1).End(xlUp).Row + 1
 
    On Error Resume Next

    Sheets("sayfa1").Range("a" & bul) = TextBox1
    TextBox2.Value = CDbl(CDate(TextBox2.Value))
    
    Sheets("sayfa1").Range("b" & bul) = TextBox2.Value
    Sheets("sayfa1").Range("c" & bul) = TextBox3

End Sub
 

şehiriçi

Altın Üye
Katılım
1 Ağustos 2013
Mesajlar
563
Excel Vers. ve Dili
Ofis 2016 TR 32 Bit
Altın Üyelik Bitiş Tarihi
12-03-2025
Merhaba ,
Teşekkürler Necdet By , çözüm sağladı , yalnız burda kafama takılan bir şeyi sormadan geçemeyeceğim.
benim gerçek projemde 50-60 kadar textbox ,combobox,listbox vs var örneğin kaydet butonunda bu kodu yazınca (on error resume next) hata vermeden işlemi yapıyor ,acaba sadece tarihle ilgili olan (5 adet tarih var) satıra uygulamak mümkün mü olaki diğerlerinde hata varsa bilmek isterim
Ben araştırmamda şöyle bir kod buldum ve denedim ama olmadı ......on error goto hatagec/ tarih satırı kodu / hatagec: ...........
 

şehiriçi

Altın Üye
Katılım
1 Ağustos 2013
Mesajlar
563
Excel Vers. ve Dili
Ofis 2016 TR 32 Bit
Altın Üyelik Bitiş Tarihi
12-03-2025
Aslında sadece tarihle ilgili satıra eğer textbox tarih ise yukarıda sizin verdiğiniz kod (CDbl(CDate(TextBox24.Value)) yazsın değilse ben textboxa ne girersem onu yazsın istersem boş bırakabileyim istersem metin yazabileyim .
Saygılarımla
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,375
Excel Vers. ve Dili
Ofis 365 Türkçe
Aslında sadece tarihle ilgili satıra eğer textbox tarih ise yukarıda sizin verdiğiniz kod (CDbl(CDate(TextBox24.Value)) yazsın değilse ben textboxa ne girersem onu yazsın istersem boş bırakabileyim istersem metin yazabileyim .
Saygılarımla
Denemeden yazıyorsunuz. Deneyiniz.
 

şehiriçi

Altın Üye
Katılım
1 Ağustos 2013
Mesajlar
563
Excel Vers. ve Dili
Ofis 2016 TR 32 Bit
Altın Üyelik Bitiş Tarihi
12-03-2025
Teşekkürler Necdet bey
 
Üst