EXCEL yinelenenleri tespit etme

Katılım
18 Kasım 2024
Mesajlar
11
Excel Vers. ve Dili
excel 13 - türkçe
merhabalar,

elimde neredeyse ortalama 40ar bin satır 2 sütundan oluşan 10 farklı dosya var. hem kendi içlerinde hem de dosyalar arasında yinelenen var mı kontrol edip, yinelenenleri listelemem gerekiyor. desteklerinizi rica ederim :(
 

tugkan

Altın Üye
Katılım
6 Kasım 2004
Mesajlar
477
Excel Vers. ve Dili
Excel 2016
Türkçe 64 BIT
Altın Üyelik Bitiş Tarihi
16-10-2025
Merhaba,
Bu işlem için Excel'de VBA kullanarak bir makro oluşturabiliriz. Bu makro, dosyalardaki verileri birleştirir, hem kendi içlerinde hem de diğer dosyalara kıyasla yinelenenleri kontrol eder ve sonucunu liste halinde döker.

Genel Yaklaşım:
  1. Dosyaları birleştirme: Tüm dosyaları tek bir çalışma kitabına toplarız.
  2. Yinelenenleri kontrol etme: Veriler arasında tekrar eden satırları belirleriz.
  3. Sonuçları listeleme: Tespit edilen yinelenenleri yeni bir çalışma sayfasında gösteririz.
Kod Örneği:
Aşağıdaki VBA kodunu kullanarak işlemi gerçekleştirebilirsiniz:

  1. Tüm dosyaları bir klasöre koyun (örneğin: C:\Dosyalar).
  2. Aşağıdaki VBA kodunu çalıştırın:
Kod:
Sub YinelenenleriBul()
    Dim DosyaYolu As String
    Dim DosyaAdı As String
    Dim BirleştirilenVeriler As Collection
    Dim ws As Worksheet
    Dim Satır As Long, i As Long, j As Long
    Dim BulunanYineleme As Collection
    Dim Bulundu As Boolean
    Dim Liste As String

    ' Dosyaların bulunduğu klasör
    DosyaYolu = "C:\Dosyalar\"
    
    ' Koleksiyonları başlat
    Set BirleştirilenVeriler = New Collection
    Set BulunanYineleme = New Collection

    ' Dosyaları sırayla aç
    DosyaAdı = Dir(DosyaYolu & "*.xlsx")
    Do While DosyaAdı <> ""
        Workbooks.Open DosyaYolu & DosyaAdı
        For Each ws In ActiveWorkbook.Sheets
            With ws
                For Satır = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
                    On Error Resume Next
                    Dim Veri As String
                    Veri = .Cells(Satır, 1).Value & "|" & .Cells(Satır, 2).Value
                    Err.Clear
                    BirleştirilenVeriler.Add Veri, CStr(Veri)
                    If Err.Number > 0 Then
                        ' Yinelenen varsa ekle
                        BulunanYineleme.Add Veri, CStr(Veri)
                    End If
                    On Error GoTo 0
                Next Satır
            End With
        Next ws
        ActiveWorkbook.Close SaveChanges:=False
        DosyaAdı = Dir
    Loop

    ' Sonuçları listeleme
    Worksheets.Add
    ActiveSheet.Name = "Yinelenenler"
    i = 1
    For Each Liste In BulunanYineleme
        Cells(i, 1).Value = Split(Liste, "|")(0) ' Sütun 1
        Cells(i, 2).Value = Split(Liste, "|")(1) ' Sütun 2
        i = i + 1
    Next Liste

    MsgBox "İşlem tamamlandı. Yinelenen veriler 'Yinelenenler' sayfasına yazıldı.", vbInformation
End Sub
Kullanım Adımları:
  1. Makro etkinleştirme: Dosyanızda makroları etkinleştirin ve VBA düzenleyicisini (Alt + F11) açın.
  2. Modül ekleme: VBA düzenleyicisinde yeni bir modül ekleyin ve yukarıdaki kodu yapıştırın.
  3. Dosya yolu kontrolü: DosyaYolu değişkenine dosyaların bulunduğu klasör yolunu girin.
  4. Makroyu çalıştırma: VBA ekranından F5 tuşuna basarak makroyu çalıştırın.
Çıktı:
Makro, yinelenen verileri yeni bir çalışma sayfasına (adı: Yinelenenler) yazacaktır.
 
Katılım
18 Kasım 2024
Mesajlar
11
Excel Vers. ve Dili
excel 13 - türkçe
Merhaba,
Bu işlem için Excel'de VBA kullanarak bir makro oluşturabiliriz. Bu makro, dosyalardaki verileri birleştirir, hem kendi içlerinde hem de diğer dosyalara kıyasla yinelenenleri kontrol eder ve sonucunu liste halinde döker.

Genel Yaklaşım:
  1. Dosyaları birleştirme: Tüm dosyaları tek bir çalışma kitabına toplarız.
  2. Yinelenenleri kontrol etme: Veriler arasında tekrar eden satırları belirleriz.
  3. Sonuçları listeleme: Tespit edilen yinelenenleri yeni bir çalışma sayfasında gösteririz.
Kod Örneği:
Aşağıdaki VBA kodunu kullanarak işlemi gerçekleştirebilirsiniz:

  1. Tüm dosyaları bir klasöre koyun (örneğin: C:\Dosyalar).
  2. Aşağıdaki VBA kodunu çalıştırın:
Kod:
Sub YinelenenleriBul()
    Dim DosyaYolu As String
    Dim DosyaAdı As String
    Dim BirleştirilenVeriler As Collection
    Dim ws As Worksheet
    Dim Satır As Long, i As Long, j As Long
    Dim BulunanYineleme As Collection
    Dim Bulundu As Boolean
    Dim Liste As String

    ' Dosyaların bulunduğu klasör
    DosyaYolu = "C:\Dosyalar\"
   
    ' Koleksiyonları başlat
    Set BirleştirilenVeriler = New Collection
    Set BulunanYineleme = New Collection

    ' Dosyaları sırayla aç
    DosyaAdı = Dir(DosyaYolu & "*.xlsx")
    Do While DosyaAdı <> ""
        Workbooks.Open DosyaYolu & DosyaAdı
        For Each ws In ActiveWorkbook.Sheets
            With ws
                For Satır = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
                    On Error Resume Next
                    Dim Veri As String
                    Veri = .Cells(Satır, 1).Value & "|" & .Cells(Satır, 2).Value
                    Err.Clear
                    BirleştirilenVeriler.Add Veri, CStr(Veri)
                    If Err.Number > 0 Then
                        ' Yinelenen varsa ekle
                        BulunanYineleme.Add Veri, CStr(Veri)
                    End If
                    On Error GoTo 0
                Next Satır
            End With
        Next ws
        ActiveWorkbook.Close SaveChanges:=False
        DosyaAdı = Dir
    Loop

    ' Sonuçları listeleme
    Worksheets.Add
    ActiveSheet.Name = "Yinelenenler"
    i = 1
    For Each Liste In BulunanYineleme
        Cells(i, 1).Value = Split(Liste, "|")(0) ' Sütun 1
        Cells(i, 2).Value = Split(Liste, "|")(1) ' Sütun 2
        i = i + 1
    Next Liste

    MsgBox "İşlem tamamlandı. Yinelenen veriler 'Yinelenenler' sayfasına yazıldı.", vbInformation
End Sub
Kullanım Adımları:
  1. Makro etkinleştirme: Dosyanızda makroları etkinleştirin ve VBA düzenleyicisini (Alt + F11) açın.
  2. Modül ekleme: VBA düzenleyicisinde yeni bir modül ekleyin ve yukarıdaki kodu yapıştırın.
  3. Dosya yolu kontrolü: DosyaYolu değişkenine dosyaların bulunduğu klasör yolunu girin.
  4. Makroyu çalıştırma: VBA ekranından F5 tuşuna basarak makroyu çalıştırın.
Çıktı:
Makro, yinelenen verileri yeni bir çalışma sayfasına (adı: Yinelenenler) yazacaktır.
Dosya adı kısmına klasörün adını, dosya yoluna da ayrıntılardaki linkini mi eklemem gerekiyor. Kusura bakmayın çok hakim değilim
 

tugkan

Altın Üye
Katılım
6 Kasım 2004
Mesajlar
477
Excel Vers. ve Dili
Excel 2016
Türkçe 64 BIT
Altın Üyelik Bitiş Tarihi
16-10-2025
Kod:
 ' Dosyaların bulunduğu klasör
    DosyaYolu = "C:\Dosyalar\"
"C:\Dosyalar\" tırnak işaretlerinin arasına dosyaları kopyaladığınız klasörün yolunu yazın.

Dosyalarınızın türleri hep XLSX mi yoksa başka türler de var mı? XLS, XLSM ..vb.
 
Katılım
18 Kasım 2024
Mesajlar
11
Excel Vers. ve Dili
excel 13 - türkçe
Kod:
 ' Dosyaların bulunduğu klasör
    DosyaYolu = "C:\Dosyalar\"
"C:\Dosyalar\" tırnak işaretlerinin arasına dosyaları kopyaladığınız klasörün yolunu yazın.

Dosyalarınızın türleri hep XLSX mi yoksa başka türler de var mı? XLS, XLSM ..vb.
dosya isimleri aşağıdaki gibidir

1. AY.xls

2. AY.xlsx

3. AY.xls

4. AY.xlsx

5. AY.xlsx

6. AY.xlsx

7. AY.xlsx

8. AY.xlsx

9. AY.xlsx

10. AY.xlsx



klasör ismi ise ÇALIŞMA ÖRNEK 'tir
 

tugkan

Altın Üye
Katılım
6 Kasım 2004
Mesajlar
477
Excel Vers. ve Dili
Excel 2016
Türkçe 64 BIT
Altın Üyelik Bitiş Tarihi
16-10-2025
xls olanları da DOSYA=>BİLGİ=> DÖNÜŞTÜR diyerek XLSX'e dönüştür.

sonra bütün dosyaları ÇALIŞMA ÖRNEK klasörüne kopyala
makrodaki "C:\Dosyalar\" tırnak işaretinin içine ÇALIŞMA ÖRNEK KLASÖRÜNÜN YOLUNU yaz.
ÖRNEK : "C:\ÇALIŞMA ÖRNEK\"
 
Katılım
18 Kasım 2024
Mesajlar
11
Excel Vers. ve Dili
excel 13 - türkçe
Merhaba,
Bu işlem için Excel'de VBA kullanarak bir makro oluşturabiliriz. Bu makro, dosyalardaki verileri birleştirir, hem kendi içlerinde hem de diğer dosyalara kıyasla yinelenenleri kontrol eder ve sonucunu liste halinde döker.

Genel Yaklaşım:
  1. Dosyaları birleştirme: Tüm dosyaları tek bir çalışma kitabına toplarız.
  2. Yinelenenleri kontrol etme: Veriler arasında tekrar eden satırları belirleriz.
  3. Sonuçları listeleme: Tespit edilen yinelenenleri yeni bir çalışma sayfasında gösteririz.
Kod Örneği:
Aşağıdaki VBA kodunu kullanarak işlemi gerçekleştirebilirsiniz:

  1. Tüm dosyaları bir klasöre koyun (örneğin: C:\Dosyalar).
  2. Aşağıdaki VBA kodunu çalıştırın:
Kod:
Sub YinelenenleriBul()
    Dim DosyaYolu As String
    Dim DosyaAdı As String
    Dim BirleştirilenVeriler As Collection
    Dim ws As Worksheet
    Dim Satır As Long, i As Long, j As Long
    Dim BulunanYineleme As Collection
    Dim Bulundu As Boolean
    Dim Liste As String

    ' Dosyaların bulunduğu klasör
    DosyaYolu = "C:\Dosyalar\"
   
    ' Koleksiyonları başlat
    Set BirleştirilenVeriler = New Collection
    Set BulunanYineleme = New Collection

    ' Dosyaları sırayla aç
    DosyaAdı = Dir(DosyaYolu & "*.xlsx")
    Do While DosyaAdı <> ""
        Workbooks.Open DosyaYolu & DosyaAdı
        For Each ws In ActiveWorkbook.Sheets
            With ws
                For Satır = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
                    On Error Resume Next
                    Dim Veri As String
                    Veri = .Cells(Satır, 1).Value & "|" & .Cells(Satır, 2).Value
                    Err.Clear
                    BirleştirilenVeriler.Add Veri, CStr(Veri)
                    If Err.Number > 0 Then
                        ' Yinelenen varsa ekle
                        BulunanYineleme.Add Veri, CStr(Veri)
                    End If
                    On Error GoTo 0
                Next Satır
            End With
        Next ws
        ActiveWorkbook.Close SaveChanges:=False
        DosyaAdı = Dir
    Loop

    ' Sonuçları listeleme
    Worksheets.Add
    ActiveSheet.Name = "Yinelenenler"
    i = 1
    For Each Liste In BulunanYineleme
        Cells(i, 1).Value = Split(Liste, "|")(0) ' Sütun 1
        Cells(i, 2).Value = Split(Liste, "|")(1) ' Sütun 2
        i = i + 1
    Next Liste

    MsgBox "İşlem tamamlandı. Yinelenen veriler 'Yinelenenler' sayfasına yazıldı.", vbInformation
End Sub
Kullanım Adımları:
  1. Makro etkinleştirme: Dosyanızda makroları etkinleştirin ve VBA düzenleyicisini (Alt + F11) açın.
  2. Modül ekleme: VBA düzenleyicisinde yeni bir modül ekleyin ve yukarıdaki kodu yapıştırın.
  3. Dosya yolu kontrolü: DosyaYolu değişkenine dosyaların bulunduğu klasör yolunu girin.
  4. Makroyu çalıştırma: VBA ekranından F5 tuşuna basarak makroyu çalıştırın.
Çıktı:
Makro, yinelenen verileri yeni bir çalışma sayfasına (adı: Yinelenenler) yazacaktır.
varyant ya da obje olmalıdır diye hata veriyor ' For Each Liste In BulunanYineleme' buradaki liste yazan kısmı işaretleyerek
 

tugkan

Altın Üye
Katılım
6 Kasım 2004
Mesajlar
477
Excel Vers. ve Dili
Excel 2016
Türkçe 64 BIT
Altın Üyelik Bitiş Tarihi
16-10-2025
Tüm Kodu Güncellenmiş Haliyle Tekrar Deneyin KLASÖR YOLUNU GÜNCELLEMEYİ UNUTMAYIN



Kod:
Sub YinelenenleriBul()
    Dim DosyaYolu As String
    Dim DosyaAdı As String
    Dim BirleştirilenVeriler As Collection
    Dim ws As Worksheet
    Dim Satır As Long, i As Long
    Dim BulunanYineleme As Collection
    Dim Liste As Variant

    ' Dosyaların bulunduğu klasör
    DosyaYolu = "C:\Dosyalar\"
    
    ' Koleksiyonları başlat
    Set BirleştirilenVeriler = New Collection
    Set BulunanYineleme = New Collection

    ' Dosyaları sırayla aç
    DosyaAdı = Dir(DosyaYolu & "*.xlsx")
    Do While DosyaAdı <> ""
        Workbooks.Open DosyaYolu & DosyaAdı
        For Each ws In ActiveWorkbook.Sheets
            With ws
                For Satır = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
                    On Error Resume Next
                    Dim Veri As String
                    Veri = .Cells(Satır, 1).Value & "|" & .Cells(Satır, 2).Value
                    Err.Clear
                    BirleştirilenVeriler.Add Veri, CStr(Veri)
                    If Err.Number > 0 Then
                        ' Yinelenen varsa ekle
                        BulunanYineleme.Add Veri, CStr(Veri)
                    End If
                    On Error GoTo 0
                Next Satır
            End With
        Next ws
        ActiveWorkbook.Close SaveChanges:=False
        DosyaAdı = Dir
    Loop

    ' Sonuçları listeleme
    Worksheets.Add
    ActiveSheet.Name = "Yinelenenler"
    i = 1
    For Each Liste In BulunanYineleme
        Cells(i, 1).Value = Split(Liste, "|")(0) ' Sütun 1
        Cells(i, 2).Value = Split(Liste, "|")(1) ' Sütun 2
        i = i + 1
    Next Liste

    MsgBox "İşlem tamamlandı. Yinelenen veriler 'Yinelenenler' sayfasına yazıldı.", vbInformation
End Sub
 
Katılım
18 Kasım 2024
Mesajlar
11
Excel Vers. ve Dili
excel 13 - türkçe
Tüm Kodu Güncellenmiş Haliyle Tekrar Deneyin KLASÖR YOLUNU GÜNCELLEMEYİ UNUTMAYIN



Kod:
Sub YinelenenleriBul()
    Dim DosyaYolu As String
    Dim DosyaAdı As String
    Dim BirleştirilenVeriler As Collection
    Dim ws As Worksheet
    Dim Satır As Long, i As Long
    Dim BulunanYineleme As Collection
    Dim Liste As Variant

    ' Dosyaların bulunduğu klasör
    DosyaYolu = "C:\Dosyalar\"
   
    ' Koleksiyonları başlat
    Set BirleştirilenVeriler = New Collection
    Set BulunanYineleme = New Collection

    ' Dosyaları sırayla aç
    DosyaAdı = Dir(DosyaYolu & "*.xlsx")
    Do While DosyaAdı <> ""
        Workbooks.Open DosyaYolu & DosyaAdı
        For Each ws In ActiveWorkbook.Sheets
            With ws
                For Satır = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
                    On Error Resume Next
                    Dim Veri As String
                    Veri = .Cells(Satır, 1).Value & "|" & .Cells(Satır, 2).Value
                    Err.Clear
                    BirleştirilenVeriler.Add Veri, CStr(Veri)
                    If Err.Number > 0 Then
                        ' Yinelenen varsa ekle
                        BulunanYineleme.Add Veri, CStr(Veri)
                    End If
                    On Error GoTo 0
                Next Satır
            End With
        Next ws
        ActiveWorkbook.Close SaveChanges:=False
        DosyaAdı = Dir
    Loop

    ' Sonuçları listeleme
    Worksheets.Add
    ActiveSheet.Name = "Yinelenenler"
    i = 1
    For Each Liste In BulunanYineleme
        Cells(i, 1).Value = Split(Liste, "|")(0) ' Sütun 1
        Cells(i, 2).Value = Split(Liste, "|")(1) ' Sütun 2
        i = i + 1
    Next Liste

    MsgBox "İşlem tamamlandı. Yinelenen veriler 'Yinelenenler' sayfasına yazıldı.", vbInformation
End Sub
affınıza sığınarak soruyorum bu seferde 'syntax eror' hatası veriyor dosya yolunu göstererek :-(
 

tugkan

Altın Üye
Katılım
6 Kasım 2004
Mesajlar
477
Excel Vers. ve Dili
Excel 2016
Türkçe 64 BIT
Altın Üyelik Bitiş Tarihi
16-10-2025
"Syntax Error" hatasının sebebi genellikle dosya yolunun doğru formatta olmamasıdır. VBA'da dosya yollarında özel bir biçim kullanılmalıdır:

  • Doğru Dosya Yolu Formatı: Windows dosya yollarında ters eğik çizgi (\) karakteri kullanılır. Bu karakter, VBA'da kaçış karakteri gibi algılanabilir, bu yüzden dikkatli yazılmalıdır.
  • Dosya yolunun sonunda ters eğik çizgi (\) olduğundan emin olun.
Dosya Yolu Biçimi
Eğer dosya yolunuz şu şekilde görünüyorsa:

Kod:
DosyaYolu = "C:\Dosyalar"
Sonuna ters eğik çizgi eklemeniz gerekir:
Kod:
DosyaYolu = "C:\Dosyalar\"
 
Katılım
18 Kasım 2024
Mesajlar
11
Excel Vers. ve Dili
excel 13 - türkçe
"Syntax Error" hatasının sebebi genellikle dosya yolunun doğru formatta olmamasıdır. VBA'da dosya yollarında özel bir biçim kullanılmalıdır:

  • Doğru Dosya Yolu Formatı: Windows dosya yollarında ters eğik çizgi (\) karakteri kullanılır. Bu karakter, VBA'da kaçış karakteri gibi algılanabilir, bu yüzden dikkatli yazılmalıdır.
  • Dosya yolunun sonunda ters eğik çizgi (\) olduğundan emin olun.
Dosya Yolu Biçimi
Eğer dosya yolunuz şu şekilde görünüyorsa:

Kod:
DosyaYolu = "C:\Dosyalar"
Sonuna ters eğik çizgi eklemeniz gerekir:
Kod:
DosyaYolu = "C:\Dosyalar\"
2. sütundaki tekrarlananları bulmam lazım acaba o yüzden mi boş veri veriyor birinci sütuna bakabilir mi?
2.sütun tekrarlanıyorsa 1.sütundaki veriler ile vermeli :(
 

tugkan

Altın Üye
Katılım
6 Kasım 2004
Mesajlar
477
Excel Vers. ve Dili
Excel 2016
Türkçe 64 BIT
Altın Üyelik Bitiş Tarihi
16-10-2025
verileriniz hangi sütunlarda?
Hücre içeriği TAMAMEN aynı olmazsa aynı kabul etmez. Örnek : hücrenin birinde ekstra boşluk olması..vb gibi.
 
Katılım
18 Kasım 2024
Mesajlar
11
Excel Vers. ve Dili
excel 13 - türkçe
tekrarlayan verilerin hepsi B sütunda, biricik olan veriler ise a sütununda. Ve hepsini kontrol ettim formatlar dizilişler hep aynı sadece isimler farklı
 

walabi

Altın Üye
Katılım
22 Eylül 2012
Mesajlar
800
Excel Vers. ve Dili
excel 2010

excel 2013
Altın Üyelik Bitiş Tarihi
06-08-2025
Merhaba,

2 sütundan ve ortalama 40 Bin satırdan oluşan excel dosyalarınız var. peki bahsi geçen 2 sütunda ne tür veriler var. Bunu belirtseniz daha kolay çözüme ulaşılabilirdi bence.

Formüllü çözüm olarak , verilerinizde 2 sütun beraber kontrol edilerek tekrarlanan tespit edilecekse aşağıdaki formüller işinize yarayabilir.

C sütununda A ve B sütun verilerini birleştirin

=A2&"-"&B2

D sütununda da tekrar eden verileri kontrol edecek formül uygulayın;

=EĞER(EĞER(EĞERSAY(C$2:C2;C2)>1;"";EĞERSAY(C$2:C2;C2))=1;EĞERSAY(C:C;C2);"Tekrarlanan")


Görsel aşağıda olduğu gibidir.

Sütun 1

Sütun 2

Birleşim

Kontrol

9999999999​

AAA

9999999999-AAA

2​

8888888888​

BBB

8888888888-BBB

2​

9999999999​

AAA

9999999999-AAA

Tekrarlanan

8888888888​

BBB

8888888888-BBB

Tekrarlanan

7777777777​

CCC

7777777777-CCC

1​

5555555555​

DDD

5555555555-DDD

1​

1231233211​

EEE

1231233211-EEE

3​

1231233211​

EEE

1231233211-EEE

Tekrarlanan

1231233211​

EEE

1231233211-EEE

Tekrarlanan

3333333333​

FFF

3333333333-FFF

1​




    

  

 

Ekli dosyalar

Katılım
18 Kasım 2024
Mesajlar
11
Excel Vers. ve Dili
excel 13 - türkçe
Merhaba,

2 sütundan ve ortalama 40 Bin satırdan oluşan excel dosyalarınız var. peki bahsi geçen 2 sütunda ne tür veriler var. Bunu belirtseniz daha kolay çözüme ulaşılabilirdi bence.

Formüllü çözüm olarak , verilerinizde 2 sütun beraber kontrol edilerek tekrarlanan tespit edilecekse aşağıdaki formüller işinize yarayabilir.

C sütununda A ve B sütun verilerini birleştirin

=A2&"-"&B2

D sütununda da tekrar eden verileri kontrol edecek formül uygulayın;

=EĞER(EĞER(EĞERSAY(C$2:C2;C2)>1;"";EĞERSAY(C$2:C2;C2))=1;EĞERSAY(C:C;C2);"Tekrarlanan")


Görsel aşağıda olduğu gibidir.

Sütun 1

Sütun 2

Birleşim

Kontrol

9999999999​

AAA

9999999999-AAA

2​

8888888888​

BBB

8888888888-BBB

2​

9999999999​

AAA

9999999999-AAA

Tekrarlanan

8888888888​

BBB

8888888888-BBB

Tekrarlanan

7777777777​

CCC

7777777777-CCC

1​

5555555555​

DDD

5555555555-DDD

1​

1231233211​

EEE

1231233211-EEE

3​

1231233211​

EEE

1231233211-EEE

Tekrarlanan

1231233211​

EEE

1231233211-EEE

Tekrarlanan

3333333333​

FFF

3333333333-FFF

1​



    

  

Atmış olduğunuz dosyayı altın üye olmadığım için indiremiyorum ne yazıkki. İlk sütunda sayılar var, ikinci sütunda ise kombinasyonlu sayılar var, iki farklı verinin arasında harf var örneğin 12345678cd123456 toplamında 2 tanesi harf olmak üzere 16 haneden oluşan bir kombinasyon
 
Katılım
18 Kasım 2024
Mesajlar
11
Excel Vers. ve Dili
excel 13 - türkçe
Dosyalar kendi içinde tekrarladığı için birazda makro için destek istemiştim. Dediğiniz yöntemde yaparsak önce tüm dosyaları birleştirmeliyim demi
 

walabi

Altın Üye
Katılım
22 Eylül 2012
Mesajlar
800
Excel Vers. ve Dili
excel 2010

excel 2013
Altın Üyelik Bitiş Tarihi
06-08-2025
Formüllü işlem yapmak isterseniz manuel olarak dosyaları birleştirmek gerekir doğal olarak. Sadece alternatif sundum. Eklediğim dosyadakilerin görüntüsünü zaten eklemiştim.

Sizin için asıl çözüm yine de makrolu çözümdür.
 

tugkan

Altın Üye
Katılım
6 Kasım 2004
Mesajlar
477
Excel Vers. ve Dili
Excel 2016
Türkçe 64 BIT
Altın Üyelik Bitiş Tarihi
16-10-2025
Eğer tekrarlanan veriler sadece B sütununda yer alıyorsa, makroyu buna uygun şekilde düzenleyelim. Bu durumda A sütunu dikkate alınmayacak ve yalnızca B sütunundaki değerler kontrol edilecektir.

Güncellenmiş Makro
Aşağıdaki makro, tüm dosyalardaki B sütunundaki verileri birleştirir, tekrarlayan değerleri tespit eder ve bunları "Yinelenenler" adlı yeni bir sayfaya yazar:

Kod:
Sub YinelenenleriBulB()
    Dim DosyaYolu As String
    Dim DosyaAdı As String
    Dim BirleştirilenVeriler As Collection
    Dim ws As Worksheet
    Dim Satır As Long, i As Long
    Dim BulunanYineleme As Collection
    Dim Liste As Variant

    ' Dosyaların bulunduğu klasör
    DosyaYolu = "C:\Dosyalar\" ' Buraya klasör yolunuzu girin

    ' Koleksiyonları başlat
    Set BirleştirilenVeriler = New Collection
    Set BulunanYineleme = New Collection

    ' Dosyaları sırayla aç
    DosyaAdı = Dir(DosyaYolu & "*.xlsx")
    Do While DosyaAdı <> ""
        Workbooks.Open DosyaYolu & DosyaAdı
        For Each ws In ActiveWorkbook.Sheets
            With ws
                For Satır = 1 To .Cells(.Rows.Count, 2).End(xlUp).Row ' Sadece B sütununa bakıyoruz
                    On Error Resume Next
                    Dim Veri As String
                    Veri = .Cells(Satır, 2).Value ' B sütunundaki veriyi al
                    Err.Clear
                    BirleştirilenVeriler.Add Veri, CStr(Veri)
                    If Err.Number > 0 Then
                        ' Yinelenen varsa ekle
                        BulunanYineleme.Add Veri, CStr(Veri)
                    End If
                    On Error GoTo 0
                Next Satır
            End With
        Next ws
        ActiveWorkbook.Close SaveChanges:=False
        DosyaAdı = Dir
    Loop

    ' Sonuçları listeleme
    Worksheets.Add
    ActiveSheet.Name = "Yinelenenler"
    i = 1
    For Each Liste In BulunanYineleme
        Cells(i, 1).Value = Liste ' Yinelenen değerleri ilk sütuna yaz
        i = i + 1
    Next Liste

    MsgBox "İşlem tamamlandı. Yinelenen veriler 'Yinelenenler' sayfasına yazıldı.", vbInformation
End Sub
Makronun Çalışma Mantığı
  1. Dosyaların Açılması: Belirtilen klasördeki tüm .xlsx dosyalar sırayla açılır.
  2. B Sütununun Kontrol Edilmesi: Her çalışma sayfasının yalnızca B sütunu kontrol edilir.
  3. Yinelenenlerin Tespit Edilmesi: Daha önce eklenmiş olan değerler kontrol edilerek yinelenenler kaydedilir.
  4. Sonuçların Yazılması: "Yinelenenler" adlı yeni bir sayfa oluşturularak tekrarlayan değerler bu sayfaya yazılır.
Kullanım Adımları
  1. Dosya Yolu Ayarı: DosyaYolu değişkenini kendi dosyalarınızın bulunduğu klasör yoluna göre düzenleyin.
  2. VBA'ya Yapıştırma: Makro kodunu VBA düzenleyicisine (Alt + F11) yapıştırın.
  3. Makroyu Çalıştırma: Makroyu çalıştırarak sonuçları "Yinelenenler" sayfasında görün.
Örnek Çıktı
"Yinelenenler" sayfasında yalnızca B sütununda tekrar eden değerler listelenecektir:

Kod:
Yinelenenler
--------------
Değer1
Değer2
Değer3
 
Katılım
18 Kasım 2024
Mesajlar
11
Excel Vers. ve Dili
excel 13 - türkçe
Formüllü işlem yapmak isterseniz manuel olarak dosyaları birleştirmek gerekir doğal olarak. Sadece alternatif sundum. Eklediğim dosyadakilerin görüntüsünü zaten eklemiştim.

Sizin için asıl çözüm yine de makrolu çözümdür.
Bu makro sadece b sütunundaki değişken için yazabilir misiniz. A sütunu biricik, eğer b sütunda tekrarlama var ise ya karşılığı olarak a sütununu versin istiyorum ya da satır numarası da olabilir.
 
Üst