• DİKKAT

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

Veri karşılaştırma

Katılım
13 Aralık 2016
Mesajlar
49
Excel Vers. ve Dili
OFİS 2016
İNGİLİZCE
TÜRKÇE
Ekteki dosyamda iki listem var ikisi arasındaki fark liste 1 de adı soyadı t.c no ve açıklama var liste 2 de ise sadece t.c no ve açıklama var liste 2 deki listede ise t.c nolarının sırası liste 1 dekinden karışık bu iki listeyi karşılaştırıp t.c va açıklaması aynı olmayanları listelemek istiyorum.
 

Ekli dosyalar

Teşekkürler işime yaradı çok sağolun aynı tablo üzerinde aynı olanları da listeletmemiz mümkün mü acaba o işlem için nasıl bir yol izlemem gerekir
 
Deneyiniz.

Kod:
Option Explicit
Sub deneme()
Dim a(), b(), c(), d1 As Object, d2 As Object
Dim i As Long, Say As Long, Krt As Variant
Dim S1 As Worksheet, S2 As Worksheet, S3 As Worksheet
Set S1 = Sheets("Sayfa1")
Set S2 = Sheets("Sayfa2")
Set S3 = Sheets("Sayfa3")
Set d1 = CreateObject("Scripting.Dictionary")
Set d2 = CreateObject("Scripting.Dictionary")
a = S1.Range("D2:E" & S1.Cells(Rows.Count, 4).End(xlUp).Row)
b = S2.Range("A2:B" & S2.Cells(Rows.Count, 1).End(xlUp).Row)
For i = 1 To UBound(b)
    Krt = b(i, 1) & b(i, 2)
    If Krt <> "" Then
        d1(Krt) = ""
    End If
Next i
ReDim c(1 To UBound(a) + UBound(b), 1 To 3)
'Sayfa2'de olmayanları listeler
For i = 1 To UBound(a)
    Krt = a(i, 1) & a(i, 2)
    If Krt <> "" Then
        d2(Krt) = ""
        If Not d1.exists(Krt) Then
            Say = Say + 1
            d1(Krt) = Say
            c(Say, 1) = a(i, 1)
            c(Say, 2) = a(i, 2)
            c(Say, 3) = S1.Name
        End If
    End If
Next i
'Sayfa1 ve sayfa2 ortak olanları listeler
For i = 1 To UBound(b)
    Krt = b(i, 1) & b(i, 2)
    If Krt <> "" Then
        If d2.exists(Krt) Then
            Say = Say + 1
            c(Say, 1) = b(i, 1)
            c(Say, 2) = b(i, 2)
            c(Say, 3) = S1.Name & " ve " & S2.Name
        End If
    End If
Next i
'Sayfa1'de olmayanları listeler
For i = 1 To UBound(b)
    Krt = b(i, 1) & b(i, 2)
    If Krt <> "" Then
        If Not d2.exists(Krt) Then
            Say = Say + 1
            d2(Krt) = Say
            c(Say, 1) = b(i, 1)
            c(Say, 2) = b(i, 2)
            c(Say, 3) = S2.Name
        End If
    End If
Next i
S3.Range("A2:C" & Rows.Count).ClearContents
If Say > 0 Then
    S3.Range("A2").Resize(Say, 3) = c
End If
S3.Select
MsgBox "işlem tamam.", vbInformation
End Sub
 
Sayın ZİYNETTİN teşekkürler.
Tablom üzerinde 1. sayfadaki t.c ve adı soyadı kısmından karşılaştırıp, 2. sayfamdaki t.c.nolarının yanına hangi t.c kime ait 1. sayfadaki listeden aldırmam için nasıl bir yol izleyebilirim. Teşekkürler iyi çalışmalar herkese
 
Aşağıdaki kodu çalıştırın. Sayfa2'de C ve D sütununu kontrol ediniz.

Kod:
Option Explicit
Sub Tc_isim_aktar()
Dim a(), b(), c(), v(), d1 As Object
Dim i As Long, Say As Long, Krt As Variant
Dim S1 As Worksheet, S2 As Worksheet
Set S1 = Sheets("Sayfa1")
Set S2 = Sheets("Sayfa2")
Set d1 = CreateObject("Scripting.Dictionary")
a = S1.Range("B2:E" & S1.Cells(Rows.Count, 2).End(xlUp).Row)
b = S2.Range("A2:B" & S2.Cells(Rows.Count, 1).End(xlUp).Row)

ReDim v(1 To UBound(a), 1 To 2)
For i = 1 To UBound(a)
    Krt = CStr(a(i, 3)) & a(i, 4)
    If Not d1.exists(Krt) Then
    Say = Say + 1
    d1(Krt) = Say
    v(Say, 1) = a(i, 1)
    v(Say, 2) = a(i, 2)
    End If
Next i
On Error Resume Next
ReDim c(1 To UBound(b), 1 To 2)
Say = 0
For i = 1 To UBound(b)
    Krt = CStr(b(i, 1)) & b(i, 2)
    Say = Say + 1
    c(Say, 1) = v(d1(Krt), 1)
    c(Say, 2) = v(d1(Krt), 2)
Next i
Application.ScreenUpdating = 0
If Say > 0 Then
    S2.Range("C2:D" & Rows.Count).ClearContents
    S2.Range("C2").Resize(Say, 2) = c
End If
Application.ScreenUpdating = 1
MsgBox "İşlem tamam.", vbInformation
End Sub
 
Teşekkürler iyi çalışmalar
 
Geri
Üst