CTRL + H Makro ile nasıl yazılır?

Katılım
1 Aralık 2010
Mesajlar
313
Excel Vers. ve Dili
Office 2010
Arkadaşlar merhaba

Boş bir çalışma kitabına yeni bir kod yazmak istiyorum.

Daha önce oluşturulmuş olan farklı bir sayfada c kolonunu seçmelidir. Daha sonra sırası ile cadde yerine cd. sokak yerine sk. ve benzeri şekilde uzatarak devam etmesini istiyorum.

REPLACE kodunu nasıl kullanabilirim?
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Merhaba.
Sanırım böyle bir şey istiyorsunuz.

B sütununa veri yazıldıkça C sütunundaki değerler D sütunundakilerle değiştirilir.
 

Ekli dosyalar

Katılım
6 Temmuz 2015
Mesajlar
926
Excel Vers. ve Dili
2003
Makro kaydet yöntemini kullanarak işleminizi gerçekleştirebilirsiniz.

Makro kaydet dedikten sonra,

- İlgili sayfayı seçin

- İlgili sütunu seçin

- Ctrl+H yapın ve değişecek değerlerinizi girin "Cadde'yi Cd. gibi". Tamam diyerek değişmesini sağlayınız. Bu işlemi değişmesini istediğiniz tüm değerler için gerçekleştirin.

- İşiniz bittikten sonra, bir hücre seçin (Sütunun seçili kalmasından kurtulmak için. Zira sütun seçili kalırsa, sonraki yazacağınız kodlarda hatalı işleme sebep olabilir.)

- Makro kaydetten çıkın. Kod bölümündeki kodu alarak istediğiniz modül veya kod içine ekleyebilirsiniz.
 
Katılım
1 Aralık 2010
Mesajlar
313
Excel Vers. ve Dili
Office 2010
Makro kaydet yöntemini kullanarak işleminizi gerçekleştirebilirsiniz.
Merhaba

omer.baran ve size çok teşekkür ederim.

Makro kaydet yöntemi ile yaptım. Aşağıdaki gibi karmakarışık bir kod dizilişi ortaya çıktı. Bunu biraz daha sadeleştirmek istiyorum.

omer.baran dediği yöntem ise farklı bir kolonda işlem yapılmasına olanak sağlıyor.

Farklı bir çalşma kitabında daha sade kodlar kullanarak nasıl yapabilirim?


Kod:
Sub Adres_1()
'
' Adres_1 Makro
'

'
    Windows("Cari.xlsx").Activate
    Columns("C:C").Select
    Selection.Replace What:="ŞTİ", Replacement:="ŞTİ.", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.Replace What:="ŞTİ. ", Replacement:="ŞTİ.", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.Replace What:="TİCARET", Replacement:="TİC.", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.Replace What:="SANAYİ", Replacement:="SAN.", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.Replace What:="LİMİTED", Replacement:="LTD.", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.Replace What:="LTD", Replacement:="LTD.", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.Replace What:="TURİZM", Replacement:="TUR.", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Columns("D:D").Select
    Selection.Replace What:="MAHALLESİ", Replacement:="MH.", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.Replace What:="MH", Replacement:="MH.", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.Replace What:="SK", Replacement:="SK.", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Windows("Kitap1").Activate
End Sub
 
Katılım
6 Temmuz 2015
Mesajlar
926
Excel Vers. ve Dili
2003
Şu an müsait olmadığından yardımcı olamıyorum. O ana kadar cevap veren olmaz ise yardımcı olmaya çalışacağım inş
 

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,184
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
Merhaba,

Bu şekilde deneyin. Aynı mantıkla ölçütleri ilave edebilirsiniz.

Kod:
Sub Degistir()
 
    Dim eski, yeni, i As Byte
 
    eski = Array("Cadde", "Sokak", "Mahalle") 'aranan değerler
    yeni = Array("Cd.", "Sok.", "Mah.") 'yerine gelecek değerler
    
    For i = 0 To UBound(eski)
        Range("C:C").Replace eski(i), yeni(i)
    Next i

End Sub
.
 
Katılım
1 Aralık 2010
Mesajlar
313
Excel Vers. ve Dili
Office 2010
Bu şekilde deneyin. Aynı mantıkla ölçütleri ilave edebilirsiniz.
Aradığım buydu. Çok çok teşekkür ederim.

Siz c kolonu için yazmışsınız. Aynı kodlar içerisinde b kolonuna da ilave etmek mümkün müdür?

B kolonunda da "LİMİTED, LTD. ŞİRKETİ, ŞTİ." ve benzeri şekilde devam edecektir.

Kolay gelsin.
 
Katılım
1 Aralık 2010
Mesajlar
313
Excel Vers. ve Dili
Office 2010
Son bir not daha ilave etmek istiyorum.

Mesela: Aranan sokak için 7 farklı değişken oldu ise (SOK. - SOK - SOKA - SKKA) aynı şekilde de altında da aynı hizada 7 aynı gelecek değer (SK.) şeklinde mi gitmelidir?
 
Katılım
6 Temmuz 2015
Mesajlar
926
Excel Vers. ve Dili
2003
Şu şekilde deneyiniz.

Kod:
Sub Degistir()
 
    Dim eski, yeni, i As Byte
 
    eski = Array("Cadde", "Sokak", "Ska", "Skka", "Sokk", "Mahalle") 'aranan değerler
    yeni = Array("Cd.", "Sok.", "Sok.", "Sok.", "Sok.", "Mah.") 'yerine gelecek değerler
'Evet, eski yeni aynı sayıda olmalı.
    
    For i = 0 To UBound(eski)
        Range("B:C").Replace eski(i), yeni(i) '(B:C) arama yapılacak sütunlar
    Next i

End Sub
 
Katılım
1 Aralık 2010
Mesajlar
313
Excel Vers. ve Dili
Office 2010
Şu şekilde deneyiniz.
Merhaba,

Tam anlatamadım kusura bakmayın.

C Kolonunda adres bilgileri var. Bunları doğruları ile değiştiriyoruz. Problem yok.

B kolonunda da şirket ünvanları var. Bunları da (ŞİRKETİ - ŞTİ, TİCARET - TİC) ve benzeri şekilde değiştireceğiz. Bu B kolonunu da yukarıdaki makronun içerisine nasıl gömebiliriz?

Ayrıca Aranan için 7 farklı değişken oldu ise aynı şekilde de altında da aynı hizada 7 aynı gelecek değer şeklinde mi gitmelidir?

İlginiz için teşekkür ederim.
 
Katılım
6 Temmuz 2015
Mesajlar
926
Excel Vers. ve Dili
2003
Ayrıca Aranan için 7 farklı değişken oldu ise aynı şekilde de altında da aynı hizada 7 aynı gelecek değer şeklinde mi gitmelidir?
Evet, eski ile yeni içindeki değerler aynı sayıda ve hizada olmalıdır.

Aşağıdaki şekilde deneyiniz.

Kod:
Sub Degistir()
    Dim eski, yeni, i As Byte
    eski = Array("Cadde", "ŞİRKETİ", "ŞİRKET", "TİCARET", "TCARET", "Sokak", "Ska", "Skka", "Sokk", "Mahalle") 'aranan değerler
    yeni = Array("Cd.", "ŞTİ.", "ŞTİ.", "TİC.", "TİC.", "Sok.", "Sok.", "Sok.", "Sok.", "Mah.") 'yerine gelecek değerler
    'ESKİ ile YENİ değişkenlerindeki değerler aynı sıra ve sayıda olmalılar.

    For i = 0 To UBound(eski)
        Range("B:C").Replace eski(i), yeni(i) 'ARAMA YAPILACAK KOLONLAR (B:C) 
    Next i
End Sub
 
Son düzenleme:
Katılım
6 Temmuz 2015
Mesajlar
926
Excel Vers. ve Dili
2003
Rica ederim ama teşekkürü bizden çok Ömer hocamız hak ediyor. Biz sadece onun kodlaması üzerinden yardımcı olabildik.
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Merhaba.

İhtiyaç duyduğunuzda kullanabilmeniz için ekteki belgeyi inceleyiniz.

Yeni düzeltmelere ihtiyaç duyduğunuzda, kodda değişikliğe gerek olmadan kullanabilirsiniz.

Daha esnek kullanım imkanı olduğunu düşünüyorum.
 

Ekli dosyalar

Korhan Ayhan

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

Arkadaşlar dizi tanımlamalarının eşit olması gerektiğini belirtmişler. Böyle bir zorunluluk yoktur. Aşağıdaki gibi döngü sayısını arttırıp işlem yapabilirsiniz.

Kod:
Sub Degistir()
 
    Dim eski, yeni, i As Byte
 
    eski = Array("Ska", "Skka", "Sokk")
    yeni = "Sok."
    
    For i = 0 To UBound(eski)
        Range("C:C").Replace eski(i), yeni
    Next i

    eski = Array("Mah", "Mahalle", "Mh")
    yeni = "Mah."
    
    For i = 0 To UBound(eski)
        Range("C:C").Replace eski(i), yeni
    Next i

    eski = Array("Limited", "LTD", "Ltd")
    yeni = "Lmt."
    
    For i = 0 To UBound(eski)
        Range("B:B").Replace eski(i), yeni
    Next i
End Sub
 
Katılım
1 Aralık 2010
Mesajlar
313
Excel Vers. ve Dili
Office 2010
Merhaba.

İhtiyaç duyduğunuzda kullanabilmeniz için ekteki belgeyi inceleyiniz.
Merhaba, Üzerinde biraz çalışılması gerekiyor. İlginiz için teşekkür ederim.

Aşağıdaki gibi döngü sayısını arttırıp işlem yapabilirsiniz.
Bu çok daha sağlıklı ve hızlı oldu. Günlük iş yükümü oldukça kısalttı. Yardımınız için teşekkür ederim.
 
Üst