• DİKKAT

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

Hücre içinedeki kelimeden harf atmak ve sonu belli bir harf ile biten satırı silmek

Katılım
2 Şubat 2013
Mesajlar
69
Excel Vers. ve Dili
2007 Türkçe
Arkadaşlar…
“A” sutununda isimler var. Bu isimlerin sonlarına nokta (.) ile birlikte “E” veya ” Y” harfleri eklenmiştir. Yapmak istediğim “.Y ” eki almış satırlar silinecek; nokta ve “ E” harfi eki almış olan isimlerden ise nokta ve harf eki atılacak. Bu makroyu bir döngü içinde yapabilir miyiz?
 

Ekli dosyalar

Merhaba
Boş bir module kopyalayın ve deneyin.
Kod:
Option Explicit
Sub silveyokket()
Dim STR As Long
Application.ScreenUpdating = False
For STR = Cells(Rows.Count, "A").End(xlUp).Row To 2 Step -1
If Cells(STR, "A") Like "*.E*" Then
Cells(STR, "A") = Replace(Cells(STR, "A"), ".E", "")
ElseIf Cells(STR, "A") Like "*.Y*" Then
Application.DisplayAlerts = False
rows(str).delete
Application.DisplayAlerts = True
End If: Next
Application.ScreenUpdating = True
End Sub
 
Son düzenleme:
Sn Beytur
Yedek alıp aşağıdaki makroyu uygularsanız.
Sub a()
say = Range("a1").CurrentRegion.Rows.Count
For i = 2 To say
ss = Split(Range("a" & i), ".")
If ss(1) = "Y" Then
Range("a" & i).Value = "sil"
ElseIf ss(1) = "E" Then
Range("a" & i).Value = ss(0)

End If
Next
Range("a1").AutoFilter Field:=1, Criteria1:="sil"
Range("a2:a" & say).Delete Shift:=xlUp
Range("a1").AutoFilter
End Sub
 
Arkadaşlar…
“A” sutununda isimler var. Bu isimlerin sonlarına nokta (.) ile birlikte “E” veya ” Y” harfleri eklenmiştir. Yapmak istediğim “.Y ” eki almış satırlar silinecek; nokta ve “ E” harfi eki almış olan isimlerden ise nokta ve harf eki atılacak. Bu makroyu bir döngü içinde yapabilir miyiz?

İsimler başka bir ek almış olabilir mi?

Örneğin atıyorum H gibi

Ayrıca ek alan karakter nokta ve tek bir harf midir? Bu yapı sabit midir?

Aşağıdaki kodlar Sağdan 2. karakteri Nokta olan hücrelerin son 2 karekterini atar.

Kod:
Sub EkSil()
    
    Dim i   As Long, _
        j   As Integer
    
    Application.ScreenUpdating = False
    
    For i = 2 To Cells(Rows.Count, "A").End(3).Row
        If Left(Right(Cells(i, "A"), 2), 1) = "." Then
            Cells(i, "A") = Left(Cells(i, "A"), Len(Cells(i, "A")) - 2)
        End If
    Next i
    
    Application.ScreenUpdating = True
    
    MsgBox "İşlem Gerçekleşmiştir....", vbInformation, "Excel.Web.Tr - Necdet"
    
End Sub
 
Necdet Bey...

İsimler "A" sutununda olacak boyut değişken, İsimler sonlarına sadece nokta (.) ve belirtilen harfleri ek alacak Yani "Y" ve "E" harfleri ek olacak. Sabit. Bir de nokta (.) ve "Y" harfi eki alan satırlar silinecek. "E" harfi ve nokta (.) eki almış hücrelerde sadece sondaki nokta (.) ve "E" harfi silinecek.
 
Son düzenleme:
Sn Beytur
Yedek alıp aşağıdaki makroyu uygularsanız.
Sub a()
say = Range("a1").CurrentRegion.Rows.Count
For i = 2 To say
ss = Split(Range("a" & i), ".")
If ss(1) = "Y" Then
Range("a" & i).Value = "sil"
ElseIf ss(1) = "E" Then
Range("a" & i).Value = ss(0)

End If
Next
Range("a1").AutoFilter Field:=1, Criteria1:="sil"
Range("a2:a" & say).Delete Shift:=xlUp
Range("a1").AutoFilter
End Sub

Sayın omerceri...

Merhaba, ilginiz için teşekkür ediyorum. Gönderdiğiniz kodu uygulayınca şöyle bir durum oluştu. "E" harfi ekli olan satırlarda problem yok. Ancak, nokta (.) ve "Y" harfi ekli satırlarda, makro hücrenin içeriğini siliyor ve hücreye "sil" yazıyor. Benim istediğim ise, hücrenin içeriğinin silinmesi değil, o hücrenin bulunduğu satırın tamamen silinmesi. Örneğin: hücre "A7" ise bu satır silinmeli. Sanıyorum hata bende oldu. Teşekkürler
 
Merhaba
Boş bir module kopyalayın ve deneyin.
Kod:
Option Explicit
Sub silveyokket()
Dim STR As Long
Application.ScreenUpdating = False
For STR = Cells(Rows.Count, "A").End(xlUp).Row To 2 Step -1
If Cells(STR, "A") Like "*.E*" Then
Cells(STR, "A") = Replace(Cells(STR, "A"), ".E", "")
ElseIf Cells(STR, "A") Like "*.Y*" Then
Application.DisplayAlerts = False
Cells(STR, "A").Delete
Application.DisplayAlerts = True
End If: Next
Application.ScreenUpdating = True
End Sub

Sayın asi kral...

Merhaba, kod iyi çalışıyor fakat benim hatalı izah etmemden dolayı olacak ki, sadece nokta (.) ve "Y" ekli hücreler silinmiş. O hücrelerin karşılarında bilgi olduğu için (B,C,D,E sutunlarına karşılık gelen hücrelerde), ben o hücrenin bulunduğu satırın silinmesini istiyorum. Örneğin: nokta (.) ve "Y" ekli hücre "A7" de ise, A7 satırı silinmeli. Diğer "E" ekli hücrelerde sorun yok.Teşekkür ediyorum
 
Bizim kodlar hakkında bir yorum yapmadınız, neden?

Boşuna mı yazdık?
 
Sayın asi kral...

Merhaba, kod iyi çalışıyor fakat benim hatalı izah etmemden dolayı olacak ki, sadece nokta (.) ve "Y" ekli hücreler silinmiş. O hücrelerin karşılarında bilgi olduğu için (B,C,D,E sutunlarına karşılık gelen hücrelerde), ben o hücrenin bulunduğu satırın silinmesini istiyorum. Örneğin: nokta (.) ve "Y" ekli hücre "A7" de ise, A7 satırı silinmeli. Diğer "E" ekli hücrelerde sorun yok.Teşekkür ediyorum

Merhaba
Öncelikle Necdet Bey'in kodunu deneyin. Sonra da ben üstteki kodu güncelledim :)
 
Bizim kodlar hakkında bir yorum yapmadınız, neden?

Boşuna mı yazdık?

Necdet Bey...

Kırıldınız herhalde özür dilerim. Sizin yazmış olduğunuz kod, hücre içindeki kelimelerin sonundaki iki karekteri siliyor. Zaten mesajınız da da belirtmiştiniz. Sizin sorduğunuz sorulara cevap niteliğinde bir mesaj yazmıştım. Diğer iki arkadaşın yazdıkları kodlar daha kolay revize edilebilinir diye, sizi yormamak adına sizden talepde bulunmadım. Yoksa kodunuzu denemiştim. Ve de daha sonra size istediğim kodu yazmıştım ama; Burada bizler sizler sayesinde bir şeyler yapmaya çalışıyoruz. Lütfen bir yanlış anlama olmasın. Sağlıkla kalın.
 
Necdet Bey...

Kırıldınız herhalde özür dilerim. Sizin yazmış olduğunuz kod, hücre içindeki kelimelerin sonundaki iki karekteri siliyor. Zaten mesajınız da da belirtmiştiniz. Sizin sorduğunuz sorulara cevap niteliğinde bir mesaj yazmıştım. Diğer iki arkadaşın yazdıkları kodlar daha kolay revize edilebilinir diye, sizi yormamak adına sizden talepde bulunmadım. Yoksa kodunuzu denemiştim. Ve de daha sonra size istediğim kodu yazmıştım ama; Burada bizler sizler sayesinde bir şeyler yapmaya çalışıyoruz. Lütfen bir yanlış anlama olmasın. Sağlıkla kalın.

Yok neden kızayım :)

Benim de yazdığım kodlar isteğe göre düzenlenebilir, iki kodu karşılaştırırsanız o kadar da zor olmayacağı kesin.

Aşağıdaki kod sözcüğü önce KIRP yapar ve büyük ve küçükharfe duyarlı değildir.

İlk mesajımdaki kodlarla aynı sadece son iki karakterin ".E" ya da ".Y" olması durumunda bu iki karakteri siler.

Kod:
Option Compare Text
 
Sub EkSil()
 
    Dim i   As Long, _
        s    As String
 
    Application.ScreenUpdating = False
 
    For i = 2 To Cells(Rows.Count, "A").End(3).Row
        s = Application.WorksheetFunction.Trim(Cells(i, "A"))
        If Right(s, 2) = ".Y" Or Right(s, 2) = ".E" Then
            Cells(i, "A") = Left(s, Len(s) - 2)
        End If
    Next i
 
    Application.ScreenUpdating = True
 
    MsgBox "İşlem Gerçekleşmiştir....", vbInformation, "Excel.Web.Tr - Necdet"
 
End Sub
 
Necdet Bey...

Sorun olmadığına sevindim. Ümit ederim ki bundan sonraki sorularıma cevap vermemezlik etmezsiniz. Sağlıkla kalın
 
Geri
Üst