• DİKKAT

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

Çözüldü Verileri Yan Yana Sıralama

Katılım
13 Kasım 2009
Mesajlar
337
Excel Vers. ve Dili
Ofis 2016 TR 64 Bit
=ConCat(",";A1:B100) formülünu kullanıyorum, formül a1 b100 arası verileri aralarına virgül koyarak yan yana sıralıyor. Bu formülü makro ile yapmak istiyorum.

Teşekkürler.
 
Merhaba,

Sorunuz eksik. ConCat excel'in yerleşik fonksiyonlarından biri değil.
Concat KTF'dir. KTF'yi incelerseniz makro kodunu'da görürsünüz.
 
Hangi sheet içinde bu işlemi yapacaksan vba düzeneğinde o sheet içerisindeki kod düzeneğine aşağıdaki kodları yerleştirin.

Kod:
Sub concatAG()
Dim rng As Range
Dim arrVals
 
    Set rng = Range("A1")
 
    While rng.Value <> ""
        arrVals = rng.Resize(, 2)
 
        arrVals = Application.Transpose(arrVals)
        arrVals = Application.Transpose(arrVals)
        rng.Offset(, 3) = Join(arrVals, ",")
 
        Set rng = rng.Offset(1)
    Wend
 
End Sub
 
merhaba sayın u.L.a.s kodu denedim, sayıları yanlarına virgül koyup alt alta sıralıyor. a sütünundaki sayıları virgül koyup c1 e yan yana sıralamasını istiyorum.
 

Ekli dosyalar

Merhaba,

Aşağıdaki kodu kullanabilirsiniz.

=birles(A1:A10;",")

Kod:
Function birles(hucre As Range, Optional imlec As String = "") As String

For Each alan In hucre

If alan = "" Then
Else
k = k & alan & imlec
End If
Next alan

If imlec = "" Then
birles = k
Else
birles = VBA.Left(k, VBA.Len(k) - 1)
End If
End Function
 
Function u nasıl çalıştırıcaz yapamadım sanırım hata verdi.
 
eklediğin dosyayı ben indiremiyorum.

a1 de diyelimki 12 var b1 de 23 var bu makro kod c1 e 12,23 olarak veriyi yazar senin istediğin bu şekilde değil miydi?
 
a1=12
a2=13
a3=14
.
.
.
Sonuç C1 > 12,13,14 olması gerekiyor. A sütünuna yazılanların hepsini C1 de yan yana sıramalası gerelir. İlk mesajımda yazdığım formül a ve b sütünuna yazılanları yan yana soralıyor yine tek hücrede
 
aşağıdaki kod düzeneğini yerleştirin.

Kod:
Option Explicit

Sub concatAG()
Dim rng As Range
Dim arrVals

    Set rng = Range("A1")

    While rng.Value <> ""
        arrVals = rng.Resize(, 2)

        arrVals = Application.Transpose(arrVals)
        arrVals = Application.Transpose(arrVals)
        rng.Offset(, 2) = Join(arrVals, ",")

        Set rng = rng.Offset(1)
    Wend

End Sub
 
Aynı sonucu verdi. Sanırım anlatamadım. 1.JPG
Resimdeki gibi bir sonuç elde etmeye çalışıyorum. İlk mesajdaki formül bunu yapıyor.
 
evet en başından beri çok farklı durumlar algıladım. örnek dosyayı göremedim birde.
aşağıdaki kod düzeneğini deneyeceksiniz o zaman

Kod:
Sub HucreDegerBirlestir()
    Dim xRng As Range, cll As Range
    Dim xStr As String
    Set xRng = Range("A:A").SpecialCells(xlCellTypeConstants, 23)
    If xRng.Count = 0 Then
        MsgBox "Dolu Hücre yok"
    End If
    For Each cll In xRng
        xStr = xStr & IIf(Len(xStr) = 0, "", ",") & cll.Value
    Next
    Range("C1").Value = xStr
End Sub
 
Evet bu çok teşekkür ederim, biraz uğraştırdım sizi de...
 
Option Explicit
Sub BİRLEŞTİR()
Dim X As Integer
Range("C1").ClearContents
For X = 1 To Cells(Rows.Count, "A").End(3).Row
If Cells(X, "A") <> "" Then
Range("C1") = Range("C1") & "," & Cells(X, "A")
End If
Next
MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub
 
Geri
Üst