• DİKKAT

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

Dolu olan en alt satırı bulmak

  • Konbuyu başlatan Konbuyu başlatan tcexcel
  • Başlangıç tarihi Başlangıç tarihi
Katılım
16 Nisan 2007
Mesajlar
27
Excel Vers. ve Dili
2010 TR
Merhabalar,

Bir sayfada A dan D sütununa kadar dolu hücreler var. Bazı satırlarda boşluklar var.
A sütununda dolu olan en alt satır numarası : 45
B sütununda dolu olan en alt satır numarası : 52
C sütununda dolu olan en alt satır numarası : 33
D sütununda dolu olan en alt satır numarası : 63

olsun. D sütununa göre dolu olan en alt satır numarası 63 oluyor. Bunu bulmak için Range("D65536").End(xlUp).Row komutu ile bulabiliyorum. ActiveCell.SpecialCells(xlLastCell).Row komutu ise sayfada en altta eskiden kullanılmış içi boş olan alt satıra gidebiliyor.

Dolu olan en alt satır belirli bir sütunda olsa sorun olmayacak fakat A ile D sütunu arası dolu olan en alt satır farklı sayfalara göre sürekli değişebildiğinden A,B,C,D sütunlarının dolu olan en alt satırlarını End(xlUp).Row ile ayrı ayrı bulduktan sonra bunları if fonksiyonu ile karşılaştırarak en büyük satır numarasını bulabiliyorum.

Benim yapmak istediğim bu son satır numaralarını dizi değişkene atayarak en büyük olanı bulabilirmiyim. Ubound fonksiyonu dizi değişkenlerde en büyük değeri veriyor fakat bunu kullanamadım. Yada bu işlemin daha kısa bir yolu var mı?
Teşekkürler.
 
Merhaba,

Aşağıdaki kod işinizi görür mü?

Kod:
Sub Makro1()
    Range("A1").Activate
    MsgBox Selection.CurrentRegion.Rows.Count
End Sub
 
teşekkür ederim ama işimi görmüyor. Bazı sayfalarda satırlar A1 den değilde A3 A4 gibi alt satırlardan da başlayabiliyor ve aradaki bazı satırlar da tamamen boş olabiliyor. Amacım en alt satırı bulup bütün dolu satırlar bitene kadar makromu çalıştırmak. Her sütunun son satırını ayrı ayrı bulabiliyorum ama bunları bir değişkene atayıp (dizi değişken de olabilir) en büyük sayıyı bulmak istiyorum. formüllerde bir hücre aralığındaki en büyük değeri =büyük() formülü ile bulabiliyoruz. Bunun benzerini makro ile değişkenler üzerinde yapmak isityorum.
 
Selamlar,

Aşağıdaki kodu kullanabilirsiniz.

Kod:
Option Explicit
 
Sub SON_SATIRI_BUL()
    Dim X As Integer, SATIR As Long, SON_SATIR As Long
 
    For X = 1 To 256
        SATIR = Cells(65536, X).End(3).Row
        SON_SATIR = WorksheetFunction.Max(SON_SATIR, SATIR)
    Next
 
    MsgBox SON_SATIR
End Sub
 
Sayın Korhan Ayhan, istediğim tam olarak buydu teşekkür ederim.
 
Bende bu konu hakkında birşey sormak istiyorum;

Herhangi bir sayfayı seçtiğimizde o sayfada ki E sütununda dolu olan en son hücreyi seçmesini nasıl sağlayabiliriz?
 
Selamlar,

Aşağıdaki kodu ThisWorkbook bölümüne uygulayın. Çalışma sayfaları aktif olduğu anda kod çalışacaktır.

Kod:
Option Explicit
 
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    If Sh.Name = "Sayfa1" Or Sh.Name = "Sayfa2" Then
    Sh.Range("E65536").End(3).Activate
    End If
End Sub
 
Çok sağolun hocam, kodu çalıştıramadım sayfada şöylede birkaç kod var, birbiri ile çakışıyor mu acaba?

Kod:
Const iInternational As Integer = Not (0)
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim iColor As Integer
On Error Resume Next
iColor = Target.Interior.ColorIndex
If iColor < 0 Then
iColor = 15
Else
iColor = iColor + 1
End If
If iColor = Target.Font.ColorIndex Then iColor = iColor + 1
Cells.FormatConditions.Delete
With Rows(Target.Row)
.FormatConditions.Add Type:=2, Formula1:=iInternational
.FormatConditions(1).Interior.ColorIndex = iColor
End With
End Sub

Kod:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Application.Intersect(Target, [b9:b5000]) Is Nothing Then Exit Sub
    takvim.Show
End Sub

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)

If Intersect(Target, Range("h:ı")) Is Nothing Then Exit Sub

If Target.Column = 7 Then
If Target.Row > 6 Or Target.Row < 2497 Then
If Cells(Target.Row, 7) > 0 Then
If Cells(Target.Row, 8) > 0 Then
Cells(Target.Row, 10).Value = Cells(Target.Row, 8).Value / Cells(Target.Row, 7).Value
Else
Cells(Target.Row, 10).Value = ""
End If
Else
Cells(Target.Row, 10).Value = ""
End If
End If
End If

If Target.Column = 8 Then
If Target.Row > 6 Or Target.Row < 2497 Then
If Cells(Target.Row, 7) > 0 Then
If Cells(Target.Row, 8) > 0 Then
Cells(Target.Row, 10).Value = Cells(Target.Row, 8).Value / Cells(Target.Row, 7).Value
Else
Cells(Target.Row, 10).Value = ""
End If
Else
Cells(Target.Row, 10).Value = ""
End If
End If
End If

End Sub
 
Selamlar,

Sn. irfancantr,

Kodu sayfanın kod bölümüne değil THISWORKBOOK bölümüne uygulamanız gerekiyordu. Mesajımda belirtmiştim ama sanırım gözünüzden kaçtı.
 
Evet özür dilerim hocam ama sadece belirlediğim sayfaların olma imkanı var mı?
 
Selamlar,

#7 nolu mesajımdaki kodu güncelledim. İncelermisiniz. Eğer daha fazla sayfa adı kontrolü yapacaksanız OR ifadesi ile dilediğiniz kadar çoğaltabilirsiniz.
 
Selamlar,

#7 nolu mesajımdaki kodu güncelledim. İncelermisiniz. Eğer daha fazla sayfa adı kontrolü yapacaksanız OR ifadesi ile dilediğiniz kadar çoğaltabilirsiniz.


Teşekkür ederim sayın Korhan Hocam, iyi günler...
 
Geri
Üst