Karşılaştırma

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,591
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Özür dilerim yukarıdaki kodun saniye kısmında hata yapmışım kodu güncelledim. İkinci sorunuzu bir örnekle açıklarsanız yardımcı olmaya çalışırız.
 
Katılım
3 Kasım 2006
Mesajlar
11
Excel Vers. ve Dili
Excel 2003
kerşılaştırma

merhaba sn: cost control :

saniye kısmında hata yaptım demişsiniz, kastettiğiniz hata "hh:mm:nn" mıdır? bunu "hh:mm:ss" olarak değiştirmissiniz. doğrumu anladım. benim anlatmak istediğim ise

S4.Cells(S, 4) = Format(S2.Cells(X5, 4), "dd.mm.yyyy hh:mm:nn") komut satırının Firma1 yada Firma 2 kayıtlarında bulduğu kayıtları eşleşenler yada eşleşmeyenler sayfasına atarken Firma 1 yada Firma 2 sayfasında aramanın zaman kısmını farklı olarak atıyor. mesela veri sayfasına 08:11:26 olan aramayı bulunca eşleşenler sayfasına 08:11:30 olarak atıyor. bilmem tam olarak anlatabildimmi? bu problemi şu şekilde hallettiğimi düşünüyorum ama sizin düşüncenizi almak istiyorum.

Sub LİSTELERİ_KARŞILAŞTIR()
Set S1 = Sheets("FİRMA 1")
Set S2 = Sheets("FİRMA 2")
Set S3 = Sheets("EŞLEŞENLER")
Set S4 = Sheets("EŞLEŞMEYENLER")
S3.[A2:E65536].ClearContents
S4.[A2:E65536].ClearContents
S = 1
S1.Select
For X1 = 4 To [A65536].End(3).Row
Cells(X1, 6) = Cells(X1, 2) & Cells(X1, 3) & Cells(X1, 4)
Next
S2.Select
For X2 = 4 To [A65536].End(3).Row
Cells(X2, 6) = Cells(X2, 2) & Cells(X2, 3) & Cells(X2, 4)
Next
S3.Select
For X3 = 4 To S1.[A65536].End(3).Row
Say = WorksheetFunction.CountIf(S2.[F4:F65536], S1.Cells(X3, 6))
If Say > 0 Then
S = S + 1
S3.Cells(S, 1) = S1.Cells(X3, 1)
S3.Cells(S, 2) = S1.Cells(X3, 2)
S3.Cells(S, 3) = S1.Cells(X3, 3)
S3.Cells(S, 4) = S1.Cells(X3, 4)
S3.Cells(S, 5) = S1.Name
End If
Next
S = 1
S4.Select
For X4 = 4 To S1.[A65536].End(3).Row
Say = WorksheetFunction.CountIf(S2.[F4:F65536], S1.Cells(X4, 6))
If Say = 0 Then
S = S + 1
S4.Cells(S, 1) = S1.Cells(X4, 1)
S4.Cells(S, 2) = S1.Cells(X4, 2)
S4.Cells(S, 3) = S1.Cells(X4, 3)
S4.Cells(S, 4) = S1.Cells(X4, 4)
S4.Cells(S, 5) = S1.Name
End If
Next
For X5 = 4 To S2.[A65536].End(3).Row
Say = WorksheetFunction.CountIf(S1.[F4:F65536], S2.Cells(X5, 6))
If Say = 0 Then
S = S + 1
S4.Cells(S, 1) = S2.Cells(X5, 1)
S4.Cells(S, 2) = S2.Cells(X5, 2)
S4.Cells(S, 3) = S2.Cells(X5, 3)
S4.Cells(S, 4) = S2.Cells(X5, 4)
S4.Cells(S, 5) = S2.Name
End If
Next
S1.[F4:F65536] = ""
S2.[F4:F65536] = ""
MsgBox "İŞLEMİNİZ TAMAMLANMIŞTIR.", vbInformation
End Sub

2. sorum ise bu program birebir aynı olan ( saat:dk:sn ) kayıtları eşliyor. şöyle bir şey olabilirmi acaba? saat:dk aynı olsun ama saniye kısmında 10 saniyelik bir aralıklı arasın. mesela 08:11:26 olan kayıtı eşleştirmeye çalışırken 08:11:16 ile 08:11:36 arası olan kayıtlarada bakabilsin, sonra birebir eşleşen yok ise bu aralıktaki kayıtı eşleştirsin. umarım tam olarak anlatabilmişimdir. teşekkür ederim. iyi çalışmalar.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,591
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Evet doğru anlamışsınız hata yaptığım kısım kodun saniye kısmıdır. Bu kısımı "ss" olarak düzeltince bahsettiğiniz saniye farkları oluşmayacaktır.

İkinci sorunuza gelince hem birebir eşleşen hem de verdiğiniz saniye aralığında veri olduğunda ne gibi bir işlem yapılacak. Sadece birebir eşleşen kayıtmı aktarılacak yoksa her durumda verdiğiniz saniye aralığına uyan kayıtlarmı aktarılacak ?
 
Son düzenleme:
Katılım
3 Kasım 2006
Mesajlar
11
Excel Vers. ve Dili
Excel 2003
kerşılaştırma

merhabalar sn : cost control ;

daha açık anlatmaya çalışayım. ilk olarak birebir eşleşen kaydı eşleşen sayfasına yazdıracak sonra saniye aralıgına bakacak, eğer aynı kayıt için o saniye aralığında ( 10 sn gibi ) kayıt bulursa onlarıda eşleşenler sayfasına yazdırıcak. yani önce birebirleri sonrada saniye aralıgında eşleşenleri eşleşenler sayfasına yazıdırıcak. bilmiyorum daha açık oldumu? ilginiz için tekrar teşekkür derim.
 
Katılım
3 Kasım 2006
Mesajlar
11
Excel Vers. ve Dili
Excel 2003
karşılaştırmA

merhaba sn : cost conrol,

eğer müsaitseniz bir önceki mesajımda belirttiğim konu ile ilgili olarak cevabınızı ve yardımınızı bekliyorum. başınızı ağrıttım kusura bakmayın.iyi çalışmalar
 
Katılım
22 Kasım 2005
Mesajlar
2
Karşılaştırma Hk.

Selam Arkadaşlar,

Karşılaştırma ile ilgili yazılanları okudum fakat acemiliğimden aşağıda gönderdiğim tabloda istediklerimi yapamadım.
Konu ile ilgili yardım edeceğinizi umarım.

İstedigim "DATA1" "DATA2" sheet lerindeki verileri birbirleriyle karşılaştıracak "DATA1" olup "DATA2" olmayan var ise "OLMAYANLAR" sheet ine yazacak "DATA2" de olup "DATA1" yoksa yine "OLMAYANLAR" sheet ine yazacak.

Yardımlarınız için teşekür ederim.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,591
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Sn. resurrection,

Ekteki dosyayı incelermisiniz. Umarım istediğiniz gibi olmuştur.
 
Son düzenleme:
Katılım
13 Haziran 2007
Mesajlar
25
Excel Vers. ve Dili
excel 2010-ingilizce
Eslesmeyenlerde problem yasıyorum

Korhan bey merhaba

Oncelikle bu makro icin cok tesekkur ederim ellerinize saglık.

PROBLEM 1

Yazdıgınız makroyu kendi dosyalarıma, ekte goreceginiz gibi YTL ve DOVIZ faturalarımın muhasebe ile modul karsılastırmalarında kullandım ve sonucları kontrol etmek icin eslesenleri ve eslesmeyenlerin toplamlarını ana dosyalarla karsılastırdım MOD_YTL,MALI_YTL dosyalarının karsılastırmalarında bir problem yok fakat DOVIZ karsılastırmalarında MOD_DOV dosyasında bir problem yokken MALI_DOV dosyasında bası eslesmeyen faturaları ESLESMEYENLER_DOV sheetinde gostermiyor gostermedigi faturaları tespit edip ESLESMEYENLER_DOV_ACIKLAMA adıyla yanındaki sheete kopyaladım bunu neden yapıyor olabilir bu problem konusunda yardımcı olabilirseniz bu makro cok isime yarıyacak simdiden tesekkurler

PROBLEM 2

ESLESMEYENLER_DOV sheetinde gordugunuz gibi cok fazla kayıt var bunun sebebi 0.01 yada 0.02 lik tutar farkları, B - C - D sutunlarındaki hassasiyeti degistirebilirmiyiz ornegin 0.03 luk + , - farkları dikkate alma gibi.
Bu problemimlede ilgili yardımlarınız icin simdiden cok tesekkurler.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,591
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Ekte örnek dosyanız üzerinde gerekli düzenlemeleri yaptım. İncelermisiniz.

Makroyu çalıştırdığınızda karşınıza bir kutucuk gelecek ve kuruş hassasiyet değerini girmenizi isteyecek. Bu kutucuğa örneğin 0,05 olarak değer girin.

Çok satırlı sayfalarınızda işlem süresi biraz uzun sürebilir.
 
Son düzenleme:
Katılım
13 Haziran 2007
Mesajlar
25
Excel Vers. ve Dili
excel 2010-ingilizce
Korhan bey merhaba

Emeginiz icin nekadar tesekkur etsem azdır.

Kurus problemim cozulmus gozukuyor fakat YTL karsılastırma makrosunda yaptıgımı testlerde MOD_YTL sheetindeki 2 kayıtta 0.05 lik ve 0.02 lik oynamalar yapıp kurus hassasiyetini 0.01 e cıkarttım eslesenlerde bu iki kaydı dokmedi buraya kadar sorun yok fakat eslesmeyenler listesinde bu iki kaydı gostermesi gerekiyordu bunu yapmadı yardımcı olabilirseniz sevinirim.

YTL karsılastırma dosyasında yaptıgım testi ekte gonderiyorum.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,591
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Üstteki mesajımdaki dosyada gerekli düzeltmeyi yaptım. İncelermisiniz.
 
Katılım
13 Haziran 2007
Mesajlar
25
Excel Vers. ve Dili
excel 2010-ingilizce
Korhan bey merhaba

Eslesmeyenlere MOD_YTL ile ilgli eslesmeyen faturaların bilgilerini atıyor fakat MALI_YTL deki eslesmeyen faturaların bilgilerini atmıyor yani Eslesmeyenlere her iki karsılastırma dosyasındaki eslesmeyen faturaların bilgilerini yanlarında hangi ana dosyaya ait oldugunu gostererek atmasını saglayabilirseniz super olacak.tekrar tekrar cok tesekkurler.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,591
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Üstteki mesajımdaki dosyada gerekli düzeltmeyi yaptım. İncelermisiniz.
 
Katılım
13 Haziran 2007
Mesajlar
25
Excel Vers. ve Dili
excel 2010-ingilizce
Tek kelime ile süpersiniz ellerinize sağlık,ne kadar teşekkür etsem azdır.
 
Katılım
13 Haziran 2007
Mesajlar
25
Excel Vers. ve Dili
excel 2010-ingilizce
Korhan bey merhaba

size yukarıdaki mesajı yazdıktan sonra son bir test daha aklıma geldi,

MOD_YTL sayfasındaki bir kaydı sildim,MALI_YTL sayfasında bıraktım ve karsılastırma makrosunu calıstırdım, beklentim MOD_YTL dosyasında sildigim kaydın eslesmeyenler dosyasında MALI_YTL de olup MOD_YTL dosyasında olmayan seklinde gostermesiydi fakat ne eslesenlerde nede eslesmeyenlerde gosterdi aynı testi MALI_YTL de sayfasında silip MOD_YTL sayfasında bırakarakta denedim burdada ilk testimle aynı sonucu aldım.

Kısacası benim bu makrodan beklentim;MOD_YTL dosyasındakileri MALI_YTL dosyasında arayacak eslesenleri eslesen sayfasına ,eslesmeyenleri eslesmeyen sayfasına atacak sonra MALI_YTL sayfasındakileri MOD_YTL sayfasında arayacak eslesenleri eslesen sayfasına ,eslesmeyenleri eslesmeyen sayfasına atacak.(eslesenler sayfasına sadece birinci karsılastırdıgı dosyadaki bilgileri yazması yeterli fakat eslesmeyenler dosyasına her iki dosyadaki bilgileri yazması gerekiyor)

Her nekadar eski bir uye olarak gozuksemde islerimin yogunlugu sebebiyle malesef aktif olarak yogun bir sekilde yeni kullanmaya basladım ve keske bir sekilde vakit ayırıpta uye oldugumdan beri kullanabilseydim diye pismanlık duyuyorum ,sitenizdeyken kısa surede o kadar cok seyler ogrendimki katkısı olan herkese sonsuz tesekkurler.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,591
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Üstteki mesajımdaki dosyada gerekli düzeltmeyi yaptım. İncelermisiniz.
 
Katılım
13 Haziran 2007
Mesajlar
25
Excel Vers. ve Dili
excel 2010-ingilizce
Ellerinize saglık sayenizde sitemiz super bir karsılastırma makrosu kazandı.tesekkurler.
 
Üst