• DİKKAT

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

A sütunundaki ile B sütunundaki ad soyadı C sütununda bir boşlukla birleştirme

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,903
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Merhaba Arkadaşlar,
Kod:
Sub AdBirlestir()
    Dim Son As Long, x As Long
    Son = Cells(Rows.Count, "A").End(3).Row
        For x = 1 To Son
            Cells(x, 3) = Application.Proper(Cells(x, 1)) & " " & Cells(x, 2)
        Next x
End Sub
A sütunundaki ile B sütunundaki ad soyadı C sütununda bir boşlukla birleştirme makrosunu da hızlandırmak mümkün olur mu?
Saygılarımla
 
Denemeden cevaplıyorum.
C++:
Sub AdBirlestir()
    Dim Son As Long, x As Long
    Son = Cells(Rows.Count, "A").End(3).Row
    Dizi = Range("A1:B" & Son).Value
    ReDim Liste(1 To UBound(Dizi), 1 To 1)
    For x = 1 To UBound(Dizi)
            Liste(x) = Dizi(i, 1) & " " & Dizi(i, 2)
    Next x
    Range("C1").Resize(UBound(Dizi)) = Liste
End Sub
 
Sayın Ömer faruk Hocam,
Hata var galiba
i yerine x koyunca yine aynı satırda hata veriyor
Saygılarımla
 

Ekli dosyalar

  • Adsız1.png
    Adsız1.png
    13.8 KB · Görüntüleme: 3
  • Adsız2.png
    Adsız2.png
    7.8 KB · Görüntüleme: 3
Alternatif
Benim bilgisayarda 30.000 satırda sizin kodunuz 2,06 saniye, aşağıdaki kod ise 0,22 saniyede işlemi bitirdi.
C++:
Sub AdBirlestir()
myTime = Timer
    ss = Cells(Rows.Count, "A").End(3).Row
    myArr1 = Sayfa1.Range("A1:A" & ss)
    myArr2 = Sayfa1.Range("B1:B" & ss)
Set myList = CreateObject("System.Collections.ArrayList")
    For i = 1 To UBound(myArr1)
       myList.Add myArr1(i, 1) & " " & myArr2(i, 1)
    Next
    Range("C1").Resize(myList.Count, 1).Value = WorksheetFunction.Transpose(myList.toArray)
 
    MsgBox "Görev  tamamlandı." & vbCrLf & "İYİ YILLAR" & vbCrLf & _
               "İşlem süresi ; " & Format(Timer - myTime, "0.00") & " Saniye", vbInformation, "BİLGİ"
End Sub

Not: Sayın @ÖmerFaruk hocamın kodundaki Liste(x) = Dizi(i, 1) & " " & Dizi(i, 2) satırını Liste(x, 1) = Dizi(x, 1) & " " & Dizi(x, 2) satırı ile değiştirerek dener misiniz? Benim koddan daha hızlı çalışıyor.30.000 satırda 0,06 saniye
 
Son düzenleme:
Merhaba Sayın dEdE,
İlginize teşekkür ederim.
Notunuzu 3. mesajda denediğimi yazmıştım. Sizin makroda da ekli resimlerdekiler oldu.
Saygılarımla
 

Ekli dosyalar

  • Adsız3.png
    Adsız3.png
    5.3 KB · Görüntüleme: 3
  • Adsız4.png
    Adsız4.png
    14.9 KB · Görüntüleme: 3
Merhaba,
"...Notunuzu 3. mesajda denediğimi yazmıştım. ..." i yerine x koymak yetmez. Dikkatle incelerseniz küçük bir ek daha var.
Liste(x, 1) = Dizi(x, 1) & " " & Dizi(x, 2)
Benim yazdığım kodun çalışması için .Net Formwork 3.5 in bilgisayarınızda yüklü olması gerekir.
Sayın @ÖmerFaruk hocamın kodu daha hızlı onu kullanmanızı öneririm.
 
Merhaba.
Bakalım bir de bu kodları deneyin.

Kod:
Sub Makro2()
    
Dim i As Long
Dim arr As Variant

i = Cells(Rows.Count, "A").End(3).Row

arr = Range("A1:B" & i).Value

For i = 1 To UBound(arr, 1)
    arr(i, 1) = Application.WorksheetFunction.Proper(arr(i, 1) & " " & arr(i, 2))
Next i

Range("C1").Resize(UBound(arr, 1), 1) = arr

End Sub
 
Son düzenleme:
Sayın Necdet Hocam,
Sorunsuz çalıştı. İlginize teşekkür ederim. Soyad büyükharf kalsa daha harika olurdu. Buna da birazdan bakacağım
Diğer makroların çalışmama nedenlerini anlayamadım. Umarım onları da bulurum.
Saygılarımla
 
Sayın Necdet Hocam,
Sorunsuz çalıştı. İlginize teşekkür ederim. Soyad büyükharf kalsa daha harika olurdu. Buna da birazdan bakacağım
Diğer makroların çalışmama nedenlerini anlayamadım. Umarım onları da bulurum.
Saygılarımla

Ben yanlış anlamışım, siz sizin kodunuza göre ayarlayabilirsiniz. Ben hem adı hem de soyadını Proper yapıldı diye görmüşüm. :)
 
Rica ederim Sayın Hocam,
Saygılarımla
 
Geri
Üst