EXCEL VBA'DA DELETE ROW[SATIR SİLME]

 

VBA'da, Satır Sil komutunu kullanarak satır(lar)ı silebiliriz. İşin püf noktası, tek bir satırı silmemiz gerekirse tek bir satır referansı vermemiz, ancak birden fazla sütun için birden fazla satır referansı vermemizdir. Excel'de çalışan herkes için satır ve sütun eklemek ve silmek günlük bir iştir. Excel'de bu görevi hızlıca yapmak için kısayol tuşlarını kullanırız, ancak raporların otomasyonunu geliştirdiğimizde süreçte bazı satırları ortadan kaldırmamız gerekebilir.


Bu nedenle, VBA makro kodlaması yazdığımızda, satırın silinmesini kodda uygulamak önemlidir. Bunun bir parçası olarak, alternatif satırları silmemiz ve/veya belirli koşullara göre vb.

Bu eğitimde VBA kodunu kullanarak satırların nasıl silineceğini öğreneceğiz .


ÖNEMLİ NOKTALAR

  • VBA Satır Sil kodunu kullanarak hücre değerine göre satırları silebiliriz.
  • Bir satırın tamamını silmek, ROW veya RANGE Nesnesinin Entire Row özelliğini kullanarak mümkündür .
  • Dolu boş satırları veya değerli hücreleri her N. satırda bir silebiliriz.
  • Benzer şekilde, VBA satır silme komutunu kullanarak tüm yinelenen satırları da silebiliriz.
  • Unutmayın, tek bir satırı silmek için tek satırlık referans, birden fazla satırı silmek için ise birden fazla satırlık referans vermeliyiz.

VBA'da Satır Nasıl Silinir ?

Excel VBA'da satırı silmek için önce satır numarasını belirtmemiz ve ardından tüm satır özelliğini seçip silme yöntemini seçmemiz gerekiyor.

Tüm satırı silmek için VBA kodu yazmak için aşağıdaki yöntemleri kullanın.

Adım 1: Excel kısayol tuşları ALT + F11'e basarak Visual Basic Düzenleyici penceresine gidin .

Adım 2: Makroyu Excel'de adlandırarak alt rutin prosedürünü başlatın .

VBA Satır Sil - Adım 2

Adım 3: ROW özelliğini yazın.

VBA Satır Sil - Adım 3

Adım 4: ROWS özelliği için çift tırnak işareti olmadan satır numarasını vermemiz gerekiyor. İstenilen satır numarasını aşağıdaki gibi sağlayın.

VBA Satır Sil - Adım 4

Adım 5: Verilen satır numarasıyla ne yapacağınıza karar vermek için noktayı girin. EntireRow özelliğini seçin .

VBA Satır Sil - Adım 5

Adım 6: EntireRow özelliğini seçtikten sonra metodu yani Delete metodunu seçmemiz gerekiyor .

VBA Satır Sil - Adım 6

1 numaralı satırda şu değer var.

VBA Satır Sil - Merhaba

Kodu çalıştıralım, 1 numaralı satırı silmesi lazım ve elimizde boş bir 1 numaralı satır olacak.

VBA Satır Sil - Çıktı

Görüldüğü gibi yazdığımız kod çalıştırıldığında 1 numaralı satır silindi.

Benzer şekilde aşağıdaki kodlar ilgili satır numaralarını silecektir.

Rows(4).EntireRow.Delete – Bu, 4 numaralı satırı siler.

Rows(8).EntireRow.Delete – Bu, 8 numaralı satırı siler.

Rows(20).EntireRow.Delete – Bu, 20 numaralı satırı siler.

Not: Satırların silinmesi


Örnekler

Örnek 1 – VBA Kullanarak Birden Fazla Satırı Silin

VBA kodunu kullanarak birden fazla satırı silebiliriz. Örneğin, bir Excel çalışma sayfasında aşağıdaki verilere sahibiz.

VBA Satır Sil - Örnek 1.jpg

Yukarıdaki verilerden 3 ve 4 numaralı satırları silmemiz gerekiyor çünkü boş satırlarımız var.

Bu iki satırı silmek için VBA kodunda ROWS özelliğini açın.

VBA Satır Sil - Örnek 1-ROWS özelliği

Çift tırnak işaretini açın ve aşağıdaki gibi gerekli satır numaralarını girin.

VBA Satır Sil - Örnek 1 - satır numaraları

Satır numaraları sağlandıktan sonra EntireRow özelliğini seçmemiz gerekiyor . Ancak ROWS özelliğiyle çalışırken, özellikleri ve yöntemleri seçmek için IntelliSense listesini görmeyeceğiz, bu da özellikle yeni öğrenenler için kodlamayı zorlaştırıyor.

IntelliSense listesini ele almanın alternatif yolunu göstereceğiz. Şimdilik, dot girin ve EntireRow özelliğini girin .

VBA Satır Sil - Örnek 1 - EntireRow


Şimdi bir nokta daha (.) ekleyip Delete metoduna giriyoruz .

VBA Satır Sil - Örnek 1 - Sil

Bu kodu çalıştırdığımızda 3 ve 4 numaralı satırlar silinecektir.

VBA Satır Sil - Örnek 1- Çıktı

3 ve 4 numaralı satırları sildiğimizde, sonraki tüm satırlar yukarı kayar ve 5. ve 6. satırlar sırasıyla 3. ve 4. satırlar olur.

Satırları silerken dikkat etmemiz gereken nokta burasıdır.

IntelliSense Listesiyle Başa Çıkma

ROW özelliğini kullandığımızda, kod yazmamızda bize yardımcı olacak bir IntelliSense listesi alamıyorduk, bu yüzden ne kod yazdığımızdan kesinlikle emin olmamız gerekiyordu.

Ancak IntelliSense listesinin yardımını alabilmek için VBA Range nesnesini kullanmamız gerekiyor .

VBA kodlamasında Aralık nesnesini açın.

VBA Satır Sil - Örnek 1- IntelliSense Listesi

A3:A4 hücre adreslerini çift tırnak içine alın.

VBA Satır Sil - Örnek 1- Aralık

Hücre adreslerini girdikten sonra nokta (.) işaretini koyup tüm satırı yazmaya başlayın.

VBA Satır Sil - Örnek 1- IntelliSense List-entirerow

Gördüğümüz gibi, IntelliSense listesinin bizim için seçenekleri gösterdiğini görebiliriz. IntelliSense listesinden EntireRow özelliğini seçin.

VBA Satır Sil - Örnek 1- wholerow özelliği

Silme yöntemini seçmek için bir nokta daha girin.

VBA Satır Sil - Örnek 1 - silme yöntemi

Burada da IntelliSense listesini görebiliyoruz.

Silme metodunu seçtikten sonra aşağıdaki koda sahip olacağız.

Sub Delete_Multiple_Rows()

Satırlar(“3:4”).EntireRow.Delete

End Sub

Bu işlem 3 ve 4 numaralı satırları da silecektir.

Örnek 2 – Herhangi Bir Hücre Boşsa Satırı Silme

Yukarıdaki örnekte, yalnızca tüm satır boşsa satırların silindiğini gördük. Ancak, aşağıdaki verilere bir göz atın.

Örnek 3

Tamamen boş bir satırın yanı sıra, 6. ve 10. satırlarda da boş hücrelerimiz var. Bir satırı silmek için, hücrelerden herhangi biri boşsa, farklı bir VBA satır silme tekniği gerekir.

Sub Delete_Rows_Cells_Empty()

   Dim HeaderCount As Integer

   Dim RowCount As Integer

   Dim K As Integer

   Dim LR As Integer

   Dim Rng As Range

   Dim RowNum As Integer

   LR = Cells(Rows.Count, 1).End(xlUp).Row

   HeaderCount = WorksheetFunction.CountA(Range(“B1:F1”))

   For K = 2 To LR

        RowCount = WorksheetFunction.CountA(Range(“B” & K & “:F” & K))

        If RowCount < HeaderCount Then

        Cells(K, 1).EntireRow.Delete

        LR = Cells(Rows.Count, 1).End(xlUp).Row

        K = K – 1

        If K = LR Then Exit For

        End If

   Next K

End Sub

Aşağıdaki kod hücre sayısını ve başlık sayısını test edecektir. Hücre sayısı başlık sayısıyla uyuşmuyorsa, bu satırları silmemiz gerekir.

Yukarıdaki kod, B'den F'ye kadar olan sütunlardaki başlık hücrelerinin sayısını kontrol edecek ve her satırda döngüye girecek ve döngü hücre satırının sayısını bulacaktır. Herhangi bir boş hücre gelirse, sayı daha az olacaktır, böylece hücrenin tüm satırı silinecektir.

Örnek 3 – Tüm Satır Boşsa Bir Satırı Silme

Veri aralığındaki boş satırları silmek yaygın görevlerden biridir. Örneğin, Excel'deki aşağıdaki verilere bakın.

VBA Satır Sil - Örnek 2

Veri tablosunda boş satırlar var ve bu satırları VBA koduyla silmemiz gerekiyor. Aşağıda açıklanan adımları izleyin.

Adım 1: Makroya isim vererek alt programı başlatın.

VBA Satır Sil - Örnek 2 - Adım 1

Adım 2: RANGE nesnesini girin ve A1:F12'den itibaren tam veri aralığını sağlayın.

VBA Satır Sil - Örnek 2 - Adım 2

Adım 3: Burada, hangi satırların gerçekten boş olduğundan emin olmadığımız için hiçbir satırı hedeflemiyoruz. Bu nedenle, bunu yapmak için Özel Hücre yöntemini seçmemiz gerekiyor.

Örnek 2 - Adım 3

Adım 4: Özel hücreler yöntemini seçtikten sonra parantezi açalım ve özel hücrelerin çeşitli özelliklerini görelim.

Örnek 2 - Adım 4

Adım 5: Çeşitli hücre tiplerinden xlCellTypeBlanks öğesini seçin .

Örnek 2 - Adım 5

Adım 6: Bir nokta daha girin ve silme yöntemini seçin.

VBA Satır Sil - Örnek 2 - Adım 6

Tamamlanmış kod aşağıdaki kutudadır.

Sub Delete_Empty_Rows()

   Range(“A1:F12”).SpecialCells(xlCellTypeBlanks).Delete 

End Sub

Yukarıdaki kodu çalıştırdığımızda, A1:F12 aralığındaki tüm boş satırlar silinecek ve aşağıdaki veri tablosu elde edilecektir.

VBA Satır Sil - Örnek 2-çıktı

Örnek 4 – Her N'inci Satırı Silme

Her N'inci satırı silmek için aşağıdaki verilere bakın.

Örnek 4

Yukarıdaki verilerde her tek satırın yanında boş bir satır var, dolayısıyla aşağıdaki kodu kullanarak tüm tek satırları silebiliriz.

Sub Delete_Every_Nth_Rows()

   Dim K As Integer

   Dim LR As Integer

   Dim Rng As Range

   LR = Cells(Rows.Count, 1).End(xlUp).Row + 1

   For K = LR To 2 Step -2

        If K Mod 2 <> 0 Then

        Cells(K, 1).EntireRow.Delete

        End If

   Next K

End Sub

Bu, tüm tek satırları silecek ve aşağıdaki temizlenmiş veri tablosunu verecektir.

Örnek 4- Çıktı

Örnek 5 – Hücre Değerine Göre Satır Silme

Hücre değerine göre satırları silmek, veri analizinde temel görevlerden biridir. Örneğin, Excel'deki aşağıdaki verilere bakın.

Örnek 5

Uçuş adı ve varış durumu Evet veya Hayır olarak bizde mevcut.

"Hayır" durumuna sahip tüm satırları silmemiz gerekiyor. Aşağıdaki kod "Hayır" değerine sahip tüm satırları silecektir.

Sub Delete_Rows_With_Specific_Value()

Dim K As Integer
Dim LR As Integer

LR = Cells(Rows.Count, 1).End(xlUp).Row

For K = LR To 2 Step -1
If Cells(K, 2).Value = “No” Then
Cells(K, 2).EntireRow.Delete
End If
Next K

End Sub

Yukarıdaki kod, veri aralığındaki tüm hücrelerde döngüye girecek ve durum sütunundaki değeri kontrol edecektir. Durum sütunu "Hayır" ise, o satırı silecektir.

Örnek 6 – Yinelenen Satırları Silme

Yinelenen satırları silmek günlük bir gerekliliktir. Örneğin, Excel'deki aşağıdaki verilere bakın.

Örnek 6

Aşağıdaki kodu kullanarak yinelenen satırlardan kurtulabiliriz.

Sub Delete_Duplicate_Rows()

Dim Rng As Range

Set Rng = Range(“A1:B8”)

Rng.RemoveDuplicates Columns:=Array(1, 2), Header:=xlYes

End Sub

Yukarıdaki kod tüm yinelenen satırları kaldıracaktır.

Örnek 7 – Herhangi Bir Dize İçeren Satırları Silme

Bu en kolay yöntemdir çünkü burada herhangi bir mantık veya kriteri test etmiyoruz, sadece herhangi bir dizeye sahip satırı silmek istiyoruz.

VBA CELLS Özelliğini veya RANGE nesnesini kullanarak silmek istediğimiz satırları belirtmemiz yeterli .

Örneğin 1'den 10'a kadar olan satırları silmek istiyorsak satırları aşağıdaki gibi belirtmemiz gerekiyor.

Aralık(“A:A10”).TümSatır.Sil

Bu, 1'den 10'a kadar olan tüm satırları silecektir.

Örnek 8 – Tarihlere Göre Satır Silme

Tarihli verilerle çalıştığımızda, tarih değerine göre satırları silmemiz gerekebilir. Örneğin, Excel'de aşağıdaki verilere sahibiz.

Örnek 7

Her poliçe için poliçe numarası ve vade tarihimiz var. Vade tarihi BUGÜN'den azsa, vade tarihine göre satırları silmemiz gerekir, o zaman o satırı silmemiz gerekir.

Aşağıdaki kod referans amaçlıdır.

Sub Delete_Rows_Date()

Dim K As Integer
Dim LR As Integer

LR = Cells(Rows.Count, 1).End(xlUp).Row

For K = LR To 2 Step -1
If Cells(K, 2).Value < Now() Then
Cells(K, 2).EntireRow.Delete
End If
Next K

End Sub

Yukarıdaki kod tüm veri hücrelerinde döngüye girecek ve tarih değeri BUGÜN tarihinden küçük olan satırları silecektir.

Dikkat Edilmesi Gereken Önemli Noktalar

  • Excel'de VBA Satır Sil komutunu kullanarak tek bir satırı veya satırları silebiliriz.
  • ROWS özelliği ile IntelliSense listesine erişim sağlayamayacağız.
  • Satırları silerken birden fazla değişken kullanma zahmetini azaltacaktır.
  • VBA Satırları Sil'de Adım -1, her döngü çalıştıktan sonra döngünün otomatik olarak -1'e düşmesi anlamına gelir.
  • Küçük bir boşluk karakteri bile hücreyi boş veya boş yapmaz.
  • Tek bir hücreye başvurduğumuzda silme işleminin tüm satır için geçerli olması için tüm satır özelliğini seçmemiz gerekir.

1. VBA'da filtrelenmiş satırlar nasıl silinir?

Filtre uygulandığında satırları silmek için, özel hücreler yöntemini kullanmamız ve bu yöntemden xlCellTypeVisible'ı
kullanmamız gerekir. Örneğin, filtre uygulandığında A1:F10 aralığındaki satırları silmek için aşağıdaki kod yalnızca görünür satırları silecektir.
Range(“A1:F10”).SpecialCells(xlCellTypeVisible).Delete

2. Excel VBA'da kriterlere göre bir satırı nasıl silerim?

Örneğin Excel'deki aşağıdaki verilere bakalım.

SSS 2

Eğer “Old” değerine sahip satırları silmek istiyorsak aşağıdaki kodu kullanabiliriz.

SSS 2-kod

3. Excel VBA'da belirli bir metin içeren bir satırı nasıl silerim?

Bir hücredeki belirli bir metni içeren satırı silmek istiyorsanız, aşağıdaki kodu kullanabiliriz. Aşağıdaki kod, "Hayır" olan her yerdeki satırları silecektir.

SSS 3

Yorum Gönder

DT KARİYER KPSS Dünyasına Hoş Geldiniz
Sevgili dostum nasıl yardımcı olabilirim?
Bu alana yazınız...