EXCEL VBA'DA DELETE COLUMN [SÜTUN SİLME]

 

Veri işleme, bir veya birden fazla sütunu silmek de dahil olmak üzere Excel'de düzenli bir görevdir. Excel'de görevleri otomatikleştirdiğimizde, birkaç sütunu silebiliriz ve bunun ardındaki mantığı bilmek otomasyonun hayati bir parçasıdır. VBA Delete Column, belirli bir sütunu silmek ve verilerinden kurtulmaktır, böylece sağ taraftaki sütun silinen sütunun yerini alır. Örneğin, Excel'deki aşağıdaki verilere bakın.


VBA Sütun Silme Girişi.jpg

“C” sütununu silmemiz gerektiğini varsayalım; aşağıdaki kodu kullanabiliriz.

Sub Delete_Column_Intro()
Range(“C:C”).Delete
End Sub

Kodu çalıştırdığımızda, “C” sütununu silecektir. Görüldüğü gibi “C” sütununda veri yok, çünkü sütun silme yöntemini kullandığımızdan silinen sütundaki tüm veriler silindi.

VBA Sütun Silme Giriş - Çıktı

ÖNEMLİ NOKTALAR

  • Sütun silme, bir sütunun tamamını, içindeki veriler ve biçimlendirmeyle birlikte silmekten başka bir şey değildir.
  • Birden fazla sütunu aynı anda silebiliriz.
  • COLUMNS özelliğini kullanıyorsak sütun sütun numarayı silebiliriz. RANGE nesnesini kullanıyorsak, numara yerine sütun adını girmeliyiz.
  • VBA Delete Columns, mantıksal koşul kullanılarak boş sütunları silmek için kullanılabilir. Verilen aralıktaki herhangi bir hücre boşsa tüm sütunu silebilir.

Excel VBA'da Sütun Sil komutu ne işe yarar?

Adından da anlaşılacağı gibi, Delete Column belirli bir sütunu siler. Gerekli sütunun seçimi koşullara göre farklı olacaktır; bu nedenle bu makalede yaygın ve gerçek zamanlı örneklerden bazılarını dönüştüreceğiz.

Bir sütunu silmek için, silinecek sütunu aşağıdaki yöntemlerden birini kullanarak belirtmemiz gerekir.

  • SÜTUNLAR (Columns) özelliği.
  • ARALIK (Range) Nesnesi

Örneğin, VBA COLUMNS özelliğini kullanarak herhangi bir sütuna başvurmak için aşağıdaki yapıyı kullanabiliriz .

Columns(2).Delete (Bu, VBA'nın sütunları numaraya göre silmesidir)

VEYA

Columns(“B”).Delete

Sütuna referans vermek için RANGE nesnesini kullanabiliriz.

Range(“B:B”).Delete

  • Her iki yöntemde de gördüğümüz gibi, önce sütunlara başvurduk; ardından Delete metodunu kullanarak onları sildik.
  • Silinecek birden fazla sütun olması durumunda başlangıç ​​ve bitiş sütun adlarına başvurulması gerekmektedir.
  • Örneğin, B, C ve D sütunlarını silmek istiyorsak, sütuna aşağıdaki şekilde başvurabiliriz:
  • Range(“B:D”).Delete (Bu VBA Sil sütun aralığıdır)

Sütun "B" başlangıç ​​noktasıdır ve sütun "D" bitiş noktasıdır. Araya "C" dahildir.

VBA'da Sütun Nasıl Silinir?

Excel'de VBA Delete Column yöntemini uygulamak için adım adım bir yaklaşım gösterelim. Bu örnek için Excel'de aşağıdaki verileri kullanın.

VBA Sütun Sil - Örnek

Durum sütununu (D sütunu) silmemiz gerektiğini varsayalım, o zaman aşağıdaki adımları takip edebiliriz.

Adım 1: Makroya isim vererek alt prosedürü başlatın.

Örnek - Adım 1.jpg

Adım 2: Şimdi silinecek sütuna başvurmalıyız. Bu nedenle COLUMNS özelliğini veya RANGE nesnesini kullanın.

Örnek - Adım 2.jpg

Adım 3: “D” sütununu sildiğimiz için, bu sütuna çift tırnak içindeki sütun adını kullanarak başvurun.

VBA Sütun Sil - Örnek - Adım 3.jpg

Adım 4: İstenilen sütun girildikten sonra parantezi kapatın.

VBA Sütun Sil - Örnek - Adım 4.jpg

Adım 5: Şimdi, bu sütunun “Sil” yöntemini seçmeliyiz. “Sil” yöntemine erişmek için bir nokta girin.

Örnek - Adım 5.jpg

RANGE nesnesi yerine COLUMNS özelliğini kullanmanın sınırlamalarından biri, noktayı girdiğimizde IntelliSense listesini göremememizdir. Bu nedenle, sütunlara başvurmak için her zaman RANGE nesnesini kullanmanızı öneririz.

Adım 6: Noktayı girdikten sonra “Sil” metoduna girin.

Örnek - Adım 6.jpg

İşte bu kadar.

Kodu çalıştıralım, başvurulan sütun silinecektir.

VBA Sütun Sil - Örnek - Çıktı.jpg

Görüldüğü gibi durum sütunu siliniyor ve hemen sağındaki sütun silinen sütunun yerini alıyor.

Silinme gerçekleşmeden önce “E” sütununda bulunan “Maliyet” sütunu bir sütun sola kayarak “D” sütununun yerini alır.


Excel VBA Sütun Silme Yöntemi Örnekleri

Excel'de VBA Delete Column yöntemini uygulamak için bazı vaka çalışmalarını gösterelim. Aşağıda listelenen örnekleri takip edelim.

Örnek 1: Delete Yöntemini Kullanma

VBA Delete Column metodunu uygulamak için aşağıdaki verileri kullanacağız.

VBA Sütun Sil - Örnek 1

“D” sütununu silmemiz gerektiğini varsayalım. Aşağıdaki adımları kullanabiliriz.

Adım 1: İlk olarak, sütun adına başvurmalıyız. Bu nedenle, COLUMNS özelliğini veya RANGE nesnesini kullanmalıyız. IntelliSense listesi RANGE nesnesiyle birlikte mevcut olduğundan, sütuna başvurmak için RANGE nesnesini kullanalım.

VBA Sütun Sil - Örnek 1 - Adım 1.jpg

Adım 2: Tüm sütunu sildiğimiz için sütun adresini çift tırnak içine alıyoruz.

Örnek 1 - Adım 2.jpg

Adım 3: Sütun adresi verildikten sonra bir nokta girin, VBA RANGE nesnesiyle ilişkili özelliklerin ve yöntemlerin listesi gösterilecektir .

Örnek 1 - Adım 3.jpg

Adım 4: IntelliSense listesinden “Sil” yöntemini seçin.

Örnek 1 - Adım 4.jpg

Şimdi kodu çalıştıralım. "D" sütununu silmeli.

VBA Sütun Sil - Örnek 1 - Çıktı.jpg

Görüldüğü gibi “D” sütununda “Mar” verisi vardı, silindi ve hemen sağdaki sütuna, yani APR verisi sütununa eklendi.

Benzer şekilde sağ taraftan itibaren gelen tüm sütunlar bir sütun sola doğru hareket etti.

Örnek 2: Belirli Başlığa Sahip Sütunu Sil

Önceki örnekte, "D" sütununu sildik ve hemen sağdaki sütunlar onun yerini aldı. Ancak, kodu tekrar çalıştırmak geçerli "D" sütununu, yani "Apr" sütununu silecektir.

VBA Sütun Sil - Örnek 2

Bu sorunları önlemek için başlık tabanlı mantığı kullanabilir ve eğer başlık verilen isme uygunsa sütunu silebiliriz.

Örneğin, VBA Delete Column metodunu uygulamadan önce sahip olduğumuz orijinal verilere bakalım.

VBA Sütun Sil - Örnek 1

“D” sütununu silmeliyiz ve onun “D” başlığı “Mar”dır. “D” sütununun başlığının “Mar”a eşit olup olmadığını kontrol etmek için mantıksal bir koşul uygulayabiliriz; eğer eşitse, sütunu silebilir veya kullanıcı dostu bir mesaj gösterebiliriz.

Aşağıdaki kod, başlık adını kontrol etmek ve verilen başlık adıyla eşleşiyorsa sütunu silmek için kullanılabilir.

Sub Delete_Column_Ex2()
‘Define a variable to find store the header name
Dim Header_Name As String
‘Set the header name to the variable
Header_Name = “Mar”
‘Apply logical condition to check if the column “D” header value is “Mar”
‘If it matches then delete the column
If Range(“D1”).Value = Header_Name Then
Range(“D:D”).Delete
Else
MsgBox “The column ‘D’ header value is something different”
End If
End Sub



"D" sütununu silecek kodu çalıştıralım.

VBA Sütun Sil - Örnek 2 - Çıktı

“D” sütununun başlığı “Mar” olduğundan, “D” sütunu silindi. Kodu tekrar çalıştıralım ve ne olacağını görelim.

VBA Sütun Sil - Örnek 2 - msgbox.jpg

Sütunu silmek yerine, önce sütun başlığı adını kontrol eder. "D" sütununun başlık adı "Mar" olmadığından, VBA Delete Column yöntemini uygulamamıştır. Bunun yerine, "'D' sütununun başlık değeri farklı bir şey" mesajını gösterir.

Kodu daha esnek hale getirir ve gereksiz sütun silinmelerini önler.

Örnek 3: VBA Başlığa Dayalı Sütun Silme

Önceki iki kod, herhangi bir etkin çalışma sayfasından "D" sütununu silecektir. Ancak, bu kodu çalıştırırken, kodu yürütürken hangi çalışma sayfasında olduğumuzdan emin olmalıyız.

Örneğin, "Satışlar" çalışma sayfasındaki sütunu silmemiz gerektiğini varsayalım, o zaman "Satışlar" çalışma sayfasını seçebilir ve ardından VBA Delete Column yöntemini çalıştırabiliriz. Aşağıdaki koda bakın.

Sub Delete_Column_Ex3()
‘Define a variable to find store the header name
Dim Header_Name As String
‘Set the header name to the variable
Header_Name = “Mar”
‘Select the worksheet “Sales” before execute the VBA Delete Column code
Worksheets(“Sales”).Select
‘Apply logical condition to check if the column “D” header value is “Mar”
‘If it matches then delete the column
If Range(“D1”).Value = Header_Name Then
Range(“D:D”).Delete
Else
MsgBox “The column ‘D’ header value is something different”
End If
End Sub



Görüldüğü gibi sarı renkli çizgiler “Satışlar” çalışma sayfasını aktifleştirecek ve ardından VBA Sütun Sil kodunu çalıştıracaktır.

Örnek 4: Boş Sütunları Sil

Boş sütunlarla uğraşmak genellikle çok zordur. Bu nedenle bu boş sütunları silmek, farkında olmamız gereken veri işleme tekniklerinden biri olacaktır.

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

VBA Sütun Sil - Örnek 4.jpg

C, G ve I sütunlarında bazı boş sütunlarımız var.

Burada tüm boş sütunları silmek için dinamik kodu dinamik olarak kullanmalıyız. Aşağıdaki kod tüm boş sütunları dinamik olarak silecektir.

Sub Delete_Column_Ex4()
‘Define variable to find the last used column in first row
Dim LC As Long
‘Find the last used column in row #1
LC = Cells(1, Columns.Count).End(xlToLeft).Column
‘Define a variable to use for loop
Dim k As Long
‘Define a variable to get the entire column filled cells count
Dim Column_Count As Long
For k = 1 To LC
‘Find the column cells count
Column_Count = WorksheetFunction.CountA(Columns(k))
‘Check if the current looping column count is 0
‘If count is 0 then delete that entire column
If Column_Count = 0 Then
Cells(1, k).EntireColumn.Delete
‘Once the deletion of column happens one column eliminated
‘Hence we need to reset the last used column variable LC by 1
LC = LC – 1
‘At any given point of time if hte looping value is less than last used column then exit the loop
If LC < k Then Exit For
End If
Next k
End Sub


Bu kodu çalıştırın. Tüm boş sütunları silecektir.

VBA Sütun Sil - Örnek 4 - Çıktı.jpg

Örnek 5: Boş Hücre Sütunlarını Sil

Boş sütunları silmek bir yoldur ve boş hücre sütunlarıyla uğraşmak başka bir yoldur. Örneğin, Excel'deki aşağıdaki verilere bakın.

Örnek 5.jpg

Bazı sütunlarda boş hücreler var. Herhangi bir hücre boşsa tüm sütunu silmek gerekir.

Aşağıdaki kod her sütundaki boş hücreleri kontrol edecek ve eğer boş hücre varsa tüm sütunu silecektir.

Sub Delete_Column_Ex5()
‘Define a variable to find the last used row
Dim LR As Long
‘Find the last used row
LR = Cells(Rows.Count, 1).End(xlUp).Row
‘Define a variable to find the last used column
Dim LC As Long
‘Find the last used row
LC = Cells(1, Columns.Count).End(xlToLeft).Column
‘Define a varaible to set the dynamic range
Dim Rng As Range
‘Set the range using the last used row and last used column
Set Rng = Cells(1, 1).Resize(LR, LC)
‘Use the special cells method and choose the blank cells and insert dummy value “Hii”
Rng.SpecialCells(xlCellTypeBlanks).Value = “Hii”
‘Start the loop of each column
Dim k As Long
For k = 1 To LC
‘Define variable to count dummay value
Dim Dummy_Count As Long
Dummy_Count = WorksheetFunction.CountIf(Columns(k), “Hii”)
‘If the dummy value count in the looping column is greter than 1 then delete that column
If Dummy_Count > 0 Then
Cells(1, k).EntireColumn.Delete
LC = LC – 1
If LC < k Then Exit For
End If
Next k
End Sub

Bu kod her sütundaki boş hücreleri kontrol edecek ve "Hii" adı verilen bir kukla değer ekleyecektir. Bir kukla değer ekledikten sonra, FOR NEXT döngüsü her sütunu dolaşacak ve kukla değer sayısını kontrol edecektir.

IF mantıksal koşulu, kukla değer sayısını kontrol edecektir; sayım birden büyükse, o sütunun tamamını silecektir; aksi takdirde, bir sonraki sütuna geçecektir. Bu kodun sonucu aşağıdaki gibi olacaktır.

VBA Sütun Sil - Örnek 5 - Çıktı.jpg

Dikkat Edilmesi Gereken Önemli Noktalar

  • COLUMNS özelliği ile IntelliSense listesini görmüyoruz; dolayısıyla, özellikle VBA kodlamaya başlıyorsanız, alternatif olarak RANGE nesnesini kullanmanız önerilir .
  • Birden fazla sütundan birden fazla hücre seçildiğinde, seçili hücrelerin tüm sütunlarını silme işlemini gerçekleştiremeyiz; hata verir.
  • RANGE nesnesini kullanarak herhangi bir sütuna başvururken, çift tırnak içinde tam sütun adresini vermeliyiz.
  • Herhangi bir sütunu sildiğimizde, hemen sağındaki sütun silinen 'in yerini alacaktır. Bu nedenle, sütun silme kodunu ikinci kez çalıştırırken dikkatli olmalıyız.


1. Excel VBA'da birden fazla sütunu nasıl silebilirim?

Birden fazla sütunu tek seferde silmek için sütunların başlangıcını ve sonunu vermeliyiz. Örneğin, C, D, E ve F sütunlarını silmek istiyorsak, bu sütunların referanslarını aşağıdaki gibi uygulamalıyız.

Range(“C:F”).Delete

2. VBA'da bir sütunu adına göre nasıl silersiniz?

Bir sütunu isme göre silmek için satır #1'de başlık değerlerine sahip olmalıyız. Başlık değerini kontrol etmek için IF mantıksal koşulunu kullanabiliriz. Bu başlık değeri verilen değerle eşleşiyorsa, VBA Delete Column yöntemi mantığını uygulayabiliriz.

3. VBA'da bir sütundaki yinelenenleri nasıl silerim?

Bir sütundan yinelenenleri silmek için “Yinelenenleri Kaldır” yöntemini kullanmalıyız. VBA Sütunu Sil yöntemi tüm sütunu kendisi kaldıracaktır.

4. VBA'da hücre değerine göre sütunlar nasıl silinir?

Her hücrenin değerini kontrol etmek için FOR…NEXT döngüsüyle birlikte IF mantıksal koşulunu kullanabiliriz. Hücre değeri belirli bir değere eşitse Delete column yöntemini uygulayabiliriz.



Yorum Gönder

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