bir karakteri değiştirme makrosu

Katılım
2 Temmuz 2009
Mesajlar
542
Excel Vers. ve Dili
office 2019 Türkçe
Altın Üyelik Bitiş Tarihi
28/12/2022
değerli üstadlarım. B sutununda hücre içerisinde "Tl" Olan kelimeleri "TL" ile değiştirmek istiyorum. (örnek B12 hücresinde: su faturası 2541,25 Tl )
aynı zamanda rakamları da 1000 lik ayraç ve 2 haneli virgül olursa daha iyi olur. ama şart değil asıl sorunum Tl yi TL yapmak.
yardımlarınız için şimdiden teşekkürler...
 

Mdemir63

Altın Üye
Katılım
7 Temmuz 2006
Mesajlar
2,868
Excel Vers. ve Dili
Ofis2010 32Bit Türkçe
Altın Üyelik Bitiş Tarihi
19-02-2026
Selamlar

CTRL + H ile yapabilirsiniz


İllaki makro ile istiyorsanız

Kod:
Sub Degistir()
    Columns("A:A").Select
    Selection.Replace What:="TI", Replacement:="TL", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
End Sub
 
Katılım
2 Temmuz 2009
Mesajlar
542
Excel Vers. ve Dili
office 2019 Türkçe
Altın Üyelik Bitiş Tarihi
28/12/2022
üstad teşekkür ederim. ama hiç bir değişiklik olmadı. kod çalışmadı. iyi geceler dilerim.
 

Mdemir63

Altın Üye
Katılım
7 Temmuz 2006
Mesajlar
2,868
Excel Vers. ve Dili
Ofis2010 32Bit Türkçe
Altın Üyelik Bitiş Tarihi
19-02-2026
Selamlar

Kodlarda A sütunu baz alınmıştır.
örnek Dosyanızı yükleyin
 

netzone

Altın Üye
Katılım
10 Mayıs 2006
Mesajlar
791
Excel Vers. ve Dili
🅾🅵🅵🅸🅲🅴
⎝365 64 Bit 𝙏𝙍⎠
🆆🅸🅽🅳🅾🆆🆂
⎝11 64 Bit 𝙏𝙍⎠
Altın Üyelik Bitiş Tarihi
12-09-2027
Merhaba @spacebar,

Sorunuzda hücre içerisinde olduğunu belirtmişsiniz, biçimlendirme ile mi geliyor yoksa metinsel bir ifade olarak mı TL yer alıyor? Formül yada Makro ile metinsel ifade eklenerek geliyor ise bu kodu yada formülü kontrol ediniz.

... B sutununda hücre içerisinde "Tl" Olan kelimeleri "TL" ile değiştirmek istiyorum. (örnek B12 hücresinde: su faturası 2541,25 Tl )
...
Hücre içine girdiğinizde TL yi görüyorsanız:
CTRL+H tuşlarına basıp, aranan kutusuna Tl ((!)Tl nin başında 1 karakterlik boşluk var) yazıp, yeni değer kısmını boş bırakarak Tümünü değiştir butonuna basınız. Akabinde A sütunun seçip CTRL+1 tuşlarına basıp biçimlendirme penceresinden > İsteğe uyarlanmış'ı seçin ve Tür kutusuna #.##0,00 TL yazın.

Hücre içine girdiğinizde TL görünmüyor ise; A sütunu seçiliyken Biçimlendirme penceresini açıp Formatı kontrol ediniz.

Ayrıca, Bahsettiğiniz para birimi olarak değil metin olarak hücre içindeyse; @Mdemir63'ün paylaşmış olduğu kodda (Kırmızı boyadığım yerde) küçük L yerine I harfi kullanılmış bunu ve kullanmak istediğiniz sütun aralığını (mavi boyadığım yerde) B:B olarak değiştirip gözlemleyiniz.

İyi çalışmalar.

... makro ile istiyorsanız
Rich (BB code):
Sub Degistir()
    Columns("A:A").Select
    Selection.Replace What:="TI", Replacement:="TL", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
End Sub
 
Katılım
2 Temmuz 2009
Mesajlar
542
Excel Vers. ve Dili
office 2019 Türkçe
Altın Üyelik Bitiş Tarihi
28/12/2022
Koddaki
Columns("A:A").Select yazan yeri

Columns("B:B").Select şeklinde denedinizmi.
merhabalar. öncelikle dün cevap veremediğim için özür dilerim. evet denedim. çalışmadı. ilginize teşekkür ederim.
 
Katılım
2 Temmuz 2009
Mesajlar
542
Excel Vers. ve Dili
office 2019 Türkçe
Altın Üyelik Bitiş Tarihi
28/12/2022
Merhaba @spacebar,

Sorunuzda hücre içerisinde olduğunu belirtmişsiniz, biçimlendirme ile mi geliyor yoksa metinsel bir ifade olarak mı TL yer alıyor? Formül yada Makro ile metinsel ifade eklenerek geliyor ise bu kodu yada formülü kontrol ediniz.



Hücre içine girdiğinizde TL yi görüyorsanız:
CTRL+H tuşlarına basıp, aranan kutusuna Tl ((!)Tl nin başında 1 karakterlik boşluk var) yazıp, yeni değer kısmını boş bırakarak Tümünü değiştir butonuna basınız. Akabinde A sütunun seçip CTRL+1 tuşlarına basıp biçimlendirme penceresinden > İsteğe uyarlanmış'ı seçin ve Tür kutusuna #.##0,00 TL yazın.

Hücre içine girdiğinizde TL görünmüyor ise; A sütunu seçiliyken Biçimlendirme penceresini açıp Formatı kontrol ediniz.

Ayrıca, Bahsettiğiniz para birimi olarak değil metin olarak hücre içindeyse; @Mdemir63'ün paylaşmış olduğu kodda (Kırmızı boyadığım yerde) küçük L yerine I harfi kullanılmış bunu ve kullanmak istediğiniz sütun aralığını (mavi boyadığım yerde) B:B olarak değiştirip gözlemleyiniz.

İyi çalışmalar.
merhabalar. öncelikle dün cevap veremediğim herkesten özür dilerim. ctrl+h yerine makrolu çözüme ulaşmam gerekiyor. B:B olarak denedim ama çalışmadı. ama sonradan makronun çalışmama nedenini buldum. benim "Tl" olarak ifade ettiğim ikinci karakter (yani le); makro kodlarda büyük "I" olarak yazılmış. ikisinin de görüntüsü aynı olduğu için farkedilmiyor. bunu düzeltince sorun çözüldü. yani makro işini yapıyor. Aslında sorun şudur ; sayfadan çıkınca tüm sutuna yazım düzeni uygulayan bir makro var. bu da TL leri bozuyor ben ikinci makroyla bunu düzeltmeye çalışıyorum. bu kodlarda da değişiklik yapılarak da sorun çözülebilir. kodlarım şudur:
Kod:
Private Sub worksheet_Deactivate()
    Dim Alan As Range, Veri As Range
    Set Alan = Range("B2:B10000")
    For Each Veri In Alan
        If Veri.Value <> "" Then
            Veri.Value = WorksheetFunction.Proper(Veri.Value)
        End If
    Next
    Set Alan = Nothing
    End Sub
@Mdemir63 üstadın kodları sorunu çözüyor ama öğrenme adına yazım düzeni kodlarında nasıl değişiklik yapılabilir. teşekkür ederim.
 

Korhan Ayhan

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

İlk kod sadece mesajınızda bahsettiğiniz durumu çözer. Binlik ayıraç ve küsürat durumunu değiştirmez.

Binlik ayıraç ve küsürat gösterimi için; eğer bu verileri B sütununda siz birleştiriyorsanız birleştirme anında bu dönüşüm yapılabilir. Yok eğer bu hazır bir veri ise ve rakamlar hep sonda ise bu durumda ikinci kod işinize yarayacaktır. Bunun haricinde metnin içindeki rakamları yakalayan forumda REGEXP çözümler var inceleyip kendiniz uyarlayabilirsiniz.

C++:
Option Explicit

Private Sub worksheet_Deactivate()
    Dim Alan As Range, Veri As Range
    Set Alan = Range("B2:B10000")
    For Each Veri In Alan
        If Veri.Value <> "" Then
            Veri.Value = Replace(WorksheetFunction.Proper(Veri.Value), " Tl", " TL")
        End If
    Next
    Set Alan = Nothing
End Sub
C++:
Option Explicit

Private Sub worksheet_Deactivate()
    Dim Alan As Range, Veri As Range
    Dim Kelime As Variant, Metin As String
    Dim Rakam As Variant, X As Byte
    
    Set Alan = Range("B2:B10000")
    
    For Each Veri In Alan
        If Veri.Value <> "" Then
            If InStr(1, Veri.Value, " ") > 0 Then
                Kelime = Split(Veri.Value, " ")
                Rakam = Format(Kelime(UBound(Kelime) - 1), "#,##0.00")
                For X = LBound(Kelime) To UBound(Kelime)
                    If X = UBound(Kelime) - 1 Then
                        Metin = Metin & " " & Rakam
                    Else
                        Metin = Metin & " " & WorksheetFunction.Proper(Kelime(X))
                    End If
                Next
            End If
            Veri.Value = Replace(Metin, " Tl", " TL")
            Metin = ""
        End If
    Next
    
    Set Alan = Nothing
End Sub
 
Katılım
2 Temmuz 2009
Mesajlar
542
Excel Vers. ve Dili
office 2019 Türkçe
Altın Üyelik Bitiş Tarihi
28/12/2022
@Korhan Ayhan üstad ellerinize sağlık. teşekkür ederim. iyi hafta sonu dilerim.
 
Üst