listeler arası karşılaştırma,(Mükerrer kayıtlar)

Katılım
14 Ekim 2006
Mesajlar
408
Excel Vers. ve Dili
excel 2003 TR
Selamlar;

bu konunun forumda daha önce defalarca işlendiğini biliyorum. ve arama sonucu karşıma bir çok örnek çıktı. ancak bu örnekler benim tam olarak sıkıntımı çözmedi veya ben kendime uyarlayacak eklemeleri yapamadım. bu yüzden konuyu tekrar gündeme getirme gereği duydum.

yapmak istediğim şeylerle ilgili en yakın örnek sn.zafer bey tarafından hazırlanan aşağıdaki kodlar. bunları istediğim şekle uyarlayabilmem için yardımcı olurmusunuz?

Kod:
Sub ilke_gore_Benzemeyenleri_bul()
Set s1 = Sheets("şube")
Set s2 = Sheets("mernis")
Set s3 = Sheets("fark")
s3.Range("a2:q65000").ClearContents
ason = s1.Cells(65536, 2).End(xlUp).Row
bson = s2.Cells(65536, 2).End(xlUp).Row


For a = 2 To bson + 1
b = WorksheetFunction.CountIf(s1.Range("b2:b" & ason), s2.Cells(a, 2))
If b <> 1 Then
c = c + 1
For i = 1 To 14
s3.Cells(c + 1, i) = s2.Cells(a, i)
Next
End If
Next a

End Sub
Sub mukerre1()
'ayn&#305; ozellikli say&#305;lar&#305; getirir
'[H:J].Clear
son = Application.CountA(Columns(2))

For t = 1 To son
    say = WorksheetFunction.CountIf(Columns(2), Cells(t, 2))
If say > 1 Then
    Cells(t, 2).Font.ColorIndex = 3
End If
Next
'[H:J].Sort KEY1:=[H1]
End Sub
benim iste&#287;im ise &#351;u;

anasayfadaki listeden TC.Kimlik No s&#252;tununa g&#246;re bir d&#246;ng&#252; ba&#351;latmak ve s&#305;ras&#305;yla birinci sat&#305;rdan ba&#351;layarak
TC.Kimlik Noyu "VER&#304;" sekmesindeki ayn&#305; s&#252;tunla kar&#351;&#305;la&#351;t&#305;rmas&#305;n&#305; istiyorum. Ayn&#305; TCKN yi buldu&#287;unda devam&#305;ndaki s&#252;tunlar&#305;
(yani ad&#305;, di&#287;er ad&#305;, soyad&#305;, baba ad&#305;, baba di&#287;er ad&#305; s&#252;tunlar&#305;n&#305;) kar&#351;&#305;la&#351;t&#305;rmas&#305;n&#305; istiyorum. &#304;kisi aras&#305;nda farkl&#305;l&#305;k buldu&#287;unda ise
yani hata buldu&#287;unda ana listenin o sat&#305;r&#305;n&#305; "HATALI" sekmesinde s&#305;ras&#305;yla yazs&#305;n. Ayn&#305; ise taramaya ikinci sat&#305;rdaki TCKN'den devam etsin.
yani s&#305;ras&#305;yla t&#252;m TC kimlik nolar&#305;n&#305; benim veri sayfamdakilerle kar&#351;&#305;la&#351;t&#305;racak buldu&#287;unda devam&#305;ndaki verileri kar&#351;&#305;la&#351;t&#305;racak, ayn&#305; ise
taramaya devam edecek, farkl&#305; ise o sat&#305;r&#305; hatal&#305; sayfas&#305;ndaki &#231;izelgeye i&#351;leyecek. e&#287;er anasayfada olupta veri sayfas&#305;nda olmayan kay&#305;t bulursa onu da hatal&#305; sayfas&#305;na i&#351;lemesi gerekiyor. zaten yukar&#305;daki kod bu sorunu &#231;&#246;z&#252;yor, ancak ilk sorunuma cevap bulam&#305;yorum. Bu &#351;ekilde incelemem gereken binlerce sat&#305;rl&#305;k 26 ayr&#305;
&#231;al&#305;&#351;ma kitab&#305; var. K&#305;sacas&#305; i&#351;inden i&#231;inden &#231;&#305;kamad&#305;m ve nas&#305;l &#231;&#305;kaca&#287;&#305;m&#305; da bilmiyorum.

bu sorunun &#231;&#246;z&#252;m&#252; oldu&#287;una inan&#305;yorum &#231;&#252;nk&#252; d&#252;n gece yabanc&#305; bir sitede buna &#231;ok benzeyen bir uygulamay&#305; g&#246;rd&#252;m, ancak bilgisayar&#305;ma kaydetmedim. bug&#252;n bu sitede bu kodu g&#246;rd&#252;&#287;&#252;mde farkettim ayn&#305; i&#351;e yarayabilece&#287;ini ancak i&#351; i&#351;ten ge&#231;mi&#351;ti.. :( sabahtan bu yana ar&#305;yorum ve &#231;&#305;ld&#305;rmak &#252;zereyim ancak ne siteyi nede benzer uygulamay&#305; bulamad&#305;m. ekteki &#246;rne&#287;i incelermisiniz ve biraz zaman&#305;n&#305;z&#305; ay&#305;r&#305;p bana yard&#305;mc&#305; olabilirmisiniz? ayr&#305;ca ayn&#305; konuyla ilgili yeni konu a&#231;m&#305;&#351; olmaktan dolay&#305; verdi&#287;im rahats&#305;zl&#305;k i&#231;in kusura bakmay&#305;n.. :(:(

sayg&#305;lar..
 
Son düzenleme:

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Aşağıdaki kodu deneyin.

Kod:
Sub karsilastir()
Set s1 = Sheets("ANALİSTE")
Set s2 = Sheets("VERİ")
Set s3 = Sheets("HATALI")
s3.[a3:g65536].ClearContents
For a = 2 To s1.[a65536].End(3).Row
say = WorksheetFunction.CountIf(s2.[a:a], s1.Cells(a, "a"))
If say > 0 Then
sat = s2.[a1:a65536].Find(s1.Cells(a, "a")).Row
For b = 2 To 6
If s1.Cells(a, b) <> s2.Cells(sat, b) Then
sonsat = s3.[b65536].End(3).Row + 1
s3.Cells(sonsat, "a") = sonsat - 2
s3.Range("b" & sonsat & ":g" & sonsat) = s2.Range("a" & sat & ":f" & sat).Value
GoTo 10
End If
Next
End If
10 Next
MsgBox "işlem tamamlandı."
End Sub
 
Katılım
14 Ekim 2006
Mesajlar
408
Excel Vers. ve Dili
excel 2003 TR
sn. levent bey;

gerçekten ne diyeceğimi bilemiyorum. tek kelimeyle muhteşem.. size nasıl teşekkür etsem azdır valla.. yaklaşık 40bin satırlık veriyi bu şekilde tek tek karşılaştırmam gerekiyordu. günlerce hatta haftalarca sürecek bir işlemden kurtardınız beni...

ancak küçük bir sorum daha olacak. sn.zafer beyin yukarıda yazdığım komutları için de ayrı ayrı butonlar koydum sayfa üzerine. ve ikinci makro çalıştığında (ilke_göre_benzemeyenleri_bul) sonuçları "hatalı2" diye oluşturduğum sayfaya yazmasını istiyorum. kod çalışıyor ancak hepsini bulamıyor. sanırım kodları doğru uyarlayamadım. ve nerede hata yaptığımı göremiyorum. lütfen ilgilenir misiniz?
(hazırlamaya çalıştığım dosya ekte)

saygılar...
 
Katılım
14 Ekim 2006
Mesajlar
408
Excel Vers. ve Dili
excel 2003 TR
kodlar mükemmel çalışıyor, ancak küçük bir sorum var?

sayın leventm ve tüm saygıdeğer üstadlarım;

yukarıdaki sorumu (3ncü mesaj) unutun.. :mrgreen: :mrgreen: o problemi çözdüm, yani sorun tamamen benden kaynaklanıyormuş. :hihoho: :hihoho:
iki gündür sn.leventm tarafından hazırlanan kodları esas belgelerime uyarlamakla meşgulum. eğer bir yerlerde yanlışlık yapmıyorsam kodların çalışma mantığını büyük ölçüde anladım ve kodlar kusursuz çalışıyor.ancak şöyle bir sorum olacak;

yukarıda yazdığım sn.zafer tarafından hazırlanan kodlara küçük bir ilave yapmak istiyorum. ilke_göre_benzemeyenleri_bul makrosu çalıştığında s1 de olupta s2 de olmayan verileri buluyor ve tüm satırı s3'e yazıyor. işte bu noktada yani s3 e yazdıktan sonra bu verileri s1 den silsin istiyorum. (mümkünse tüm satır olarak).. bununla ilgili nasıl bir ilave yapabiliriz..

bu sorunu nasıl çözebiliriz, değerli fikirlerinizi bekliyorum??
 
Son düzenleme:
Katılım
14 Ekim 2006
Mesajlar
408
Excel Vers. ve Dili
excel 2003 TR
fikri olan var mı?

sayın üstadlarım;
Sn.Zafer Bey'e ait kodlar aşağıdadır. s2'de olup, s1'de olmayan kayıtları bulup s3'e kaydediyor aşağıdaki kodlar.. buna ilaveten bu bulduğu kayıtları s2'den silmesini (tüm satırı) nasıl sağlayabiliriz? buna çok acil ihtiyacım var, hala işyerindeyim ve mesai yapıyorum.. :(:( değerli fikirlerinizi bekliyorum...

Kod:
Sub ilke_gore_Benzemeyenleri_bul()
Set s1 = Sheets("şube")
Set s2 = Sheets("mernis")
Set s3 = Sheets("fark")
s3.Range("a2:q65000").ClearContents
ason = s1.Cells(65536, 2).End(xlUp).Row
bson = s2.Cells(65536, 2).End(xlUp).Row
For a = 2 To bson + 1
b = WorksheetFunction.CountIf(s1.Range("b2:b" & ason), s2.Cells(a, 2))
If b <> 1 Then
c = c + 1
For i = 1 To 14
s3.Cells(c + 1, i) = s2.Cells(a, i)
Next
End If
Next a
End Sub
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Kod içine aşağıdaki kırmızı renkli satırı ilave ederek deneyin.

Kod:
[LEFT]Sub ilke_gore_Benzemeyenleri_bul()
Set s1 = Sheets("şube")
Set s2 = Sheets("mernis")
Set s3 = Sheets("fark")
s3.Range("a2:q65000").ClearContents
ason = s1.Cells(65536, 2).End(xlUp).Row
bson = s2.Cells(65536, 2).End(xlUp).Row
[COLOR=red][B]For a = bson + 1 to 2 step -1
[/B][/COLOR]b = WorksheetFunction.CountIf(s1.Range("b2:b" & ason), s2.Cells(a, 2))
If b <> 1 Then
c = c + 1
For i = 1 To 14
s3.Cells(c + 1, i) = s2.Cells(a, i)
Next
[COLOR=red][B]s2.rows(a).delete[/B][/COLOR]
End If
Next a
End Sub[/LEFT]
 
Katılım
14 Ekim 2006
Mesajlar
408
Excel Vers. ve Dili
excel 2003 TR
Sayın Leventm üstadım,

akşamdam bu yana kodları deniyorum ve bilgileri kontrol ediyorum. bu yüzden size geri dönüş yapamadım. çok çok teşekkürler.. kodların hepsi mükemmel ve sorunsuz çalışıyor.. "sıfır hata".. gerçekten harika.. elinize emeğinize sağlık.. bu arada sayın zafer beye de teşekkürler.. elleriniz dert görmesin sayın üstadlar...

saygılar...

:hihoho: :hihoho: :hihoho:
 
Katılım
13 Kasım 2006
Mesajlar
13
Excel Vers. ve Dili
2003 versiyonu
Türkçe dili
Hatalıların renklerini değiştirmek

Yukarıdaki örneği inceledim fakat ben kod yazma olayına yabancıyım. Eğer Bu kodların karşısına ' işareti ile ne anlatmak istediğini de yazarsanız sevinirim. En azından örneğe bakınca ne demek istediğini anlamaya çalışırım. O kodda bulunan Row ne manaya geliyor? diğerleride bilemiyorum. Ama Yaptığım iş gereği bunlar banada çok lazım oluyor. Çalıştığım yerde genellikle excel kullanmak zorundayız. İlgilenenlere Teşekkür ediyorum.
 
Üst