• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Satır Silme

ccuneyt13

Altın Üye
Katılım
20 Ocak 2011
Mesajlar
478
Excel Vers. ve Dili
Office 365 Türkçe (64 bit)
Hayırlı Geceler cümleten.

Mevcut excel tablomun için de 7. sayfadan ile 21. sayfaya kadar olan sayfalarda " P2 ile P1048576 " sütunları arasında "ALİ" geçen tüm satırları silip akabinde "H" sütununu büyükten küçüğe sıralayacak bir makro istirham ediyorum.

Saygılarımla.
 
Öncelikle daha düne kadar Makronun M'sini bilmezken şimdi sayenizde çok basit bile olsa bunu söylemek istiyorum, aşağıdaki kodu ben yazdım :D Forumdan araya taraya yapabildim ve bu beni çok mutlu etti.

Lakin bunu 7. sayfa ile 21. sayfa arasında çalıştırmasını bilemedim. Onun için yardımcı olabilirmisiniz.

Sub Sil()
For x = [P1048576].End(3).Row To 2 Step -1
If Cells(x, "P") = "ALİ" Then Rows(x).Delete
Next
Range("h2:h1048576").Sort [h2], Order1:=xlDescending
End Sub
 
Merhaba,

Bu şekilde deneyin.

Kod:
Sub Sil()
 
    Dim j As Integer, i As Long, deg
 
    With Application
        .ScreenUpdating = False
        .Calculation = xlCalculationManual
    End With
 
    For j = 1 To Worksheets.Count
        With Sheets(j)
            If .Index > 6 And .Index < 22 Then
                For i = .Cells(Rows.Count, "P").End(xlUp).Row To 2 Step -1
                    deg = UCase(Replace(Replace(.Cells(i, "P"), "i", "İ"), "ı", "I"))
                    If deg = "ALİ" Then .Rows(i).Delete
                Next i
                .Range("H2:H" & Rows.Count).Sort .Range("H2"), xlDescending
            End If
        End With
    Next j
 
    With Application
        .ScreenUpdating = True
        .Calculation = xlCalculationAutomatic
    End With
 
End Sub
.
 
Son düzenleme:
Merhaba,

Bu şekilde deneyin.


.

Ömer bey öncelikle teşekkür ediyorum. Fakat verdiğiniz kod sadece tek sayfada çalışıyor.

Çalışma sayfamda toplam 21 tane sayfa var ama P sütununda Ali geçen satırları silmek istediklerim 7 den 21'e kadar olan sayfalarda. Kaçıncı sayfada olursam olayım makro çalıştığı zaman 7. sayfadan itibaren 21. sayfaya kadar P sütunlarında Ali geçenleri silsin ve H sütunlarını da büyükten küçüğe sıralansın.

Yanlış anlattıysam kusuruma bakmayın. Vakit geç oldu hayırlı geceler dilerim.
 
Öncelikle daha düne kadar Makronun M'sini bilmezken şimdi sayenizde çok basit bile olsa bunu söylemek istiyorum, aşağıdaki kodu ben yazdım :D Forumdan araya taraya yapabildim ve bu beni çok mutlu etti.
Lakin bunu 7. sayfa ile 21. sayfa arasında çalıştırmasını bilemedim. Onun için yardımcı olabilirmisiniz.
Sub Sil()
For x = [P1048576].End(3).Row To 2 Step -1
If Cells(x, "P") = "ALİ" Then Rows(x).Delete
Next
Range("h2:h1048576").Sort [h2], Order1:=xlDescending
End Sub

Ömer bey öncelikle teşekkür ediyorum. Fakat verdiğiniz kod sadece tek sayfada çalışıyor.

Çalışma sayfamda toplam 21 tane sayfa var ama P sütununda Ali geçen satırları silmek istediklerim 7 den 21'e kadar olan sayfalarda. Kaçıncı sayfada olursam olayım makro çalıştığı zaman 7. sayfadan itibaren 21. sayfaya kadar P sütunlarında Ali geçenleri silsin ve H sütunlarını da büyükten küçüğe sıralansın.

Yanlış anlattıysam kusuruma bakmayın. Vakit geç oldu hayırlı geceler dilerim.

Eğer sayfalar sıralı ise:

Kod:
 Sub Sil()
For a = 7 To 21
For x = Sheets(a).[P1048576].End(3).Row To 2 Step -1
If Sheets(a).Cells(x, "P") = "ALİ" Then Sheets(a).Rows(x).Delete
Next
Sheets(a).Range("h2:h1048576").Sort Sheets(a).[h2], Order1:=xlDescending
Next
End Sub
 
Son düzenleme:
Ömer bey öncelikle teşekkür ediyorum. Fakat verdiğiniz kod sadece tek sayfada çalışıyor.

Çalışma sayfamda toplam 21 tane sayfa var ama P sütununda Ali geçen satırları silmek istediklerim 7 den 21'e kadar olan sayfalarda. Kaçıncı sayfada olursam olayım makro çalıştığı zaman 7. sayfadan itibaren 21. sayfaya kadar P sütunlarında Ali geçenleri silsin ve H sütunlarını da büyükten küçüğe sıralansın.

Yanlış anlattıysam kusuruma bakmayın. Vakit geç oldu hayırlı geceler dilerim.

Bazı bölümlere nokta ile sayfa belirlemeyi atlamışım. Kodu yeniden düzenledim.
 
Bazı bölümlere nokta ile sayfa belirlemeyi atlamışım. Kodu yeniden düzenledim.


Eğer sayfalar sıralı ise:

Kod:
 Sub Sil()
For a = 7 To 21
For x = Sheets(a).[P1048576].End(3).Row To 2 Step -1
If Sheets(a).Cells(x, "P") = "ALİ" Then Sheets(a).Rows(x).Delete
Next
Sheets(a).Range("h2:h1048576").Sort Sheets(a).[h2], Order1:=xlDescending
Next
End Sub



Sayın Ömer ve Sayın Husgvarna öncelikle ilginiz için teşekkür ederim.
Her 2 kodda istediğim gibi ALİ geçenleri sildi ve sıralamayı da yaptı fakat gene her 2 makroda da satırlardaki verilerde kayma meydana geldi. Mesela P sütunundan sonra gelen Q sütunda olan veriler silinen ALİ kadar üstte kayma yapıyor :( Komple satırı silmiyor da sanki üstte kaydırıyor gibi bişey oldu.
 
.Delete

yerine

.Delete Shift:=xlUp

yazarak deneyin.
 
.Delete

yerine

.Delete Shift:=xlUp

yazarak deneyin.

Ömer bey dediğiniz gibi yaptım oldu fakat sorun başka birşeymiş;

Büyükden küçüğe sıralama yapması için olan kod da sorun var sanırım.
Sadece H sütünunu büyükden küçüğe sıralıyor. H deki rakamlara göre tüm tabloyu sıralamıyor. Sayın Husgvarna'nın vermiş olduğu kodda yazan Sheets(a).Range("h2:h1048576").Sort Sheets(a).[h2], Order1:=xlDescending satırını (bildiğimden değil) :) Sheets(a).Range("h1").Sort Sheets(a).[h2], Order1:=xlDescending şeklinde değiştirdim oldu ama sizin kod da o orası biraz karışık benim için onu yapamadım.
 
Geri
Üst