Çoklu Satır ve Sütun silme

Katılım
24 Temmuz 2019
Mesajlar
8
Excel Vers. ve Dili
Excell 2016
İyi günler. Çalışma kitabından içinde verilerin de olduğu ilk sekiz satırı ve A,C,E sütunlarını silmek için nasıl bir koda yazabiliriz yardımcı olabilirmisiniz.

Teşekkürler.
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,167
Excel Vers. ve Dili
2019 Türkçe
Merhaba.

Kod:
Sub test()
    Rows("1:8").Delete 'Satır siler
    Columns(5).Delete 'Sutün siler
    Columns(3).Delete
    Columns(1).Delete
End Sub
 
Katılım
24 Temmuz 2019
Mesajlar
8
Excel Vers. ve Dili
Excell 2016

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Deneyiniz:
PHP:
Sub coz()
    Cells.UnMerge
    Columns("H:H").Cut: Columns("A:A").Insert Shift:=xlToRight
End Sub
 
Katılım
8 Aralık 2005
Mesajlar
840
Excel Vers. ve Dili
İş:Excel 2000 Türkçe
Ev:Excel xp Türkçe
Altın Üyelik Bitiş Tarihi
11.06.2022
İyi akşamlar,
Yeni bir başlık açmak yerine sorumu bu başlık altında sormanın uygun olacağını düşündüm.
Bol sütunlu bir sayfam var. A sütunundan Ac sütununa kadar
1 satırda başlıklar var örnek olması açısından
1'inci satırdaki Adı, soyadı, emekli sandığı numarası, T.C ve iban numarası başlıklı sütunları haricindeki sütunların tamamını makro ile silmek ve

T.C., emekli sandığı, iban numarası, adı , soyadı şeklinde sıralayabilir miyiz.
Teşekkürler.
 

Korhan Ayhan

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

C++:
Option Explicit

Sub Sutunlari_Duzenle()
    Dim X As Integer, Silinmeyecek_Sutunlar As Variant, Bul As Variant
    
    Silinmeyecek_Sutunlar = Array("T.C.", "Emekli Sandığı", "İban Numarası", "Adı", "Soyadı")
    
    On Error Resume Next
    
    For X = Cells(1, Columns.Count).End(1).Column To 1 Step -1
        Bul = 0
        Bul = WorksheetFunction.Match(Cells(1, X), Silinmeyecek_Sutunlar, 0)
        If Bul = 0 Then
            Columns(X).Delete
        End If
    Next

    For X = LBound(Silinmeyecek_Sutunlar) To UBound(Silinmeyecek_Sutunlar)
        Bul = 0
        Bul = WorksheetFunction.Match(Silinmeyecek_Sutunlar(X), Rows(1), 0)
        If Bul <> 0 Then
            Columns(Bul).Cut
            Columns(X + 1).Insert xlRight
        End If
    Next
    
    Columns.AutoFit
    
    Application.CutCopyMode = False
    
    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub
 
Katılım
8 Aralık 2005
Mesajlar
840
Excel Vers. ve Dili
İş:Excel 2000 Türkçe
Ev:Excel xp Türkçe
Altın Üyelik Bitiş Tarihi
11.06.2022
Korhan Bey,Çok Teşekkürler emeğinize sağlık.
 

msofuoglu

Altın Üye
Katılım
4 Eylül 2017
Mesajlar
61
Excel Vers. ve Dili
2013 Pro. 64 bit Türkçe ve Office 365
Altın Üyelik Bitiş Tarihi
27-01-2027
Herkese iyi günler dilerim,
" Silme " konusu olduğu için başka bir başlık açmak istemedim, hatalı davrandıysam şimdiden özür dilerim.
Eklediğim dosya bir ay için (31 gün) hazırlanmış, örnek dosya 10 günlüktür. Her ay; D9-BK9 /D18-BK18 hücre aralığı, D26-BK26/D129-BK129 hücre aralığı, BS9-DZ9/BS18-DZ18 hücre aralığı, BS26-DZ26/BS144-DZ144 hücre aralığı, ED9-GK9/ED18-GK18 hücre aralığı, ED26-GK26/ED85-GK85 hücre aralığı silinmesi gerekiyor, ayrıca D19-GK19 /D25-GK25 aralığında ve B-BQ-EB-BL-BM-BN-BO sütunları formül içeren verileri silmeyecek makroya ihtiyacım var. Bu çalışma bir ay yapılıp dijital olarak arşivleniyor. Aynı dosyada ay bilgileri değiştirilerek 12 ay sürekli kullanılıyor. Ay bittiğinde 30 ya da 31 günlük çalışmada bahsettiğim hücre aralıkları silinip takip eden ay kullanılıyor. Sil butonu ile bahsettiğim hücre aralıklarını silecek bir kod konusunda yardımcı olabilir misiniz.
Excelweb.tr'den istifade ederek

Sub Düğme1_Tıklat()
Dim hcr As Range
For Each hcr In Range("D9:BK9:D18:BK18:D26:BK26:D129:BK129")
If IsNumeric(hcr.Value) And hcr.Value > 0 Then hcr.ClearContents
Next
End Sub

aşağıda linki yer alan dosyada sadece ilk kısım için bir çalışma yaptım fakat 19-25 aralığındaki satırlarda olan veriyi de siliyor. Yardımcı olabilirseniz sevinirim. excel.web.tr katılımcılarına ve herkese sağlıklı günler dilerim.

İlginiz için şimdiden teşekkür ederim.

Dosya Linki: https://dosya.co/vkw8t9lqqske/taslak___EYLÜL_2020_GÜNLÜK_PUANTAJ_RAPORU.XLSX.html
 

msofuoglu

Altın Üye
Katılım
4 Eylül 2017
Mesajlar
61
Excel Vers. ve Dili
2013 Pro. 64 bit Türkçe ve Office 365
Altın Üyelik Bitiş Tarihi
27-01-2027
Herkese iyi günler dilerim,
" Silme " konusu olduğu için başka bir başlık açmak istemedim, hatalı davrandıysam şimdiden özür dilerim.
Eklediğim dosya bir ay için (31 gün) hazırlanmış, örnek dosya 10 günlüktür. Her ay; örnek dosyada sarı zemin olan hücreler (D9-BK9 /D18-BK18 hücre aralığı, D26-BK26/D129-BK129 hücre aralığı, BS9-DZ9/BS18-DZ18 hücre aralığı, BS26-DZ26/BS144-DZ144 hücre aralığı, ED9-GK9/ED18-GK18 hücre aralığı, ED26-GK26/ED85-GK85 hücre aralığı) silinmesi gerekiyor, ayrıca D19-GK19 /D25-GK25 aralığında ve B-BQ-EB-BL-BM-BN-BO sütunları formül içeren verileri silmeyecek makroya ihtiyacım var. Bu çalışma bir ay yapılıp dijital olarak arşivleniyor. Aynı dosyada ay bilgileri değiştirilerek 12 ay sürekli kullanılıyor. Ay bittiğinde 30 ya da 31 günlük çalışmada bahsettiğim hücre aralıkları silinip takip eden ay kullanılıyor. Sil butonu ile bahsettiğim hücre aralıklarını silecek bir kod konusunda yardımcı olabilir misiniz.
Excelweb.tr'den istifade ederek

Sub Düğme1_Tıklat()
Dim hcr As Range
For Each hcr In Range("D9:BK9:18:BK18:26:BK26:129:BK129")
If IsNumeric(hcr.Value) And hcr.Value > 0 Then hcr.ClearContents
Next
End Sub

aşağıda linki yer alan dosyada sadece ilk kısım için bir çalışma yaptım fakat 19-25 aralığındaki satırlarda olan veriyi de siliyor. Yardımcı olabilirseniz sevinirim. excel.web.tr katılımcılarına ve herkese sağlıklı günler dilerim.

İlginiz için şimdiden teşekkür ederim.

Dosya Linki:
 

Korhan Ayhan

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

Döngü yerine aşağıdaki yöntemi kullanın daha hızlı sonuç verir.

C++:
Sub Düğme1_Tıklat()
    Range("D9:BK18").ClearContents
    Range("BS9:DZ18").ClearContents
    Range("ED9:GK18").ClearContents
    Range("D26:BK129").ClearContents
    Range("BS26:DZ144").ClearContents
    Range("ED26:GK85").ClearContents
End Sub
 

msofuoglu

Altın Üye
Katılım
4 Eylül 2017
Mesajlar
61
Excel Vers. ve Dili
2013 Pro. 64 bit Türkçe ve Office 365
Altın Üyelik Bitiş Tarihi
27-01-2027
Korhan Ayhan bey merhaba,
Öncelikle yardımınız için çok çok teşekkür ederim. Yazdığınız kod çok iyi çalıştı. Emeğinize zihninize sağlık. Makro için webden özellikle excel.web.tr'den oldukça istifade ediyor ve tabiri caizse derleme yapmaya çalışıyorum.
Tekrar teşekkür ediyor size ve tüm katılımcılara sağlıklı günler diliyorum.
 

msofuoglu

Altın Üye
Katılım
4 Eylül 2017
Mesajlar
61
Excel Vers. ve Dili
2013 Pro. 64 bit Türkçe ve Office 365
Altın Üyelik Bitiş Tarihi
27-01-2027
Merhaba,

Döngü yerine aşağıdaki yöntemi kullanın daha hızlı sonuç verir.

C++:
Sub Düğme1_Tıklat()
    Range("D9:BK18").ClearContents
    Range("BS9:DZ18").ClearContents
    Range("ED9:GK18").ClearContents
    Range("D26:BK129").ClearContents
    Range("BS26:DZ144").ClearContents
    Range("ED26:GK85").ClearContents
End Sub
Korhan Ayhan hocam iyi günler,
Yeniden teşekkür ederim. Yazdığınız kodu uyguladım sonra kazara silinmeler için bir uyarı mesajı versin istedim, sizin yazdığınız kodun başına "MsgBox "Verileri silmek istediğinizden eminmisiniz?" diye ilave ettim. Gelen uyarı mesajına "Tamam" dedikten sonra siliyor, uyarıyı cevaplamazsan silmiyor. Belki faydalı olur diye paylaştım.
Excel.web.tr ailesine ve tüm katılımcılara sağlıklı günler dilerim.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,256
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
İyi günler,

Evet silme işlemleri riskli olduğu için uyarı eklemek faydalı olabilir. İyi düşünmüşsünüz.

Paylaştığınız için teşekkürler.
 
Katılım
6 Temmuz 2022
Mesajlar
50
Excel Vers. ve Dili
2019
İyi günler,

Evet silme işlemleri riskli olduğu için uyarı eklemek faydalı olabilir. İyi düşünmüşsünüz.

Paylaştığınız için teşekkürler.

Merhabalar benimde satır silme ile alakalı bir sıkıntım mevcut o yüzden direk buraya yazayım dedim :

elimde bulunan dosyamda S , AK, AL sütunları hariç diğer tüm sutunların ve altında bulunan verilerin tamamının silinmesi bu üç sutunun en başa yani A, B, C olarak yazılması ve daha sonrasında B sütunun ve C sütununun içindeki verilerin yer değiştirmesi gerekmektedir yardımcı olabilecek olan varmı ?
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Bu işlem için makro kaydet yöntemini denediniz mi? Makro kaydetmeyi çalıştırın ve belirttiğiniz işlemleri aynı sırayla yapıp makro kaydetmeyi durdurun. İstediğiniz makro excel tarafından oluşturulacaktır.
 
Katılım
6 Temmuz 2022
Mesajlar
50
Excel Vers. ve Dili
2019
Bu işlem için makro kaydet yöntemini denediniz mi? Makro kaydetmeyi çalıştırın ve belirttiğiniz işlemleri aynı sırayla yapıp makro kaydetmeyi durdurun. İstediğiniz makro excel tarafından oluşturulacaktır.




Merhabalar Yusuf bey ;

Dosyada Visual Basic bölümüne bakarsanız göreceksiniz dediğiniz gibi makro kaydet bölümü ile makro kaydettim ve daha sonrasında altına yaptırmak istediğim bir for döngüsü koydum ancak sıkıntı şu ki makroyu başlattığım anda bütün excel sayfaları donuyor hiçbir sayfaya tıklayamıyorum ? Bunun çözümü nedir acaba ?
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
For döngüsünde satır silme varsa geriye doğru işlem yapmak daha doğru olur. Aşağıdaki gibi sadeleştirip düzenledim, sıkıntı olmadan çalışıyor:

PHP:
Sub genel()
    Application.ScreenUpdating = False
        Columns("A:R").Delete Shift:=xlToLeft
        Columns("B:R").Delete Shift:=xlToLeft
        Columns("D:AK").Delete Shift:=xlToLeft
        Columns("A:C").EntireColumn.AutoFit
        Range("D1") = "Marka"
        Range("D1").AutoFilter
            
        Columns("C:C").Cut: [B1].Insert Shift:=xlToRight
        Application.CutCopyMode = False
        
        sonA = Cells(Rows.Count, "A").End(3).Row
        For i = sonA To 2 Step -1
            If Cells(i, "B").Value = 0 Then
                Rows(i).Delete
            End If
        Next i
        ActiveWorkbook.Save
    Application.ScreenUpdating = True
    MsgBox "İşlem Tamamlandı", vbInformation
End Sub
 
Katılım
6 Temmuz 2022
Mesajlar
50
Excel Vers. ve Dili
2019
For döngüsünde satır silme varsa geriye doğru işlem yapmak daha doğru olur. Aşağıdaki gibi sadeleştirip düzenledim, sıkıntı olmadan çalışıyor:

PHP:
Sub genel()
    Application.ScreenUpdating = False
        Columns("A:R").Delete Shift:=xlToLeft
        Columns("B:R").Delete Shift:=xlToLeft
        Columns("D:AK").Delete Shift:=xlToLeft
        Columns("A:C").EntireColumn.AutoFit
        Range("D1") = "Marka"
        Range("D1").AutoFilter
          
        Columns("C:C").Cut: [B1].Insert Shift:=xlToRight
        Application.CutCopyMode = False
      
        sonA = Cells(Rows.Count, "A").End(3).Row
        For i = sonA To 2 Step -1
            If Cells(i, "B").Value = 0 Then
                Rows(i).Delete
            End If
        Next i
        ActiveWorkbook.Save
    Application.ScreenUpdating = True
    MsgBox "İşlem Tamamlandı", vbInformation
End Sub

Teşekkürler güzel çalışıyor.
Şöyle bir şey mümkün müdür acaba anlatıyorum:

Elimde A1 hücresinden BS753 hücresine kadar bağzı hücreleri dolu bağzı hücreleri boş olmak üzere sayda adı Veri olan bir tablo mevcut üstteki kod gereksiz verileri sildikten sonra benim istediğim 3 veri sütununu bırakıyor ya ben makroyu çalıştırdığımda bu 3 sütun bir yan sayfada Sonuc adındaki sayfada gözükse ?


Yani kodu veri sayfasındaki verilere göre işleyic kalan 3 sütunu Sonuc sayfasına yazacak
 
Üst