Aynı İsimde Olan Alt Satırları Birleştir

Katılım
19 Eylül 2012
Mesajlar
289
Excel Vers. ve Dili
2010 türkçe
Merhaba değerli üstatlar;
Linkte yer alan ÖRNEK.xlsb isimli dosyada alt alta satırlarda olan isimleri seçerek hücre birleştirmesi yapmak istiyorum. Butona bastığımda alt alta satırlarda olan aynı isimleri bulup o satırları birleştirecek. Bunu makro kodu ile yapmak istiyorum. Olabilirliği mümkün ise yadımcı olacaklara şimdiden teşekkür ederim.

İndir ÖRNEK xlsb (dosya.co)
 
Son düzenleme:
Katılım
20 Haziran 2018
Mesajlar
66
Excel Vers. ve Dili
2019 TR
Merhaba,

Tablonuzu seçip Veri / Yinelenenleri Kaldır ile birleştirmenize gerek kalmadan sade veriyi elde edebilirsiniz.
 
Katılım
19 Eylül 2012
Mesajlar
289
Excel Vers. ve Dili
2010 türkçe
Merhaba,

Tablonuzu seçip Veri / Yinelenenleri Kaldır ile birleştirmenize gerek kalmadan sade veriyi elde edebilirsiniz.
Birleştirme yapmam gerekiyor. Çünkü tabloda aynı kişilerin karşısında farklı veriler yer alıyor
 
Son düzenleme:

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,641
Excel Vers. ve Dili
Pro Plus 2021
Kod:
Sub test()
    Dim i, bas, son, veri
    bas = 0
    Application.DisplayAlerts = False
    For i = 13 To Cells(Rows.Count, "D").End(3).Row
        If veri = Join(WorksheetFunction.Index(Cells(i, "D").Resize(, 3).Value, 0), "_") Then
            If bas = 0 Then
                bas = i: son = i
            Else
                son = i
            End If
        Else
            If son > bas Then
                Range("D" & bas & ":D" & son).Merge
                Range("E" & bas & ":E" & son).Merge
                Range("F" & bas & ":F" & son).Merge
            End If
            veri = Join(WorksheetFunction.Index(Cells(i, "D").Resize(, 3).Value, 0), "_")
            bas = i
        End If
    Next i
    Application.DisplayAlerts = True
End Sub
 
Son düzenleme:
Katılım
20 Haziran 2018
Mesajlar
66
Excel Vers. ve Dili
2019 TR
Merhaba,

Alnternatif, tablonuzun A:C aralığında olduğunu varsayarak

Kod:
Sub MergeIdenticalCells()
Dim ws As Worksheet
Dim lastRow As Long
Dim r As Long
Dim col As Integer
Set ws = ActiveSheet
Application.DisplayAlerts = False
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
For col = 1 To 3
r = 1
While r <= lastRow
If r < lastRow Then
If ws.Cells(r, col).Value = ws.Cells(r + 1, col).Value Then
Dim mergeStart As Long
mergeStart = r
While r < lastRow And ws.Cells(r, col).Value = ws.Cells(r + 1, col).Value
r = r + 1
Wend
ws.Range(ws.Cells(mergeStart, col), ws.Cells(r, col)).Merge
End If
End If
r = r + 1
Wend
Next col
Application.DisplayAlerts = True
End Sub

Deneyiniz.
 
Katılım
19 Eylül 2012
Mesajlar
289
Excel Vers. ve Dili
2010 türkçe
Kod:
Sub test()
    Dim i, bas, son, veri
    bas = 0
    son = 0
    Application.DisplayAlerts = False
    For i = 13 To Cells(Rows.Count, "D").End(3).Row
        If veri = Join(WorksheetFunction.Index(Cells(i, "D").Resize(, 3).Value, 0), "_") Then
            If bas = 0 Then
                bas = i: son = i
            Else
                son = i
            End If
        Else
            veri = Join(WorksheetFunction.Index(Cells(i, "D").Resize(, 3).Value, 0), "_")
            If son > bas Then
                Range("D" & bas & ":D" & son).Merge
                Range("E" & bas & ":E" & son).Merge
                Range("F" & bas & ":F" & son).Merge
            End If
            veri = Join(WorksheetFunction.Index(Cells(i, "D").Resize(, 3).Value, 0), "_")
            bas = i
        End If
    Next i
    Application.DisplayAlerts = True
End Sub
Hocam çok teşekkür ederim tam istediğim sonucu veriyor. Elinize emeğinize sağlık.
 
Katılım
19 Eylül 2012
Mesajlar
289
Excel Vers. ve Dili
2010 türkçe
Kod:
Sub test()
    Dim i, bas, son, veri
    bas = 0
    Application.DisplayAlerts = False
    For i = 13 To Cells(Rows.Count, "D").End(3).Row
        If veri = Join(WorksheetFunction.Index(Cells(i, "D").Resize(, 3).Value, 0), "_") Then
            If bas = 0 Then
                bas = i: son = i
            Else
                son = i
            End If
        Else
            If son > bas Then
                Range("D" & bas & ":D" & son).Merge
                Range("E" & bas & ":E" & son).Merge
                Range("F" & bas & ":F" & son).Merge
            End If
            veri = Join(WorksheetFunction.Index(Cells(i, "D").Resize(, 3).Value, 0), "_")
            bas = i
        End If
    Next i
    Application.DisplayAlerts = True
End Sub

Hocam çok teşekkür ederim. kod tam istediğim gibi fakat, F sütunundaki veriler alt alta aynı değilse birleştirme işlemi yapmıyor.
birde son satırın altında tablo altı bilgileri mevcut ve o satırları da altındaki satırlarla birleştiriyor ama o satırlara dokunmaması gerekiyor. Son olarak sıra noyu birleştirilmiş hücrelerde ardışık sıralayabilir miyiz.
NOT: ÖRNEK DOSYAYI YENİLEDİM
 
Son düzenleme:

RBozkurt

𐱅𐰇𐰼𐰚
Altın Üye
Katılım
10 Ocak 2018
Mesajlar
674
Excel Vers. ve Dili
Microsoft Office 2024
Google Sheets
Altın Üyelik Bitiş Tarihi
19-12-2026
D, E, ve F sütunlarında 3 işlevli verileri sıralama yapın, makro kaydet ile çözersiniz. Arkasına yukarıdaki makroyu çalıştırın.
Tüm hepsi kendi içinde sıralanır ve Birleşmiş olur.
 
Katılım
19 Eylül 2012
Mesajlar
289
Excel Vers. ve Dili
2010 türkçe
RBozkurt hocam bahsi geçen sütunlardaki benzer isimler her ay çoğalabilir ve azabilir. Yani #veyselemre hocamın vermiş olduğu kodda değişiklik yapılarak çözülebilir diye düşünüyorum. Ben bayağı uğraştım ama iyice karıştı.
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,641
Excel Vers. ve Dili
Pro Plus 2021
Kod:
Sub test()
    Dim i, bas, veri, sn
    Application.DisplayAlerts = False
    i = 15
    While IsNumeric(Cells(i, "B").Value) And Cells(i, "B").Value <> ""
        If veri <> Cells(i, "C").Value Then
            sn = sn + 1
            Cells(i, "B").Value = sn
            veri = Cells(i, "C").Value
            bas = i
        Else
            If i > bas And Cells(i + 1, "C").Value <> veri Then
                Range("B" & bas & ":B" & i).Merge
                Range("C" & bas & ":C" & i).Merge
                Range("D" & bas & ":D" & i).Merge
                Range("E" & bas & ":E" & i).Merge
            End If
        End If
        i = i + 1
    Wend
    Application.DisplayAlerts = True
End Sub
 
Katılım
19 Eylül 2012
Mesajlar
289
Excel Vers. ve Dili
2010 türkçe
Kod:
Sub test()
    Dim i, bas, veri, sn
    Application.DisplayAlerts = False
    i = 15
    While IsNumeric(Cells(i, "B").Value) And Cells(i, "B").Value <> ""
        If veri <> Cells(i, "C").Value Then
            sn = sn + 1
            Cells(i, "B").Value = sn
            veri = Cells(i, "C").Value
            bas = i
        Else
            If i > bas And Cells(i + 1, "C").Value <> veri Then
                Range("B" & bas & ":B" & i).Merge
                Range("C" & bas & ":C" & i).Merge
                Range("D" & bas & ":D" & i).Merge
                Range("E" & bas & ":E" & i).Merge
            End If
        End If
        i = i + 1
    Wend
    Application.DisplayAlerts = True
End Sub
veyselemre hocam kod tam istediğim gibi çalışıyor. Ne kadar teşekkür etsem azdır. Allah senden razı olsun.
 
Üst