• DİKKAT

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

son dolu satır tespitindeki fark

Katılım
30 Eylül 2009
Mesajlar
625
Excel Vers. ve Dili
excel 2016
herkese merhaba!!! değerli uzmanlarımızın kod yazar iken genellikle son dolu satırrın tespitinde kullandıklarını düşündüğüm S1.Cells(Rows.Count, 2).End(3).Row ifadesi ile S1.(A65536).End(3).Row ifadesi arasında herhangi bir fark varmıdır? var ise ne gibi farklar vardır? hangi durumda hangisini kullanmak gerekir. izahatlerinizi esirgemeyeceğinizi umarak saygılar sunarım!!!
 
ikisi de aynı sonucu verir. şu farkla ki, birinci "B" sütunu için, ikinci "A" sütunu için.

herhangi bir sütunda içinde veri olan en son satırı bulmak istiyorsak, bu yöntemin sağlıklı sonuç üretmesi için sayfada filtre uygulanmamış olmalı, gizlenmiş satır olmamalı. yoksa yanlış sonuç verir.
 
satır, sütun önemli değil, sayfadaki en altta bulunan hücrenin satır numarasını, en sağda bulunan hücrenin sütun numarasını öğrenmek istiyorum derseniz aşağıdaki kodu kullanabilirsiniz.

yine, filtre veya gizlenmiş satır/sütun olmamalı.

eğer bir Sheet'e referans verilmemiş ise o an aktif olunan sayfadaki değerleri mesaj kutusunda gösterir.

Kod:
Sub ss_ss()

Dim SonSat As Long, SonSut As Long

SonSat = Cells.Find("*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row
SonSut = Cells.Find("*", SearchDirection:=xlPrevious, SearchOrder:=xlByColumns).Column

MsgBox SonSat
MsgBox SonSut


veri isimli sayfadaki değerleri bulmak için aşağıdaki kullanılır. o sayfayı aktif hale getirmenize gerek yoktur.
Kod:
Sub ss_ss()

Dim SonSat As Long, SonSut As Long

With Worksheets("veri")
    SonSat = .Cells.Find("*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row
    SonSut = .Cells.Find("*", SearchDirection:=xlPrevious, SearchOrder:=xlByColumns).Column
End With

MsgBox SonSat
MsgBox SonSut

End Sub


veya
Kod:
Sub ss_ss()

Dim SonSat As Long, SonSut As Long

SonSat = Worksheets("veri").Cells.Find("*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row
SonSut = Worksheets("veri").Cells.Find("*", SearchDirection:=xlPrevious, SearchOrder:=xlByColumns).Column

MsgBox SonSat
MsgBox SonSut

End Sub
 
ikisi de aynı sonucu verir. şu farkla ki, birinci "B" sütunu için, ikinci "A" sütunu için.

herhangi bir sütunda içinde veri olan en son satırı bulmak istiyorsak, bu yöntemin sağlıklı sonuç üretmesi için sayfada filtre uygulanmamış olmalı, gizlenmiş satır olmamalı. yoksa yanlış sonuç verir.

merhaba sayın mancubus!!! değerli izahatleriniz için şükranlarımı arz ederim.makro bilgim yok denecek kadar az,ancak değerli üyelerimzin verdiği cevapları gördükçe insan heves ediyor,tabi her yiğidin yoğurt yemesi farkından dolayı makrolarda da aynı sonucu veren farklı kullanımlar olunca benim gibi acemiler acaba bu nedir diye kafa yormadan edemiyor.ayrıca diğer mesajınızda ki izahatleriniz için teşekkür ederim.
son olarak izahatlerinizden hangisini kullansam fark etmez diye düşünebilirim herhalde?saygılar!!!
 
rica ederim.

yanlış anlama olmasın: hayır, hepsi aynı sonucu vermez.

aynı sonuç derken, hepsi son dolu hücreyi bulmakta kullanılan yöntemlerdir demek istedim.

siz B sütunundaki son değeri arıyorsanız 1.yi, A sütununda arıyorsanız 2.yi, tüm sayfada arıyorsanız benim yazdığımı kullanın.

çünkü veri tablolarında boş hücreler olabilir. bu takdirde yanlış rakama ulaşabilirsiniz.

son bir not:
benim önerdiğim yöntemde sayfada veri olması gerekir. eğer boş bir sayfa ise hata alırsınız.
bunu önlemek için kodun içine On Error Resume Next veya If Application.CountA(Cells) > 0 Then vb gibi bir satır eklemek gerekebilir.
 
sayın manubus benim merak ettiğim her iki yöntemin aynı amaca yönelik olup olmadığını bilmek idi.
kod içerisindeki 2 rakamının B sütununa A harfinin ise A sütununa hitap ettiğini anlayabiiyorum
ayrıca ilave izahatiniz içinde teşekkürlerimi arz ederim!!!
 
Son düzenleme:
herkese merhaba!!! değerli uzmanlarımızın kod yazar iken genellikle son dolu satırrın tespitinde kullandıklarını düşündüğüm S1.Cells(Rows.Count, 2).End(3).Row ifadesi ile S1.(A65536).End(3).Row ifadesi arasında herhangi bir fark varmıdır? var ise ne gibi farklar vardır? hangi durumda hangisini kullanmak gerekir. izahatlerinizi esirgemeyeceğinizi umarak saygılar sunarım!!!

Sayın Ayşavkı;
nacizane bir ekleme de ben yapayım.
S1.Cells(Rows.Count, 2).End(3).Row ifadesi en son hücreden geri gelerek son dolu hücreyi bulur örneğin excel 97-2003 versiyonlarında en son 65536 satır var idi o yüzden yaygın kullanım 2 ncisidir. Ancak daha üst versiyonlarda satır sayısı artmıştır. birinci örneği tüm excel versiyonlarında kullabilirsiniz ancak ikincisini 97-2003 versiyonlarında kullanmak gerekir şayet 2007 ve ya 2010 kullanıyorsak ve sayfadaki verilerimiz 65536 satırı geçmiş ise ikinci kod bize son dolu hücreyi vermez.
rows.count satır sayısı demektir. vesiyona bakmaz sadece satır sayısına bakar
ben böyle biliyorum en azından
saygılarımla...
 
sayın mbldn!!! ilginiz için teşekkürler,izahatiniz karşılaşılabilecek muhtemel hataların sebebi hakkında fikir verici nitelikte oldu saygılar!!!
 
merhaba sayın halit bey!!! ilginiz için teşekkür ederim. aynı neticeye hizmet eden farklı kodlar olunca ben ve benim gibi kod konusunda tecrübesi olmayanlar farklılıkları yeni bir şey imiş gibi algılıyoruz,vermiş olduğunuz linkteki örnekler içinde ayrıca teşekkür ederim.saygılar!!!
 
Geri
Üst