Benzer verileri tek satırda toplamak

Katılım
16 Mart 2007
Mesajlar
46
Excel Vers. ve Dili
2013
Altın Üyelik Bitiş Tarihi
13.12.2022
Merhaba aşağıdaki resimde olduğu gibi bir tablo var, yardımcı olabilir misiniz.

1540080492891.png
 

muygun

Özel Üye
Katılım
6 Temmuz 2004
Mesajlar
9,182
Excel Vers. ve Dili
Excel-2003 Türkçe
Merhaba;
Örnek dosya ekleyin yada;
Sayfanın kod bölümüne;

Kod:
Sub analiz()
Application.ScreenUpdating = False
On Error Resume Next
sat = 1
Range("c1:d65536").ClearContents
For i = 1 To Range("A65536").End(xlUp).Row
If WorksheetFunction.CountIf(Range("a1:a" & i), Cells(i, "a")) = 1 Then
Cells(sat, "c") = Cells(i, 1)
sat = sat + 1
End If
Next i
For i = 1 To Range("c65536").End(xlUp).Row
For k = 1 To Range("a65536").End(xlUp).Row
If Cells(i, "c") = Cells(k, "a") Then
If Cells(i, "d") <> "" Then
Cells(i, "d") = Cells(i, "d") & ", " & Cells(k, "b")
End If
If Cells(i, "d") = "" Then
Cells(i, "d") = Cells(k, "b")
End If
End If
Next k
Next i
Application.ScreenUpdating = True
MsgBox "İşlem TAMAM.", vbInformation
End Sub
Kodlarını yerleştirin ve bir butona bağlayarak çalıştırın.
İyi çalışmalar.
 
Katılım
16 Mart 2007
Mesajlar
46
Excel Vers. ve Dili
2013
Altın Üyelik Bitiş Tarihi
13.12.2022
Ben denedim ama olmadı dosya ektedir bide siz dener misiniz.

Ben ilk mesajımda verdiğim resimdeki gibi olması istiyorum.
 

Ekli dosyalar

muygun

Özel Üye
Katılım
6 Temmuz 2004
Mesajlar
9,182
Excel Vers. ve Dili
Excel-2003 Türkçe
Merhaba;
Eki deneyin.
İyi çalışmalar.

Not: veri çokluğuna ve pc nizin performansına göre işlem uzun sürebilir. İşlem bitti uyarısına kadar bekleyin.
Ayrıca verilerinizin miktarı değişken olabileceğini varsayarak ben verinin altına değil yan tarafta tasnifledim. Gerekli görürseniz kopyala-yapıştır ile istediğiniz alana taşırsınız.
 

Ekli dosyalar

Katılım
16 Mart 2007
Mesajlar
46
Excel Vers. ve Dili
2013
Altın Üyelik Bitiş Tarihi
13.12.2022
yok ben bi türlü yapamadım..

yani sizin verdiğiniz dosyada kodu çalıştırıyorum ama sonuç benim istediğim gibi olmuyor yani ilk mesajımda resimde gösterdiğim şekilde bir sonuç alamıyorum
 

Ö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.

Aşağıdaki kod'u kullanabilirsiniz.
NOT: Gerçek belgedeki verilerinizin de örnek belgedeki gibi 1'inci satırdan başladığını varsaydım.
Rich (BB code):
Sub BARAN()
son = Cells(Rows.Count, 1).End(3).Row
For sat = 1 To son
    If WorksheetFunction.CountIf(Range("A1:A" & sat), Cells(sat, 1)) = 1 Then
        For satt = sat + 1 To son
            If Cells(sat, 1) = Cells(satt, 1) Then
                Cells(sat, 2) = Cells(sat, 2) & ", " & Cells(satt, 2)
                Range("A" & satt & ":B" & satt).Delete Shift:=xlUp
                satt = satt - 1
                If Cells(Rows.Count, 1).End(3).Row = satt Then GoTo 10
            Else: Exit For: End If
        Next: End If: Next
10: Columns("A:B").AutoFit
MsgBox "İşlem tamamlandı.", vbInformation, "..:: Ömer BARAN ::.."
End Sub
 
Katılım
16 Mart 2007
Mesajlar
46
Excel Vers. ve Dili
2013
Altın Üyelik Bitiş Tarihi
13.12.2022
Merhaba.

Aşağıdaki kod'u kullanabilirsiniz.
NOT: Gerçek belgedeki verilerinizin de örnek belgedeki gibi 1'inci satırdan başladığını varsaydım.
Rich (BB code):
Sub BARAN()
son = Cells(Rows.Count, 1).End(3).Row
For sat = 1 To son
    If WorksheetFunction.CountIf(Range("A1:A" & sat), Cells(sat, 1)) = 1 Then
        For satt = sat + 1 To son
            If Cells(sat, 1) = Cells(satt, 1) Then
                Cells(sat, 2) = Cells(sat, 2) & ", " & Cells(satt, 2)
                Range("A" & satt & ":B" & satt).Delete Shift:=xlUp
                satt = satt - 1
                If Cells(Rows.Count, 1).End(3).Row = satt Then GoTo 10
            Else: Exit For: End If
        Next: End If: Next
10: Columns("A:B").AutoFit
MsgBox "İşlem tamamlandı.", vbInformation, "..:: Ömer BARAN ::.."
End Sub
oldu teşekkürler
 

Korhan Ayhan

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

Biraz daha hızlı sonuç verir.

"Rapor" isimli sayfada verileriniz listelenir.

Kod:
Sub Listele()
    Dim S1 As Worksheet, X As Long, Son As Long
    Dim Satir As Long, Son_Satir As Long, Zaman As Double
    
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    
    Zaman = Timer
    
    Set S1 = Sheets("Sheet1")
    
    S1.Range("C:D").EntireColumn.ClearContents
    
    Son = S1.Cells(S1.Rows.Count, 1).End(3).Row
    Satir = 1
    
    On Error Resume Next
    Application.DisplayAlerts = False
    Sheets("Rapor").Delete
    Application.DisplayAlerts = True
    On Error GoTo 0
    
    Sheets.Add
    Set S2 = ActiveSheet
    S2.Name = "Rapor"
    
    For X = 1 To Son
        If S1.Cells(X, 1) <> "" Then
            Son_Satir = Evaluate("=LOOKUP(2,1/('" & S1.Name & "'!A1:A" & Son & "=""" & S1.Cells(X, 1) & """),ROW('" & S1.Name & "'!A1:A" & Son & "))")
            If Son_Satir - X = 0 Then
                S2.Cells(Satir, 1) = S1.Cells(X, 1)
                S2.Cells(Satir, 2) = S1.Cells(X, 2)
            Else
                S2.Cells(Satir, 1) = S1.Cells(X, 1)
                S2.Cells(Satir, 2) = Join(Application.Transpose(S1.Range("B" & X & ":B" & Son_Satir)), ", ")
            End If
            Satir = Satir + 1
            X = Son_Satir
        End If
    Next

    S2.Range("A:B").EntireColumn.AutoFit

    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
    
    MsgBox "İşleminiz tamamlanmıştır." & Chr(10) & Chr(10) & "İşlem süresi ; " & Format(Timer - Zaman, "0.00000"), vbInformation
End Sub
 
Üst