Çözüldü Daha Önce Kullandığım, EŞLEŞMEYEN (FARKLAR) VBA Kodu Çalışmıyor.

Katılım
15 Aralık 2015
Mesajlar
5
Excel Vers. ve Dili
2010 TR
Aşağıdaki makro ile daha önce az sayıda veriyi karşılaştırdığımda, 2 sayfa arasında A sütünlarında ki eşleşmeyen verilerin çıktısını alabiliyordum. Bu gün bu makroyu 1200 adet seri no bazında satır ile denediğimde, eşleşmeyen (farklı) değer yerine tüm değerleri getirdiğini gördüm.

Kısaca yapmak istediğim, SISTEM_SERI_NO sayfasındaki A sütünü ile SAYIM_SERI_NO sayfasındaki A sütunlarında bulunan eşleşmeyen (farklı) satırları, FARKLAR sayfasına önce mevcut eski datayı silerek, Sistem_Seri_No sayfasındaki A,B ve C sütünlarını FARKLAR sayfasında 4 ncü satırdan sonraya A,B ve C sütunlarına kopyalamak.

NOT: Kontrol gerçekleşecek A sütünündaki bazı seri no lar excel formatı olarak TEXT (METİN) değerindedir.

Yardımcı olabilirseniz sevinirim. Teşekkürler...

Merhabalar,
C:
Sub Seri_No_Kontrol()

Dim i As Long
Dim S1 As Worksheet: Set S1 = Sheets("Sistem_Seri_No")
Dim S2 As Worksheet: Set S2 = Sheets("Sayim_Seri_No")
Dim S3 As Worksheet: Set S3 = Sheets("FARKLAR")
Application.ScreenUpdating = False
S3.Range("A4:C5000").Clear
sat = 4
    For i = 2 To S1.Range("A5000").End(3).Row
    If S1.Cells(i, "A") <> S2.Cells(i, "A") Then
    S1.Range("A" & i & ":C" & i).Copy S3.Cells(sat, "A")
    sat = sat + 1
End If
Next i
Application.ScreenUpdating = True
MsgBox "Eşleşmeyen Veriler Listelendi... ", vbInformation

End Sub
ÖRNEK ÇALIŞMA DOSYASI:
HTML:
https://drive.google.com/file/d/1bURA4n0ajDiyL4i0lUioy1R7j1qby0MZ
 
Son düzenleme:

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Merhaba.

Üyelik eski ama ilk mesaj olduğuna göre foruma hoşgeldiniz demek lazım sanırım.

Sorularınızı; gerçek belgenizin, özel bilgi içermeyen kopyası şeklinde hazırlayacağınız örnek belge üzerinden sorarsanız
daha hızlı ve net çözüme ulaşmanız kolaylaşır.
Örnek belgenin, gerçek belgeyle aynı yapıda ve gerçek belgedeki verileri temsil edebilecek nitelikte ve az miktarda veri içermesi yeterlidir.

Örnek belge özellikleri ve örnek belge yükleme yöntemine ilişkin kısa açıklama cevabımın altındaki İMZA bölümünde var.
.
 
Katılım
15 Aralık 2015
Mesajlar
5
Excel Vers. ve Dili
2010 TR
Merhaba @Ömer BARAN Hocam,

Sıcak karşılamanız için teşekkür ederim. Belirttiğiniz gibi eski üyeyim. Ama mesaj yazmak yada konu açmak nasip olmadı. Genelde konuları inceleyerek siteden faydalanıyorum. Excel konusunda çok verimli ve bilgi paylaşımı konusunda örnek bir site.

Örnek dosya linkini google drive ekleyerek link olarak paylaştım. Dosya az satırlı verilerde sorunsuz çalışıyor. Lakin 1000 üzeri seri no kontrollerde makro çalışmıyor. Tüm datayı döküyor.
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Örnek verilere baktığımda belli bir düzen görüyorum o da şöyle;
-- veriler her iki kaynak sayfada aynı sırayla yer alıyor,
-- üstten aşağıya doğru eşleşmeyen ilk veriye rastlandığında, bu veri ve altındaki satırlarda kalan veriler eşleşmiyor,
Örnek belgede mevcut kodlar bu yapıya uygun gibi görünüyor.

Gerçek belgenizde de durum böyle midir?
Yoksa veriler kaynak sayfaların herbirinde farklı satırlarda da eşleşebiliyor mu?
.
 
Son düzenleme:
Katılım
15 Aralık 2015
Mesajlar
5
Excel Vers. ve Dili
2010 TR
Dökümanda, sistemde yer alan seri numaralı ekipmanları. Fiziksel sayım sunucu datası ile karşılaştırarak, hem sistem ve sayım farkı, hemde sayım ile sistem arasındaki farkı bulmak için kullanmak istiyorum.

Sistemden çektiğim A sütununda yer alan data ve, sayımda çıkan A sütunundaki data arasında sıralama karışık olarak ekleyeceğim.

Sistemde 1100 kadar satır var, sayımda da buna yakın data.

Örnek dosyaya, örnek olması amacı ile ilk sıtırlar aynı son satırlar farklı data ekledim.

Karşılaştırma yapılacak A sütunlarında ki seri nolar 10 ile 25 karakter arasında rakam ve alfabetik karışık yer alıyor. A sütunları hücre formatı bu sebep ile METİN (TEXT) formatındadır.

Dokümanı iş sebebi ile kulanacağımdan, bilgi güvenliği sebepli gerçek seri numaraları yada datayı örnek ekleyeedim. ☺
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Gerçek veri olması önemli değil, daha önce belirtmiştim. METİN formatında demeniz yeterli elbette.
Belgede mevcut kodlar, verilerin aynı sırada olduğunu varsayıyor durumda ve bu nedenle sonuç alamıyorsunuz.
Şimdilik (birazdan) yine For...Next döngüsüyle oluturulmuş çözüm önerisi vereceğim.
Daha hızlı çalışacak bir kod yapısını daha sonra düşünürüz.
Merak etmeyin, başladığım konuyu yarıda bırakmam.

-- Sayfalardaki sütun sayıları gerçek belgenizdekiyle aynı mıdır?
-- Eşleşme olmayanları iki taraflı mı kontrol etmek gerekiyor acaba? Belgenizde iki karşılaştırma için iki ayrı kod görüyorum çünkü.
-- Bu iki karşılaştırmayı ayrı ayrı yapmak şart mıdır yoksa tek kod ile de olabilir mi?
-- Ayrıca veri kaynağı olan sayfalarda bir silme işlemi olacak mı, yoksa kaynak sayfalar olduğu gibi kalacak mıdır?

Sorduğum hususları net cevaplarsanız daha hızlı sonuca ulaşılır.
NOT:Bilgisayar başındayım, sık sık sayfayı yenileyip, yeni sorum olduğunda hemen cevaplarsanız iyi olur.
 
Son düzenleme:
Katılım
15 Aralık 2015
Mesajlar
5
Excel Vers. ve Dili
2010 TR
--Sayfalardaki sütun sayıları gerçek belgenizdekiyle aynı mıdır?

Sütun sayısı aynıdır. Değişmeyecek.

-- Eşleşme olmayanları iki taraflı mı kontrol etmek gerekiyor acaba? Belgenizde iki karşılaştırma için iki ayrı kod görüyorum çünkü.

Evet eşleşmeyen seri numaraları iki taraflı kontrol etmem gerekiyor.

-- Ayrıca veri kaynağı olan sayfalarda bir silme işlemi olacak mı, yoksa kaynak sayfalar olduğu gibi kalacak mıdır?

Veri kaynağı sayfalar aynı kalacak. Sadece her komutta, farklar sayfası 4 ncü satırdan sonra silinerek, yeni çıktı üstüne yazılacak.
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Tamamdır, anladım.
İki karşılaştırma iki ayrı veri seti oluşturacak.
.
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Tekrar meerhaba.

Mevcut kodların tümünü silin (Module2 ve 3'ü tamamen silebilirsiniz)
Aşağıdaki kodları Modul1'e yapıştırın.
Sayfadaki ilgili düğmelerle kodları ilişkilendirin (şekile sağ tıklayın, MAKRO ATA yı seçip ilgili kod'un adını seçerek işlemi onaylayın).
Sayfadaki düğmelere tıklayarak sonucu gözlemleyin.

For...Next döngüsü yerine formül ve filtrenin gücünden yararlanıldığından, yeterince hızlı sonuç verecektir.
C:
Sub ERP_Seri_Kontrol()
Dim S1, S2, S3 As Worksheet
Set S1 = Sheets("ERP_Seri"): Set S2 = Sheets("BARSAN_Seri")
Set S3 = Sheets("FARKLAR")
Application.ScreenUpdating = False: Application.Calculation = xlCalculationManual
If S1.AutoFilterMode = True Then S1.AutoFilterMode = False
If S2.AutoFilterMode = True Then S2.AutoFilterMode = False
S1son = S1.Cells(Rows.Count, 1).End(3).Row
S2son = S2.Cells(Rows.Count, 1).End(3).Row
S3.Range("A4:C" & Rows.Count).Clear
    S1.Columns("D:D").Insert Shift:=xlToRight
    S1.[D2].Formula = "=COUNTIF(BARSAN_Seri!A2:A" & S2son & ",A2)"
    S1.[D2].AutoFill Destination:=S1.Range("D2:D" & S1son)
    S1.Range("D2:D" & S1son).Calculate
    S1.Range("A1:D" & S1son).AutoFilter Field:=4, Criteria1:="=0"
If S1.Cells(Rows.Count, 1).End(3).Row > 1 Then
    S1.Range("A2:C" & S1son).SpecialCells(xlCellTypeVisible).Copy S3.[A4]
End If
S1.AutoFilterMode = False: S1.Columns("D:D").Delete Shift:=xlToLeft
Application.ScreenUpdating = True: Application.Calculation = xlCalculationAutomatic
MsgBox "ERP Stok, BARSAN Stok İle Eşleşmeyen Veriler Listelendi...", _
    vbInformation, "..:: Ömer BARAN :..."
End Sub

Sub BARSAN_Seri_Kontrol()
Dim S1, S2, S3 As Worksheet
Set S1 = Sheets("ERP_Seri"): Set S2 = Sheets("BARSAN_Seri")
Set S3 = Sheets("FARKLAR")
Application.ScreenUpdating = False: Application.Calculation = xlCalculationManual
If S1.AutoFilterMode = True Then S1.AutoFilterMode = False
If S2.AutoFilterMode = True Then S2.AutoFilterMode = False
S1son = S1.Cells(Rows.Count, 1).End(3).Row
S2son = S2.Cells(Rows.Count, 1).End(3).Row
S3.Range("A4:C" & Rows.Count).Clear
    S2.Columns("D:D").Insert Shift:=xlToRight
    S2.[D2].Formula = "=COUNTIF(ERP_Seri!A2:A" & S1son & ",A2)"
    S2.[D2].AutoFill Destination:=S2.Range("D2:D" & S2son)
    S2.Range("D2:D" & S2son).Calculate
    S2.Range("A1:D" & S2son).AutoFilter Field:=4, Criteria1:="=0"
If S2.Cells(Rows.Count, 1).End(3).Row > 1 Then
    S2.Range("A2:C" & S2son).SpecialCells(xlCellTypeVisible).Copy S3.[A4]
End If
S2.AutoFilterMode = False: S2.Columns("D:D").Delete Shift:=xlToLeft
Application.ScreenUpdating = True: Application.Calculation = xlCalculationAutomatic
MsgBox "BARSAN Stok, ERP Stok İle Eşleşmeyen Veriler Listelendi...", _
    vbInformation, "..:: Ömer BARAN :..."
End Sub
 
Son düzenleme:
Katılım
15 Aralık 2015
Mesajlar
5
Excel Vers. ve Dili
2010 TR
Merhabalar @Ömer BARAN Hocam;

Eski VBA kodları silerek, yeni VBA kodları olulşturdum. Buttonları güncelledikten sonra datayı sayfalara ekledim ve test ettim.

Genel olarak eşleşmeyenleri çıkarıyor, lakin her iki sayfada olan text değerinde seri nolarıda eşleşmeyen olarak görüyor ve ekliyor. Ayrıca anlayamadığım, text değerde olmayan bazı seri numaralarda her iki sütun aynı olmasına karşın, eşleşmedi sayıp listeliyor.
 
Üst