NOT : Bunu Correctson satırı bulmak için kullanabileceğiniz bir "tek durak sonrası" yapmak niyetindeyim . Bu ayrıca son satırı bulurken izlenecek en iyi uygulamaları da kapsayacaktır. Ve böylece yeni bir senaryo / bilgi ile karşılaştığımda güncellemeye devam edeceğim.
Son satırı bulmanın güvenilir olmayan yolları
Son sırada güvenilir olmayan ve bu nedenle asla kullanılmaması gereken en yaygın yollardan bazıları.
- UsedRange
- xlDown
- COUNTA
UsedRangegerektiğini ASLA verilerine sahip son hücreyi bulmak için kullanılabilir. Son derece güvenilmez. Bu denemeyi deneyin.
Hücreye bir şey yazın A5. Şimdi son satırı aşağıda verilen yöntemlerden herhangi biriyle hesapladığınızda, size 5 değerini verecektir. Şimdi hücreyi A10kırmızı renklendirin . Şimdi aşağıdaki kodlardan herhangi birini kullanırsanız, yine de 5 Usedrange.Rows.Countelde edersiniz. 5 olmayacak.
İşte nasıl UsedRangeçalıştığını gösteren bir senaryo .

xlDown eşit derecede güvenilmezdir.
Bu kodu düşünün
lastrow = Range("A1").End(xlDown).Row
A1Verileri olan tek bir hücre ( ) olsaydı ne olurdu ? Sonunda çalışma sayfasındaki son satıra ulaşacaksınız! Hücreyi seçmek A1, sonra tuşuna Endbasmak ve sonra tuşuna Down Arrowbasmak gibidir. Bu, bir aralıkta boş hücreler varsa size güvenilir olmayan sonuçlar verir.
CountA aynı zamanda güvenilmezdir, çünkü arada boş hücreler varsa yanlış sonuç verir.
Ve dolayısıyla bir kullanmaktan kaçınmalıdır UsedRange, xlDownve CountAson hücreyi bulmak için.
Bir Sütundaki Son Satırı Bul
Col E'deki son Satırı bulmak için bunu kullanın
With Sheets("Sheet1")
LastRow = .Range("E" & .Rows.Count).End(xlUp).Row
End With
Daha .önce bir tane olduğunu fark ederseniz Rows.Count. Bunu sıklıkla görmezden gelmeyi tercih ettik. Alabileceğiniz olası hata hakkında BU soruya bakın . Ben her zaman .önce Rows.Countve kullanmanızı öneririz Columns.Count. Bu soru, Excel 2003 ve önceki sürümleri ile Excel 2007 ve sonraki sürümleri için Rows.Countdöndürdüğü 65536için kodun başarısız olacağı klasik bir senaryodur 1048576. Benzer şekilde sırasıyla ve değerini Columns.Countdöndürür .25616384
Yukarıdaki Excel 2007+ 1048576satırları olduğu gerçeği, satır değerini tutacak değişkeni her zaman bildirmemiz gerektiğine vurgu yapar, Longbunun yerine Integerbir Overflowhata alırsınız .
Bu yaklaşımın gizli satırları atlayacağını unutmayın. Yukarıdaki A sütununun ekran görüntüsüne baktığımda , 8. satır gizlenmişse, bu yaklaşım 5bunun yerine geri dönecektir 8.
Sayfadaki Son Satırı Bul
Sayfadaki Effectiveson satırı bulmak için bunu kullanın. Kullanımına dikkat edin Application.WorksheetFunction.CountA(.Cells). Bu gereklidir, çünkü çalışma sayfasında veri içeren hiçbir hücre .FindyoksaRun Time Error 91: Object Variable or With block variable not set
With Sheets("Sheet1")
If Application.WorksheetFunction.CountA(.Cells) <> 0 Then
lastrow = .Cells.Find(What:="*", _
After:=.Range("A1"), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
Else
lastrow = 1
End If
End With
Tablodaki Son Satırı Bul (ListObject)
Aynı ilkeler, örneğin bir tablonun üçüncü sütunundaki son satırı almak için geçerlidir:
Sub FindLastRowInExcelTableColAandB()
Dim lastRow As Long
Dim ws As Worksheet, tbl as ListObject
Set ws = Sheets("Sheet1") 'Modify as needed
'Assuming the name of the table is "Table1", modify as needed
Set tbl = ws.ListObjects("Table1")
With tbl.ListColumns(3).Range
lastrow = .Find(What:="*", _
After:=.Cells(1), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
End With
End Sub