Excel'de belirli içeriğe sahip satırları silmek için VBA nasıl kullanılır?

Microsoft Excel'de tek bir değere dayalı kayıtları silmeniz gerektiğinde, bu Visual Basic prosedürünü kullanın. Hayatınızı çok daha kolaylaştırabilir.

<a href="https://www.techrepublic.com/a/hub/i/r/2020/08/27/b55e655f-fa9e-4594-904c-1d0e59b07c17/resize/770x/34217b516ce0eec6e9c99e0621b4e712/istock-1178234453.jpg " target="_blank" data-component="modalEnlargeImage" data-headline="

" data-credit="Resim: İmam Fathoni, Getty Images/iStockPhoto">

Resim: İmam Fathoni, Getty Images/iStockPhoto

Makale Bir Excel sayfasına birden çok sütun eklemek için VBA nasıl kullanılır? birden çok sütun (ve satır) ekleyen bir VBA prosedürünü gözden geçirir. Çok kolay ve bu makaledeki bu VBA prosedürü benzer, ancak daha karmaşık. Bu makalede, o aralıktaki bir değerin sizin tarafınızdan sağlanan bir giriş değeriyle eşleştiği seçili bir aralıktaki satırları silen bir VBA prosedürünü inceleyeceğiz. Prosedürdeki satır sayısı biraz fazla görünüyor, ancak belgeleme amacıyla birkaç yorum satırı içeriyor.

GÖRMEK: Her kullanıcının ustalaşması gereken 83 Excel ipucu (Teknoloji Cumhuriyeti)

kullanıyorum Microsoft 365 üzerinde Windows 10 64 bit sistem, ancak önceki sürümleri kullanabilirsiniz. Kullan kodu almak için indirilebilir .xlsm, .xls veya .cls dosyaları. Excel Online, makroları desteklemez. Bu makale, temel Excel becerilerine sahip olduğunuzu varsaymaktadır; bununla birlikte, yeni başlayanlar bile başarıya giden talimatları izleyebilmelidir.

VBA prosedürü hakkında

içinde prosedürü değiştirebilirsiniz. Liste A biraz, ama olduğu gibi, görevi konusunda özellikle esnek değil. Yordamı çalıştırmadan önce tek sütunlu bir aralık seçmelisiniz. İlk birkaç satır birkaç değişkeni bildirir ve tanımlar, önceden seçilen aralığın birden fazla hücre olup olmadığını ve birden fazla sütun olmadığını kontrol edin. Seçim bu kontrolleri geçtiğinde, kod, seçili aralıktaki değerlerle eşleştirmek istediğiniz dizeyi girmenizi ister. Bu deyim için veri türü hatası işleme yok; herhangi bir girişi kabul eder ve onu bir String veri türü olarak değerlendirir. For-döngüsü daha sonra giriş değeri için seçilen aralıkta geçiş yapar. Değer ve giriş değeri eşleştiğinde, kod tüm satırı siler. Eşleşen değer yoksa, son If ifadesi bir bilgi mesajı döndürür (bu, giriş değeriniz seçilen aralıktaki herhangi bir değerle eşleşmediğinde gerçekleşir).

Liste A

Alt DeleteRows()
'Aralığı seçip ölçütleri girerek satırları silin.
'Aralık tek bir sütun olmalıdır. Nasıl yakalanır ve uygulanır?
Dim i Tamsayı Olarak
Dim j Tamsayı Olarak
Aralık olarak Dim selRange
Dim crit As String 'Dize değilse Tamsayı veya Değişken kullanın.

selRange = Seçimi ayarla

'Tek hücreli seçimi yakalar
selRange.Rows.Count = 1 ise
MsgBox "Yalnızca bir hücre seçtiniz." _
& "Lütfen birden çok bitişik satır seçin" _
& "tek bir sütun içinde.", vbOKOnly
Alt Çıkış
Bitir

'Çok sütunlu seçimi yakalar
selRange.Columns.Count > 1 ise
MsgBox "Birden çok sütun seçtiniz." _
& "Lütfen tek sütunlu bir aralık seçin.", _
vbOKOnly
Alt Çıkış
Bitir

'Tüm girdiler, niyetten bağımsız olarak bir dize olarak ele alınacaktır.
crit = InputBox("Lütfen kriterleri bir dize olarak girin.", _
"Kriterlere göre sil.")

'selRange'daki satırlar arasında geçiş yapın ve kritik olduğunda tüm satırı silin
'mevcut değere eşittir.
j = 0
i = selRange.Rows.Count için 1 Adım -1 için
Eğer kritik = selRange.Cells(i, 1).Value O zaman
selRange.Cells(i, 1).EntireRow.Delete
j = j + 1
Bitir
sonraki ben

'MsgBox "" & j & " satırlarını sildiniz.", vbOKOnly

'Eşleşme olmadığı için hiçbir satırın silinmediğine dair bir mesaj döndürür.
j = 0 ise
MsgBox "Lütfen tekrar deneyin ve giriş değerinizi dikkatlice kontrol edin." _
& "Yordam, bulamadığı için hiçbir satırı silmedi" _
& "" & crit & " ile eşleşen tüm değerler.", _
vbOKOnly
Bitir

Alt Bitiş

Şerit sürümü kullanıyorsanız, çalışma kitabını makro etkin bir dosya olarak kaydettiğinizden emin olun, aksi takdirde prosedür çalışmaz. Bir menü sürümü kullanıyorsanız bu adımı atlayabilirsiniz.

Prosedüre girmek için Alt + F11 tuşlarına basarak Visual Basic Düzenleyicisini (VBE) açın. Soldaki Proje Gezgini'nde, prosedürü herhangi bir sayfada çalıştırabilmeniz için ThisWorkbook'u seçin. Kodu manuel olarak girebilir veya indirilebilir .cls dosyasını içe aktarabilirsiniz. Ayrıca makro indirilebilir .xlsx ve .xls dosyalarındadır. Kodu manuel olarak girerseniz, bu web sayfasından yapıştırmayın. Bunun yerine, kodu bir metin düzenleyiciye kopyalayın ve ardından bu kodu ThisWorkbook modülüne yapıştırın. Bunu yapmak, aksi takdirde hatalara neden olabilecek tüm hayali web karakterlerini kaldıracaktır.

VBA prosedürü nasıl kullanılır

Prosedürü VBE aracılığıyla Excel çalışma kitabı dosyanıza ekledikten sonra, çalışma kitabınızdaki herhangi bir sayfada herhangi bir veri aralığında çalıştırabilirsiniz. Bunu, aşağıdaki basit veri setindeki tüm içecek kayıtlarını (E sütunu) silmek için kullanalım. Şekil A. İlk olarak, satırları sildiğiniz veri aralığını seçin; bizim durumumuzda bu, tanıtım çalışma kitabında E3:E47'dir. Ardından, aşağıdaki gibi devam edin:

  1. Geliştiriciler sekmesini tıklayın.
  2. Kod grubunda Makrolar'a tıklayın.
  3. Ortaya çıkan iletişim kutusunda, içinde gösterilen DeleteRows() öğesini seçin. Şekil B ve Çalıştır'ı tıklayın. (Tanıtım dosyası, girişte belirtilen makaledeki diğer prosedürleri içerir.)
  4. İstendiğinde, girin İçecekler, da gösterildiği gibi Şekil Cve Tamam'ı tıklayın.

Şekil A

<a href="https://www.techrepublic.com/a/hub/i/2021/06/19/94a12e3b-bf8b-451c-9023-2a4c39db76e8/excelvbadeleterow-a.jpg" target="_blank" veri- component="modalEnlargeImage" data-headline="

&nbsp; Sayfadaki herhangi bir sütundan eşleşen değerleri silmek için VBA kullanacağız.

" data-credit="http://www.techrepublic.com/">excelvbadeleterow-a.jpg" data-original="https://www.techrepublic.com/a/hub/i/2021/06/19/94a12e3b-bf8b-451c-9023-2a4c39db76e8/excelvbadeleterow-a.jpg

Sayfadaki herhangi bir sütundan eşleşen değerleri silmek için VBA kullanacağız.

Şekil B

<a href="https://www.techrepublic.com/a/hub/i/2021/06/19/8bf6f087-52ee-4660-a85c-6a74b98ff816/excelvbadeleterow-b.jpg" target="_blank" veri- component="modalEnlargeImage" data-headline="

&nbsp; VBA yordamını DeleteRows() seçin.

" data-credit="http://www.techrepublic.com/">excelvbadeleterow-b.jpg" data-original="https://www.techrepublic.com/a/hub/i/2021/06/19/8bf6f087-52ee-4660-a85c-6a74b98ff816/excelvbadeleterow-b.jpg

VBA yordamını DeleteRows() seçin.

Şekil C

<a href="https://www.techrepublic.com/a/hub/i/2021/06/19/b94d43d0-01e9-4919-859e-7f60a7310fe7/excelvbadeleterow-c.jpg" target="_blank" veri- component="modalEnlargeImage" data-headline="

&nbsp; Kategori değeri İçecekler'i girin.

" data-credit="http://www.techrepublic.com/">excelvbadeleterow-c.jpg" data-original="https://www.techrepublic.com/a/hub/i/2021/06/19/b94d43d0-01e9-4919-859e-7f60a7310fe7/excelvbadeleterow-c.jpg

Kategori değeri İçecekler'i girin.

Bu kadar! içinde görebileceğiniz gibi Şekil D, içecek kayıtları (satırlar) gitti. Aslında ilk rekor gitti ve bir içecek rekoruydu. Daha fazla silinmiş satır bulmak için soldaki kimlik sütununu kontrol edin. Ardışık değerlerin bir listesiydi. Eksik değerleri bulmak kolaydır ve bu eksik değerler silinen içecek kayıtlarını temsil eder.

Şekil D

<a href="https://www.techrepublic.com/a/hub/i/2021/06/19/7a978232-34e6-41fc-96c7-4daa9cfbacd7/excelvbadeleterow-d.jpg" target="_blank" veri- component="modalEnlargeImage" data-headline="

&nbsp; Prosedür eşleşen kayıtları kaldırdı.

" data-credit="http://www.techrepublic.com/">excelvbadeleterow-d.jpg" data-original="https://www.techrepublic.com/a/hub/i/2021/06/19/7a978232-34e6-41fc-96c7-4daa9cfbacd7/excelvbadeleterow-d.jpg

Prosedür eşleşen kayıtları kaldırdı.

Özetle, basit veri setinde kategori değerlerini seçtiniz. Ardından makro sizden eşleşmesi için bir kategori değeri istedi ve siz İçecekler girdiniz. For döngüsü bir eşleşme bulduğunda tüm kaydı sildi. Sonuç, veri setinizin artık herhangi bir içecek kaydı içermemesidir.

Düşünülmesi gereken şeyler

Göremediğiniz ekran dışında saklanan değerler olabilir. Bu prosedür, görmediğiniz verileri içeren tüm satırı siler. Bu makroyu çalıştırmadan önce, seçili sütunun solunda veya sağında silinmesini istemediğiniz hiçbir veri bulunmadığından emin olun. Alt + Z tuşlarını kullanarak silme işlemini geri alamazsınız. Herhangi bir sorunuz varsa, çalışma kitabını her zaman verileri silmeden hemen önce kaydedin. Bu şekilde gerekirse geri dönebilirsiniz. Gelecekteki bir makalede, kullanıcılardan bir aralık seçmelerini istemek için InputBox() ifadesinin nasıl kullanılacağını göstereceğim; bu şekilde prosedürü uygulamadan önce aralığı seçmeyi hatırlamaları gerekmez.

Bazı kategori girişleri biraz endişelidir, bu da istendiğinde bir kategoriye girdiğinizde yazım hatası yapma olasılığını artırır. Değeri önceden Pano'ya kopyalayabilir ve ardından istendiğinde bu değeri giriş kutusuna yapıştırabilirsiniz. Bu olasılığı önlemek için bir kategori değerleri listesi sunabilirsiniz, ancak bunu yapmak bu basit prosedürün kapsamı dışındadır.

GÖRMEK: Windows 10: Konuşma tanıma ve dikte için sesli komutların listesi (ücretsiz PDF) (Teknoloji Cumhuriyeti)

Var olmayan bir yazım hatası veya kategori değeri girerseniz endişelenmeyin. For döngüsü, J sayacıyla silinen satırları izler. Bu sayı sıfıra eşitse, prosedür, hiçbir satırı silmediğini ve (muhtemelen) nedenini bilmenizi sağlayan bir bilgi mesajı görüntüler. Silinen satır sayısını ne olursa olsun görüntülemek istiyorsanız, bunu bir mesaj kutusu ifadesi ekleyerek yapabilirsiniz. Gösteri dosyasında bu ifade zaten var, ancak yorumlandı. Yorum karakterini (') kaldırmanız yeterlidir.

Açık olmayabilir, ancak prosedür, herhangi bir sayfadaki herhangi bir sütundan değerleri silmenize izin verir, bu nedenle bu açıdan çok yönlüdür. Herhangi bir veri sütununu seçin ve eşleştirmek istediğiniz değeri girin. Kriterleri belirlemek için Kategori sütunuyla çalıştık, ancak prosedürü herhangi bir sütunla kullanabilirsiniz.

Daha fazla silme örneğiyle çalışmak istiyorsanız, gösteri dosyasındaki Veri adlı sayfa, veri kümesinin tamamını içerir. Prosedürün silme işlemini geri alamayacağınız için, her bir örneği çalıştırmak için tüm veri setini kopyalayıp yapıştırabilirsiniz.

Prosedürü her çalıştırmak istediğinizde tüm bu adımların üzerinden geçmek istemeniz pek olası değildir. Bunun yerine makroyu Hızlı Erişim Araç Çubuğuna ekleyin. Bunu yapmak için okuyun Hızlı erişim için QAT araç çubuğuna Office makroları nasıl eklenir.

Ayrıca bkz.

Source link

İlk yorum yapan olun

Bir yanıt bırakın

E-posta hesabınız yayımlanmayacak.


*