Son kullanılan satırı ve sütunu bulmak, VBA kullanan herhangi bir excel otomasyonu için temel ve önemli görevlerden biridir. Sayfaları, çalışma kitaplarını derlemek ve verileri otomatik olarak düzenlemek için, sayfalardaki verilerin sınırını bulmanız gerekir.
Bu makale, excel'de son satırı ve sütunu bulmanın her yöntemini en kolay şekilde açıklayacaktır.
1. Range.End kullanarak bir Sütundaki Boş Olmayan Son Satırı Bulun
Önce kodu görelim. mektubunu açıklayacağım.
Sub getLastUsedRow() Last_row As Integer last_row = Cells(Rows.Count, 1).End(xlUp).Row 'Bu satır son satırı alır Debug.Print last_row End Sub
Yukarıdaki alt, sütun 1'deki son satırı bulur.
Nasıl çalışır?
Tıpkı sayfadaki son satıra gidip CTRL+UP kısayoluna basmak gibidir.
Hücreler(Satırlar.Sayı, 1): Bu kısım A sütunundaki hücreyi seçer. Rows.Count, genellikle excel sayfasındaki son satır olan 1048576'yı verir.
Hücreler(1048576, 1)
.Bitiş(xlUp): End, sayfalarda uçlara gitmek için kullanılan bir aralık sınıfı yöntemidir. xlUp yönü söyleyen değişkendir. Bu komut birlikte veri içeren son satırı seçer.
Cells(Rows.Count, 1).End(xlUp)
.Sıra : satır, seçili hücrenin satır numarasını döndürür. Bu nedenle, A sütunundaki verilerle son hücrenin satır numarasını alıyoruz. örnekte 8'dir.
Veri içeren son satırları bulmanın ne kadar kolay olduğunu görün. Bu yöntem, önündeki boş hücrelerden bağımsız olarak verilerdeki son satırı seçecektir. Görüntüde yalnızca A8 hücresinde veri olduğunu görebilirsiniz. A4 dışında önceki tüm hücreler boştur.
Bir sütunda veri içeren son hücreyi seçin
A sütunundaki son hücreyi seçmek istiyorsanız, sondan “.row”u kaldırın ve .select yazın.
Sub getLastUsedRow() Cells(Rows.Count, 1).End(xlUp).Select ‘Bu satır bir sütundaki son hücreyi seçer End Sub
“.Select” komutu aktif hücreyi seçer.
Son hücrenin adres sütununu al
A sütunundaki son hücrenin adresini almak istiyorsanız, sondan “.row”u kaldırın ve .address yazın.
Sub getLastUsedRow() add=Cells(Rows.Count, 1).End(xlUp).address 'Bu satır bir sütundaki son hücreyi seçer Debug.print add End Sub
Menzil.Adres işlev, aktif hücrenin adresini döndürür.
Bir Satırdaki Son Boş Olmayan Sütunu Bul
Bir sütunda boş olmayan son hücreyi bulmakla hemen hemen aynıdır. Burada 4. satırdaki verilerle son hücrenin sütun numarasını alıyoruz.
Sub getLastUsedCol() Dim last_col As Integer last_col = Cells(4,Columns.Count).End(xlToLeft).Column 'Bu satır son sütunu alır Debug.Print last_col End Sub
Resimde 4. satırdaki boş olmayan son hücrenin sütun numarasını döndürdüğünü görebilirsiniz. Bu da 4.
Nasıl çalışır?
Mekanik, bir sütundaki verilerle son hücreyi bulmakla aynıdır. Sadece sütunlarla ilgili anahtar kelimeler kullandık.
VBA Kullanarak Excel'de Veri Kümesini Seçin
Artık, VBA kullanarak excel'in son satırını ve son sütununu nasıl alacağımızı biliyoruz. Bunu kullanarak kolayca bir tablo veya veri seti seçebiliriz. Veri setini veya tabloyu seçtikten sonra bunlar üzerinde kopyala-yapıştır, biçimlendirme, silme gibi birçok işlem yapabiliriz.
Burada veri setimiz var. Bu veriler aşağı doğru genişleyebilir. Yalnızca B4 olan başlangıç hücresi sabittir. Son satır ve sütun sabit değil. Tüm tabloyu vba kullanarak dinamik olarak seçmemiz gerekiyor.
Boş hücreli tabloyu seçmek için VBA kodu
Sub select_table() Dim last_row, last_col As Long 'Son satırı al last_row = Cells(Rows.Count, 2).End(xlUp).Row 'Son sütunu al last_col = Cells(4, Columns.Count).End(xlToLeft) .Column 'Tablonun tamamını seçin Range(Cells(4, 2), Cells(last_row, last_col))).Select End Sub
Bunu çalıştırdığınızda, tüm tablo bir saniyenin kesri içinde seçilecektir. Yeni satırlar ve sütunlar ekleyebilirsiniz. Her zaman tüm verileri seçecektir.
Bu yöntemin faydaları:
- Bu kolay. Verileri içeren son satırı almak için kelimenin tam anlamıyla sadece bir satır yazdık. Bu kolaylaştırır.
- Hızlı. Daha az kod satırı, daha az zaman harcanır.
- Anlaması kolay.
- Sabit başlangıç noktalı beceriksiz veri tablonuz varsa mükemmel çalışır.
Range.End yönteminin eksileri:
- Başlangıç noktası bilinmelidir.
- Bilinen bir satır veya sütunda yalnızca boş olmayan son hücreyi alabilirsiniz. Başlangıç noktanız sabit olmadığında, faydasız olacaktır. Ki bu çok daha az olasıdır.
2. Find() İşlevini Kullanarak Son Satırı Bulun
Önce kodu görelim.
Sub last_row() lastRow = ActiveSheet.Cells.Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row Debug.Print lastRow End Sub
Resimde de görebileceğiniz gibi, bu kod son satırı doğru bir şekilde döndürüyor.
Nasıl çalışır?
Burada, joker operatör "*" kullanarak herhangi bir şey içeren herhangi bir hücreyi bulmak için find işlevini kullanıyoruz. Yıldız işareti herhangi bir şey, metin veya sayı bulmak için kullanılır.
Arama sırasını satırlara göre belirliyoruz (searchorder:=xlByRows). Ayrıca excel vba'ya aramanın yönünü xlPrevious (searchdirection:=xlPrevious) olarak söyleriz. Sayfanın sonundan satır bazında arama yapmak için bul işlevini yapar. Herhangi bir şey içeren bir hücre bulduğunda durur. Aktif hücreden son satırı almak için Range.Row yöntemini kullanıyoruz.
Veri içeren son hücreyi almak için Bul işlevinin faydaları:
- Başlangıç noktasını bilmenize gerek yok. Sadece son sırayı alır.
- Genel olabilir ve herhangi bir değişiklik yapmadan herhangi bir sayfada veri içeren son hücreyi bulmak için kullanılabilir.
- Sayfadaki belirli bir metin veya sayının son örneğini bulmak için kullanılabilir.
Bul() işlevinin eksileri:
- Bu çirkin. Çok fazla tartışma.
- Bu yavaş.
- Son boş olmayan sütunu almak için kullanılamaz. Teknik olarak, yapabilirsiniz. Ama çok yavaş oluyor.
3. Son Satırı Almak İçin SpecialCells İşlevini Kullanma
xlCellTypeLastCell bağımsız değişkenine sahip SpecialCells işlevi, son kullanılan hücreyi döndürür. Önce kodu görelim
Alt spl_last_row_() lastRow = ActiveSheet.Cells.ÖzelHücreler(xlCellTypeSonHücre).Row Debug.Print lastRow End Sub
Yukarıdaki kodu çalıştırırsanız, son kullanılan hücrenin satır numarasını alacaksınız.
Nasıl çalışır?
Bu, excel'deki CTRL+End kısayolunun vba eşdeğeridir. Son kullanılan hücreyi seçer. CTRL+End tuşlarına basarken makroyu kaydederseniz, bu kodu alacaksınız.
Sub Macro1() ' ' Macro1 Macro ' ' ActiveCell.SpecialCells(xlLastCell).Select End Sub
Sadece son kullanılan hücrenin satır numarasını almak için kullandık.
Not: Yukarıda söylediğim gibi, bu yöntem veri içeren son hücreyi değil, son kullanılan hücreyi döndürecektir. Son hücredeki verileri silerseniz, yukarıdaki vba kodu, “son kullanılan hücre” olduğu için yine aynı hücre referansını döndürür. Bu yöntemi kullanarak verileri içeren son hücreyi almak için önce belgeyi kaydetmeniz gerekir.
Microsoft Excel'de VBA kullanarak onay istemleri olmadan sayfaları silin
Microsoft Excel 2016'da VBA Kullanarak Yeni Çalışma Kitabı Ekleme ve Kaydetme
Excel VBA Durum Çubuğunda Bir Mesaj Görüntüle
Microsoft Excel 2016'da VBA Kullanarak Uyarı Mesajlarını Kapatın
Popüler Makaleler:
Excel'de DÜŞEYARA İşlevi
Excel 2016'da EĞERSAY
Excel'de SUMIF İşlevi Nasıl Kullanılır