• DİKKAT

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

Makro Kodunu Çoğaltma - Hücre Sayılarının Arttırımı

Katılım
14 Aralık 2012
Mesajlar
4
Excel Vers. ve Dili
2010 TR
Merhabalar. Öncelikle elimde şöyle bir kod var:
Kod:
Cells.Replace What:=Range("a2").Value, Replacement:=Range("b2").Value, LookAt:=xlPart, _
SearchOrder:=xlByColumns, MatchCase:=False, SearchFormat:=True, _
ReplaceFormat:=False

Görüldüğü üzere orada a2 ve b2 hücre değerleri yer alıyor. Bunun a3-b3, a4-b4 diye a1465-b1465'e kadar gitmesi gerekiyor.

Şu şekilde:

Kod:
Sub bilmemne()
Cells.Replace What:=Range("a2").Value, Replacement:=Range("b2").Value, LookAt:=xlPart, _
SearchOrder:=xlByColumns, MatchCase:=False, SearchFormat:=True, _
ReplaceFormat:=False


Cells.Replace What:=Range("a3").Value, Replacement:=Range("b3").Value, LookAt:=xlPart, _
SearchOrder:=xlByColumns, MatchCase:=False, SearchFormat:=True, _
ReplaceFormat:=False

.
.
.

Cells.Replace What:=Range("a1465").Value, Replacement:=Range("b1465").Value, LookAt:=xlPart, _
SearchOrder:=xlByColumns, MatchCase:=False, SearchFormat:=True, _
ReplaceFormat:=False
End Sub

Şöyle bir konu buldum: http://www.excel.web.tr/f48/kod-cooaltma-t117336.html
Ama maalesef makro bilgim olmadığından dolayı oradaki işlemin nasıl uygulanacağını anlamadım. O yüzden vereceğim zahmetten dolayı şimdiden kusura bakmayın.
 
Merhaba,

Döngü kurulabilir, yalnız çoğaltmanın dışında kodun amacı nedir, daha doğrusu siz sayfada neyi değiştirmek istiyorsunuz. Yapmak istediğinizi bir mantığa sığdıramadım. Kodu bir kenara bırakarak dosyadaki yapmak istediğinizi açıklar mısınız.
 
Açıklayayım;
Elimde 28.000 satırlık bir dosya var. İngilizce cümleler. Bunlardan çoğu tekrarlıyor. Örnek olarak "Die!" cümlesi 40 defa geçiyor, vs. vs. Ben de bu tekrarlayan cümleleri filtreden geçirip her cümleden bir tane bıraktım ve bu filtreden çıkan 1464 cümleyi yeni bir excel sayfasında A2'den A1465'e kadar koydum. A sütununda İngilizce cümleler olacakken, hemen yanında B sütununda da Türkçe cümleler bulunacak. Çeviri burada yapılacak. Ardından bu 1400 küsürlük cümleleri bu hazırlayacağım komut ile 28.000 satırlık dosyadaki satırlara bir nevi "Bul ve Değiştir" komutu uygulatarak değiştireceğim.
A2'de yer alan cümleyi 28.000 satır arasında bulup B2'deki çevrilmiş cümleyi yerine koyacak.

Özet olarak, ben "Bul ve Değiştir" işlemini 1400 defa tek tek yapmak yerine A sütununa Aranacak değeri B sütununa da Yeni Değeri yazacağım ve bu kod sayesinde de tek seferde değiştireceğim.
 
Bu şekilde deneyin.
Sayfa1 2. satırdan A sütunundaki son satıra kadar döngü kurar, ve bu değerleri Sayfa2 de arayıp karşılığını Sayfa1 B sütunu ile değiştirir.

Kod:
Sub Degistir()
 
    Dim S1 As Worksheet, S2 As Worksheet, i As Long
 
    Set S1 = Sheets("Sayfa1") 'data sayfanızın adı
    Set S2 = Sheets("Sayfa2") 'verilerin değişeceği sayfa adı
    
    Application.ScreenUpdating = False
    
    For i = 2 To S1.Cells(Rows.Count, "A").End(xlUp).Row
        S2.Cells.Replace S1.Cells(i, "A"), S1.Cells(i, "B")
    Next i
    
    Application.ScreenUpdating = True
    
End Sub
 
İlgilendiğiniz için teşekkür ederim, uğraştırmak istemesem de her şeyi dediğiniz gibi yapsam da şu hatayı alıyorum:
Kod:
Run-time error '13':
Type mismatch
Debug butonuna bastığımda da kod içerisindeki şu satırı işaretliyor:

"S2.Cells.Replace S1.Cells(i, "A"), S1.Cells(i, "B")"

Maalesef sorunun tam olarak neden kaynaklandığını anlayamadım.
 
İlgilendiğiniz için teşekkür ederim, uğraştırmak istemesem de her şeyi dediğiniz gibi yapsam da şu hatayı alıyorum:
Kod:
Run-time error '13':
Type mismatch
Debug butonuna bastığımda da kod içerisindeki şu satırı işaretliyor:

"S2.Cells.Replace S1.Cells(i, "A"), S1.Cells(i, "B")"

Maalesef sorunun tam olarak neden kaynaklandığını anlayamadım.

Sayfa isimlerini kendinize göre uyarladınız mı?
Bu hatayı aldığınız dosyayı eklermisiniz.
 
Gerek kalmadı, sorunu tespit ettim. 1400'lük listemde uzun bir satıra denk gelince bu hatayı veriyordu. O satırları kaldırınca gayet de güzel şekilde çalıştı. Yardımınız için çok teşekkür ederim.
 
Geri
Üst