Satır silme

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
X

xlsx

Misafir
Arkadaşlar Selam40-50 bin satır data ile çalıştığım bir dosya var.Bu dosyada filtre yapıp belirli kelime gruplarını içeren satırlardan bana ait olmayanları filtrede seçip o satırdaki tüm verileri siliyorum.Ama bu işlemi sürekli yaptığım için koda ihtiyacım oldu
Filtreden seçmek yerine Sheet2'de yazdığım bana ait olmayan Malzeme adlarını görüp bunu sheet1e yerleştirdiğim ve 5.sütundaki filtrede arayıp bulsun ve o satırı komple silsin.Mümkün mü?
Yardımınızı rica ederim.
 

leumruk

Uzman
Uzman
Katılım
15 Nisan 2007
Mesajlar
3,471
Excel Vers. ve Dili
Office 2010 & 2013 tr
Selamlar,
Kod:
Sub Calıstır()
For b = 1 To [Sayfa2!F65536].End(3).Row
Set Bul = [a:a].Find(Sheets("Sayfa2").Cells(b, "F"), LookIn:=xlValues, LookAt:=xlWhole)
Bul.Delete
Next b
End Sub
Ekli örneği deneyiniz. Sayfa2 F sütunu silinmesini istediğiniz veriler.
 

Ekli dosyalar

X

xlsx

Misafir
Sn Leumruk benim dosyamda yaklaşık 10 sütun var ve komple tüm satırı silmesini istiyorum.Yani sağındaki ve solundaki tüm verileri silecek.
 
X

xlsx

Misafir
örnek dosya

örnek dosya ekte.Başlıklar tamammıyla örnektir.Data girişleri de.
Ama mantık olarak sheet2 A sütununa ben silinmesini istediğim verileri yazacağım.Sheet1de makroyu çalıştırdığımda da 5. ya da örneğin 7 satırdaki sheet2deki silinecek verileri bulup komple o satırı silecek.
 

Ekli dosyalar

leumruk

Uzman
Uzman
Katılım
15 Nisan 2007
Mesajlar
3,471
Excel Vers. ve Dili
Office 2010 & 2013 tr
2. sayfanızın adı kodda hata verdi bu nedenle veri olarak isimlendirdim. Dosya ekte.
 

Ekli dosyalar

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,747
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Alternatif olarak aşağıdaki kodu denermisiniz.

Kod:
Option Explicit
 
Sub KRİTERE_GÖRE_SATIR_SİL()
    Dim S1 As Worksheet, S2 As Worksheet
    Dim X As Long
    Set S1 = Sheets("HAM DATA")
    Set S2 = Sheets("SİLİNECEK LİSTE")
    
    Application.ScreenUpdating = False
    For X = 2 To S2.[A65536].End(3).Row
    S1.[A1].AutoFilter Field:=5, Criteria1:=S2.Cells(X, 1)
    If S1.[A65536].End(3).Row > 1 Then
    Range("A2:IV" & S1.[A65536].End(3).Row).Delete
    End If
    Next
    S1.[A1].AutoFilter Field:=5
    Application.ScreenUpdating = True
    Set S1 = Nothing
    Set S2 = Nothing
    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub
 
X

xlsx

Misafir
2. sayfanızın adı kodda hata verdi bu nedenle veri olarak isimlendirdim. Dosya ekte.
Sn leumruki, dosyaya uyarlanmış kodları denediğimde DEFTER verisi içeren sütuna bağlı satırları silmediğini gördüm(Bazı Defter verisini içerenler kalıyor)

Sn Korhan'ın kodlarını daha çalıştırmadan önce incelediğimde tam istediğim gibi olduğunu gördüm ve denediğimde de başarılıydı.Çok işime yarayacak bir kod olduğu için tşk ederim..Sizlerin yardımıyla yeni şeyler öğrenmek gerçekten bizler için bulunmaz fırsat.Tekrar tşk..
 
X

xlsx

Misafir
Sn Korhan
Kod'daki sayfalar için nothing kullanılmasının nedeni nedir bilgi alabilir miyim?Tşk

Set S1 = Nothing
Set S2 = Nothing
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,747
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Set komutu ile hafızaya alınan sayfa isimlerini daha sonra hazıfadan silmek için "Nothing" komutu kullanılır.
 
X

xlsx

Misafir
Tşk'ler kod konusunda çok yeni olduğum için yeni yeni öğrenmeye çalışıyorum.Umarım birgün sizler kadar olmasa da soran değil cevaplayan olabilirim
 
X

xlsx

Misafir
Merhaba,
Tam ters işlem için yani "Silinecek Liste" sayfasındaki bulunanan kelimeleri silmese de diğer kelimelerin bulunduğu satırları silse kodlarda değişiklik nasıl olmalıydı? Kullandığım yukarıdaki dosyada bu işlemi ters yapmak istedim.Yardımcı olacak arkadaşlara şimdiden tşk'ler.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,747
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Aşağıdaki kodu denermisiniz.

Kod:
Option Explicit
 
Sub KRİTERE_GÖRE_SATIR_SİL()
    Dim S1 As Worksheet, S2 As Worksheet
    Dim X As Long
    Set S1 = Sheets("HAM DATA")
    Set S2 = Sheets("SİLİNECEK LİSTE")
    
    Application.ScreenUpdating = False
    For X = S1.[E65536].End(3).Row To 2 Step -1
    If WorksheetFunction.CountIf(S2.[A:A], S1.Cells(X, 5)) = 0 Then
    S1.Rows(X).Delete
    End If
    Next
    Application.ScreenUpdating = True
    Set S1 = Nothing
    Set S2 = Nothing
    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub
 
X

xlsx

Misafir
Sn Korhan, tam istediğim oldu.Kodlarınızı sürekli inceliyorum ve yeni yeni şeyler öğreniyorum.Elinize sağlık
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst