Soru Birden fazla değeri aratıp aynı anda silmek

ruhadam26

Altın Üye
Katılım
4 Aralık 2017
Mesajlar
116
Excel Vers. ve Dili
2010-2016 türkçe
Altın Üyelik Bitiş Tarihi
20-12-2025
Merhabalar,
Bir çalışma yapıyorum. Manuel olarak tek tek comboboxa yazarak silme işlemi gerçekleştiriyorum. Sileceğim değerler arttıkça bu işlem zaman kaybı alıyor. İstiyorum ki sileceğim değerleri bir yere(listbox ya da buna benzer bir yer formda yok eklenebilir) kopyalayayım. Tek bir tuşla toplu olarak hepsinin silinmesi.Silinecek değer çalışma kitabının 10 farklı sayfasında taranarak her sayfanın B sutununda bulunan değerle aynı ise o değerlerin bulunduğu satırları silip sayfada boşluk kalmayacak şekilde silme işlemi gerçekleşiyor. Şimdiden yardımlarınız için teşekkür ederim. Örnek dosya ektedir.
 

Ekli dosyalar

ruhadam26

Altın Üye
Katılım
4 Aralık 2017
Mesajlar
116
Excel Vers. ve Dili
2010-2016 türkçe
Altın Üyelik Bitiş Tarihi
20-12-2025
Örneğin 100 adet aratacağım bir numara var. Bu numaralar Çalışma Kitabımdaki sayfalarda (7 sayfada dağıtılmış şekilde).Bu numaraların aratılıp her sayfadan toplu şekilde silmesini sağlayan bir makroya ihtiyacım var. Örnek Dosya bir önceki mesajda mevcut. Silinecek dosyaları form üzerinden bir combobox tarzı bir yere girerek elde edersek harika olur. Bu işte yeni olduğumdan anlattığım şeyi yapamadım. Yardımlarınızı bekliyorum.
 
Son düzenleme:

ruhadam26

Altın Üye
Katılım
4 Aralık 2017
Mesajlar
116
Excel Vers. ve Dili
2010-2016 türkçe
Altın Üyelik Bitiş Tarihi
20-12-2025
Konu hakkında fikri olan arkadaşları sahneye davet ediyorum
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,294
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,

Kodları siz yazdıysanız bu işe yapmanız zor değil.
Silinecek verilerinizi bir sayfa açıp oraya tek tek yazarsınız.
Bu verileri baştan sona okutarak tüm sayfalarda silme işleminizi yaparsınız. Silme kodlarınız zaten formun içinde var.

Kolay gelsin.
 

ruhadam26

Altın Üye
Katılım
4 Aralık 2017
Mesajlar
116
Excel Vers. ve Dili
2010-2016 türkçe
Altın Üyelik Bitiş Tarihi
20-12-2025
Merhaba,

Kodları siz yazdıysanız bu işe yapmanız zor değil.
Silinecek verilerinizi bir sayfa açıp oraya tek tek yazarsınız.
Bu verileri baştan sona okutarak tüm sayfalarda silme işleminizi yaparsınız. Silme kodlarınız zaten formun içinde var.

Kolay gelsin.
Kodları öğrene öğrene sora sora yazmaya çalıştım lakin dediğiniz algoritmayı kafamda kurdum ama koda dökemediğim için sorma ihtiyacı hissettim. Başka bir sayfaya yazma ya da formun içerisinde bir yere yazıp silmeye çalışıyorum
 

ruhadam26

Altın Üye
Katılım
4 Aralık 2017
Mesajlar
116
Excel Vers. ve Dili
2010-2016 türkçe
Altın Üyelik Bitiş Tarihi
20-12-2025
Örneğin 100 adet aratacağım bir numara var. Bu numaralar Çalışma Kitabımdaki sayfalarda (7 sayfada dağıtılmış şekilde).Bu numaraların aratılıp her sayfadan toplu şekilde silmesini sağlayan bir makroya ihtiyacım var. Örnek Dosya bir önceki mesajda mevcut. Silinecek dosyaları form üzerinden bir combobox tarzı bir yere girerek elde edersek harika olur. Bu işte yeni olduğumdan anlattığım şeyi yapamadım. Yardımlarınızı bekliyorum. ..
 

ruhadam26

Altın Üye
Katılım
4 Aralık 2017
Mesajlar
116
Excel Vers. ve Dili
2010-2016 türkçe
Altın Üyelik Bitiş Tarihi
20-12-2025
Hala çözüm bulamadım
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,294
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,

Tam olarak denemedim, ama kodları denerken dosyanızı yedeklemeyi unutmayın.

Silinecekler adı altında bir sayfa olmalı, bunun adını kendinize göre düzenleyin. Bu sayfanın A2 sütunundan itibaren silinecek verileri girin. (A1' başlık olduğu varsayımına göre)

VeriSil makrosunu çalıştırmalısınız. Bu makro Silinecek sayfasındaki verileri okur ve kodda belirtilen sayfalarda arama yaparak K sütununa 1 değeri atar.

İkinci makro ise K sütunundaki değere göre verileri süzer ve siler.

Kolay gelsin.

Kod:
Sub VeriSil()
    
    Dim Syf As Worksheet, _
        ShS As Worksheet, _
        c   As Range, _
        Adr As String, _
        i   As Long, _
        k   As Long, _
        Sat As Long, _
        ASh As String
    
    ASh = ActiveSheet.Name
    
    Set ShS = Sheets("Silinecekler")
    k = ShS.Cells(Rows.Count, "A").End(3).Row
    
    Application.ScreenUpdating = False
    For Each Syf In Worksheets
    
        Syf.Select
        If Syf.Name = "REVİZYON" Or Syf.Name = "DEPLASE" Or _
            Syf.Name = "METRO" Or Syf.Name = "FİBERKENT" Or _
            Syf.Name = "GREENFİELD" Or Syf.Name = "DEMONTAJ" Or _
            Syf.Name = "HASAR&BAKIM" Or Syf.Name = "TASLAK" Then
        
            Syf.Range("K2") = "X"
            For i = 2 To k
            
                With Syf.Range("B:B")
                    Set c = .Find(ShS.Cells(i, "A"), LookIn:=xlValues, LookAt:=xlWhole)
                    If Not c Is Nothing Then
                        Adr = c.Address
                        Do
                            Sat = c.Row
                            Syf.Cells(Sat, "K") = 1
                            Set c = .FindNext(c)
                        Loop While Not c Is Nothing And c.Address <> Adr
                    End If
                End With
            
            Next i
            
            Süzülen_Verileri_Sil
            
        End If
        If ActiveSheet.AutoFilterMode = True Then ActiveSheet.AutoFilterMode = False
    Next Syf
    
    Sheets(ASh).Select
    
    Application.ScreenUpdating = True
    
End Sub
Kod:
Sub Süzülen_Verileri_Sil()

    Dim i As Long
  
    On Error GoTo Son
    Application.ScreenUpdating = False
  
    If ActiveSheet.AutoFilterMode = True Then Range("A2").AutoFilter
    i = Cells(Rows.Count, "A").End(3).Row
  
    ActiveSheet.Range("A2:K" & i).AutoFilter Field:=11, Criteria1:="<>"
    ActiveSheet.Range("A2:K$" & i).Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete

    Columns("K:K").Delete
    Range("K2").Select

    ActiveSheet.ShowAllData
  
Son:

    Application.ScreenUpdating = True

End Sub
 
Son düzenleme:

ruhadam26

Altın Üye
Katılım
4 Aralık 2017
Mesajlar
116
Excel Vers. ve Dili
2010-2016 türkçe
Altın Üyelik Bitiş Tarihi
20-12-2025
Elinize sağlık hocam 2 mankroyuda 2 farklı butona atayıp önce süzme sonra silme işlemi yapmaya çalıştım ama değerlere göre değil her şeyi silmeye sayfaları filtrelemeye bütün değerleri kapamaya başladı
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,294
Excel Vers. ve Dili
Ofis 365 Türkçe

ruhadam26

Altın Üye
Katılım
4 Aralık 2017
Mesajlar
116
Excel Vers. ve Dili
2010-2016 türkçe
Altın Üyelik Bitiş Tarihi
20-12-2025
Verisil makrosunu çalıştırıyorum bir kere değerleri siliyor ama her zaman silmiyor. Silinecekler sayfasında sayılar kalıyor ama ikinci kez çalıştırdığımda alakasız sıradan rastgele siliyor
 

ruhadam26

Altın Üye
Katılım
4 Aralık 2017
Mesajlar
116
Excel Vers. ve Dili
2010-2016 türkçe
Altın Üyelik Bitiş Tarihi
20-12-2025
Hızlı bir reakasiyon vermiyor 100 tane değer yazıp süzdürme yaptığımda hala sonuç alamadım sistemi baya yavaşlattı. Acaba daha stabil ve seri bir yolu var mıdır
 

ruhadam26

Altın Üye
Katılım
4 Aralık 2017
Mesajlar
116
Excel Vers. ve Dili
2010-2016 türkçe
Altın Üyelik Bitiş Tarihi
20-12-2025
Sadece VeriSil makrosunu çalıştırıyorum sileceğim değerlerin k sutununa 1 değeri yazıyor bırakıyor silmiyor
 

ruhadam26

Altın Üye
Katılım
4 Aralık 2017
Mesajlar
116
Excel Vers. ve Dili
2010-2016 türkçe
Altın Üyelik Bitiş Tarihi
20-12-2025
2 tane buton koyup 1. sine verisil makrosunu atadım. ikinci butonada süsüzlenverilerisil makrosunu buraya kadar her sey güzel. 1. yi calistirdigimda 1 koyuyuor oda güzel. ama süzülenleri islmeye gelince hangi sayfada ise her sayfaya tıklayıp buton2 ye tıklayınca siliyor buda işi uzunlaştırıyor. birde silinecekler sayfasındayken beri sil makrosunu çalıştırınca 1 koyuyor diğer sayfalarda değil aynı şekilde silme işleminide bu sayfadayken tek seferde yapsa harika olur
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,294
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,

8. Mesajda VeriSil makrosunda değişiklik yaptım.

Siz sadece bu makroyu çalıştıracaksınız. Bu makro Silinecekler sayfasındaki tüm verileri arar ve K sütununa 1 değeri yazdırır.

Arama işlemi bittikten sonra Süzülen_Verileri_Sil makrosunu çağırır.

Ben denemelerimde başarılı oldum.
Siz de tekrar bir deneyin bakalım.
 

ruhadam26

Altın Üye
Katılım
4 Aralık 2017
Mesajlar
116
Excel Vers. ve Dili
2010-2016 türkçe
Altın Üyelik Bitiş Tarihi
20-12-2025
Merhaba,

8. Mesajda VeriSil makrosunda değişiklik yaptım.

Siz sadece bu makroyu çalıştıracaksınız. Bu makro Silinecekler sayfasındaki tüm verileri arar ve K sütununa 1 değeri yazdırır.

Arama işlemi bittikten sonra Süzülen_Verileri_Sil makrosunu çağırır.

Ben denemelerimde başarılı oldum.
Siz de tekrar bir deneyin bakalım.
Çok teşekkür ederim.Elinize sağlık işlev olarak tam istediğim şekilde oldu.Tek seferde istediğim değerleri siliyor. Lakin sildikten sonra K sütunundaki filtrelemeden dolayı hangi sayfa üzerinde sil makrosunu çalıştırırsam çalıştırayım değerin olduğu sayfa ve sayfalar harici diğer sayfaları filtreleyip hiç bir şeyi göstermiyor el ile teker teker filtreyi tümünü seç diyerek açmam gerekiyor.
 
Son düzenleme:

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,294
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,

8 Nolu mesajda VeriSil makrosuna ekleme yaptım, dener misiniz?
 
Son düzenleme:

ruhadam26

Altın Üye
Katılım
4 Aralık 2017
Mesajlar
116
Excel Vers. ve Dili
2010-2016 türkçe
Altın Üyelik Bitiş Tarihi
20-12-2025
Elinize, emeğinize sağlık çok teşekkür ederim. Bilgi paylaşıldıkça çoğalır..
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,294
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,

Bir öneri :

İleriki dönemlerde belki yeni bir sayfa eklemek zorunda kalacaksınız. Bu durumda kodlarda da o sayfanın adını belirtmeniz gerecektir.

Kod:
        If Syf.Name = "REVİZYON" Or Syf.Name = "DEPLASE" Or _
            Syf.Name = "METRO" Or Syf.Name = "FİBERKENT" Or _
            Syf.Name = "GREENFİELD" Or Syf.Name = "DEMONTAJ" Or _
            Syf.Name = "HASAR&BAKIM" Or Syf.Name = "TASLAK" Then
.
.
.
.
    end if
yerine veri içeren sayfa adları V-REVİZYON, V-DEPLASE ... gibi belirli bir harfle başlayan olursa kod :

Kod:
        If Syf.Name Like "V-*"  Then
        .
        .
        .
        .
        Endif
halini alacak ve hem kısalacak hem de daha anlaşılır olacaktır.

Bir öneri :)
 

ruhadam26

Altın Üye
Katılım
4 Aralık 2017
Mesajlar
116
Excel Vers. ve Dili
2010-2016 türkçe
Altın Üyelik Bitiş Tarihi
20-12-2025
Öneriniz için Teşekkürler Necdet Bey, ufak bir ricam daha olacak acaba çözümü var mıdır?. Şu an gayet stabil bir şekilde çalışıyor.Yalnız verisil makrosunu çalıştırınca ekrarntitriyor bütün sayfalar hızlı hızlı gelip gidiyor arama yapıyor yani bu olayı görmemenin bir yolu var mı.Rka planda gerçekleşse bu olaylar direkt sonucu görsem nasıl olur mümkünatı var mıdır?. Görüntü olarak hoş durmuyor pek. Olmasa da olur ama olursa şahane olur.
 
Üst