İki Liste Karşılaştırma {6 Farklı Mükerrer Bulma}

gicimi

Altın Üye
Katılım
3 Şubat 2008
Mesajlar
594
Excel Vers. ve Dili
Office 2016 Eng. 64 Bit
Altın Üyelik Bitiş Tarihi
21-11-2024
Merhaba;

Ekteki çalışmada birden fazla mükerrer karşılaştırma yapmak istiyorum. Makro ile yapmak için yardımcı olabilir misiniz. Ortalama satır sayısı 5.000 adettir.

A Sütununda olup B sütununda Olmayanlar
B Sütununda Olup A Sütununda Olmayanlar
A ve B Sütununda Olanlar
A Sütunundaki Mükerrer Bul
B Sütunundaki Mükerrer Bul
A ve B sütunlarındaki Mükerrer olanları renklendir.
 

Ekli dosyalar

cems

Altın Üye
Katılım
2 Eylül 2005
Mesajlar
2,268
Excel Vers. ve Dili
office 2003 tr + office 2010 tr 32bit
Altın Üyelik Bitiş Tarihi
13-06-2024
Makro ile bir çözüm alternatifi .. Tek tek tuşlara değil tek bir tuşa bağlı olarak :


Kod:
Sub Düğme7_Tıklat()

Range("d2:h49") = ""

    Dim rngCell As Range
    For Each rngCell In Range("A2:A40")
        If WorksheetFunction.CountIf(Range("B2:B40"), rngCell) = 0 Then
            Range("D" & Rows.Count).End(xlUp).Offset(1) = rngCell
        End If
    Next
    For Each rngCell In Range("B2:B40")
        If WorksheetFunction.CountIf(Range("A2:A40"), rngCell) = 0 Then
            Range("E" & Rows.Count).End(xlUp).Offset(1) = rngCell
        End If
    Next
   
     For Each rngCell In Range("B2:B40")
        If WorksheetFunction.CountIf(Range("A2:A40"), rngCell) = 1 Then
            Range("F" & Rows.Count).End(xlUp).Offset(1) = rngCell
        End If
    Next
   
    For Each rngCell In Range("A2:A40")
        If WorksheetFunction.CountIf(Range("A2:A40"), rngCell) > 1 Then
            Range("G" & Rows.Count).End(xlUp).Offset(1) = rngCell
        End If
    Next
   
     For Each rngCell In Range("B2:B40")
        If WorksheetFunction.CountIf(Range("B2:B40"), rngCell) > 1 Then
            Range("H" & Rows.Count).End(xlUp).Offset(1) = rngCell
        End If
    Next
   
   
MsgBox " Mükerrerler listelendi "
   
ThisWorkbook.Save
Dener misiniz ?
 

Ekli dosyalar

Son düzenleme:

gicimi

Altın Üye
Katılım
3 Şubat 2008
Mesajlar
594
Excel Vers. ve Dili
Office 2016 Eng. 64 Bit
Altın Üyelik Bitiş Tarihi
21-11-2024
@cems Teşekkür ederim. Hocam elinize sağlık
 

gicimi

Altın Üye
Katılım
3 Şubat 2008
Mesajlar
594
Excel Vers. ve Dili
Office 2016 Eng. 64 Bit
Altın Üyelik Bitiş Tarihi
21-11-2024
@cems A ve B sütunlarındaki Mükerrer olanları renklendirebilir miyiz. Ayrı Butonla yapabilir miyiz.
 

cems

Altın Üye
Katılım
2 Eylül 2005
Mesajlar
2,268
Excel Vers. ve Dili
office 2003 tr + office 2010 tr 32bit
Altın Üyelik Bitiş Tarihi
13-06-2024
Onu unuttum , deniyorum ...
 

cems

Altın Üye
Katılım
2 Eylül 2005
Mesajlar
2,268
Excel Vers. ve Dili
office 2003 tr + office 2010 tr 32bit
Altın Üyelik Bitiş Tarihi
13-06-2024
Sayfayı yenileyerek eklenen yeni dosyayı indirip deneyiniz.

Renklendirme kısmını save etmeden ... ( eğer save etsin isterseniz End sub dan bir önceki satıra "Thisworkbook.save" yazın. Bu şekilde dosyayı kapatırsanız renklendirmelerin silinmesi gerekir .

Kod:
Sub avebkolonmukrenk()

    Dim myRng As Range
    Dim lastCell As Long

    'Get the last row
    Dim lastRow As Integer
    lastRow = ActiveSheet.UsedRange.Rows.Count

    'Debug.Print "Last Row is " & lastRow

    Dim a As Range
    Dim b As Range

    Application.ScreenUpdating = False

    For Each a In Worksheets("Sayfa1").Range("A2:A" & lastRow).Cells
        For Each b In Worksheets("Sayfa1").Range("B2:B" & lastRow).Cells
            a.Interior.Color = vbRed
            If (InStr(1, b, a, 1) > 0) Then
                a.Interior.Color = vbWhite
                Exit For
            End If
        Next
    Next

    For Each a In Worksheets("Sayfa1").Range("B2:B" & lastRow).Cells
        For Each b In Worksheets("Sayfa1").Range("A2:A" & lastRow).Cells
            a.Interior.Color = vbRed
            If (InStr(1, b, a, 1) > 0) Then
                a.Interior.Color = vbWhite
                Exit For
            End If
        Next
    Next

Application.ScreenUpdating = True

End Sub
 

gicimi

Altın Üye
Katılım
3 Şubat 2008
Mesajlar
594
Excel Vers. ve Dili
Office 2016 Eng. 64 Bit
Altın Üyelik Bitiş Tarihi
21-11-2024
@cems ilginiz için teşekkür ederim. İyi geceler.(y)
 

cems

Altın Üye
Katılım
2 Eylül 2005
Mesajlar
2,268
Excel Vers. ve Dili
office 2003 tr + office 2010 tr 32bit
Altın Üyelik Bitiş Tarihi
13-06-2024
Ayrı buton yazmışsınız , yorgun gözler aynı okudu ..

Ayırmak isterseniz :
1* sayfaya yeni bir tuş ekleyin
2* Tuşun altına ikinci yazılan kodları kopyalamayın , taşıyın ...
3* call ile başlayan satırı silin

İyi geceler :)
 
Katılım
24 Nisan 2019
Mesajlar
7
Excel Vers. ve Dili
2016 İngilizce
Merhabalar,

Bunu A B C D sütunları kontrol ederek yani aynı sütunda 4 sütunda yapmak mümkün mü?
 

cems

Altın Üye
Katılım
2 Eylül 2005
Mesajlar
2,268
Excel Vers. ve Dili
office 2003 tr + office 2010 tr 32bit
Altın Üyelik Bitiş Tarihi
13-06-2024
Sanırım örnek dosyayı incelediniz ve daha farklı bir şey istiyorsunuz. Ancak ne istediğinizi anlayamadım.
Çalışmayan ama istediğiniz şekli içeren bir dosya gönderebilir misiniz ? Dosyayı www.filebig.net e yükleyip linki
burada verebilir misiniz ?
 
Katılım
24 Nisan 2019
Mesajlar
7
Excel Vers. ve Dili
2016 İngilizce
Dosyayı inceleyemedim çünkü statüm yetersiz kalıyor.

Aşağıdaki linke gönderdim.

Tablodaki A, B, C, D sütunlarını kontrol ederek (bu sütunlar tek bir satırda olmalı) satırın mükerrer olup olmadığını tespit etmesini (renklendirme, yan sütuna belli bir tanım yazma vb.) istiyorum.

Link: http://www.filebig.net/files/dWjAgnnKXx
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,767
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Bu dosya herhalde sayfanın başındaki paylaştığınız dosya değil mi? Benim yüklediğime de bakabildiniz mi acaba?
KOD:
Kod:
Sub Sil()
Application.ScreenUpdating = False

son = Cells(Rows.Count, "b").End(3).Row

Range("A2:E" & son).Interior.ColorIndex = xlNone

ReDim ara1(son): ReDim ara2(son)

For t = 2 To son
ara1(t) = Cells(t, "A") & Cells(t, "B") & Cells(t, "C") & Cells(t, "D")
ara2(t) = 1
Next


For i = 2 To son

For j = 2 To son
bulunan = Cells(j, "A") & Cells(j, "B") & Cells(j, "C") & Cells(j, "D")

If ara2(j) = 1 Then
If ara1(i) = bulunan Then
say = say + 1
If say > 1 Then
ara2(j) = 0

Range(Cells(j, "A"), Cells(j, "e")).Interior.ColorIndex = 40
Range(Cells(i, "A"), Cells(i, "e")).Interior.ColorIndex = 40


End If
End If
End If

Next j
say = 0
Next i


Application.ScreenUpdating = True
MsgBox "işlem tamam"
End Sub
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,767
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
bu kod da farklı birazcık

Kod:
Sub mükerrer()
Application.ScreenUpdating = False

son = Cells(Rows.Count, "b").End(3).Row

Range("A2:E" & son).Interior.ColorIndex = xlNone

ReDim ara1(son): ReDim ara2(son)

For t = 2 To son
ara1(t) = Cells(t, "A") & Cells(t, "B") & Cells(t, "C") & Cells(t, "D")
ara2(t) = 1
Next

say = 3
For i = 2 To son
say2 = 0
For j = 2 To son
bulunan = Cells(j, "A") & Cells(j, "B") & Cells(j, "C") & Cells(j, "D")

If ara2(j) = 1 Then
If ara1(i) = bulunan Then
sat = sat + 1
If sat > 1 Then
ara2(j) = 0

Range(Cells(j, "A"), Cells(j, "e")).Interior.ColorIndex = say
Range(Cells(i, "A"), Cells(i, "e")).Interior.ColorIndex = say

Cells(j, "m") = say
Cells(i, "m") = say
Cells(j, "n") = j & "_" & i

say2 = 1

End If
End If
End If

Next j
sat = 0
If say2 = 1 Then
say = say + 1
If say = 56 Then say = 3
End If
Next i


Application.ScreenUpdating = True
MsgBox "işlem tamam"
End Sub
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,767
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
bu kad birazcık daha farklı

Kod:
Sub mukerrer()
Application.ScreenUpdating = False

Range("A2:E" & Rows.Count).Interior.ColorIndex = xlNone
Range("J2:M" & Rows.Count).ClearContents
son = Cells(Rows.Count, "b").End(3).Row
ReDim ara1(son): ReDim ara2(son)

For t = 2 To son
ara1(t) = Cells(t, "A") & Cells(t, "B") & Cells(t, "C") & Cells(t, "D")
ara2(t) = 1
Next

say = 3
For i = 2 To son
say2 = 0
veri = ""
For j = 2 To son
bulunan = Cells(j, "A") & Cells(j, "B") & Cells(j, "C") & Cells(j, "D")

If ara2(j) = 1 Then
If ara1(i) = bulunan Then
veri = veri & "_" & j
sat = sat + 1
If sat > 1 Then
ara2(j) = 0

Range(Cells(j, "A"), Cells(j, "e")).Interior.ColorIndex = say
Range(Cells(i, "A"), Cells(i, "e")).Interior.ColorIndex = say

Cells(j, "j") = say
Cells(i, "j") = say
Cells(j, "k") = j & "_" & i

say2 = 1
End If
End If
End If

Next j

deg1 = Split(Mid(veri, 2, 10), "_")
If UBound(deg1) > 0 Then
Cells(i, "L") = Mid(veri, 2, Len(veri) - 1)
For k = 0 To UBound(deg1)
Cells(deg1(k), "M") = Mid(veri, 2, Len(veri) - 1)
Next k
End If

sat = 0
If say2 = 1 Then
say = say + 1
If say = 56 Then say = 3
End If
Next i

Application.ScreenUpdating = True
MsgBox "işlem tamam"
End Sub
 

cems

Altın Üye
Katılım
2 Eylül 2005
Mesajlar
2,268
Excel Vers. ve Dili
office 2003 tr + office 2010 tr 32bit
Altın Üyelik Bitiş Tarihi
13-06-2024
Sayın Halit3 hocam,
Son kodları denedim soran adına ; ilk anda dosya adı sorun oldu, bunu aaa olarak değiştirdiğimde
" Birleştirilmiş hücrenin bir parçası değiştirilemez " hatası verdi, ancak birleşmeyi göremedim de çalışmadığı için ...
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,767
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
I3:K5 hücresi birleştirilmiş bunu çöz kod çalışır.
 

cems

Altın Üye
Katılım
2 Eylül 2005
Mesajlar
2,268
Excel Vers. ve Dili
office 2003 tr + office 2010 tr 32bit
Altın Üyelik Bitiş Tarihi
13-06-2024
Gözümün önünde olanı görememişim :)

Bu arada böylesine bir kod şiiri nasıl yazdığınızı da çok merak ediyorum, zira tek satırına dokunmaya dahi kıyamadan kodları okuyorum :)

http://www.filebig.net/files/Auj4zvacMT
 

Ekli dosyalar

Son düzenleme:
Üst