Karşılaştırmada bir sorunum var..
Ekli dosyalar
-
49.5 KB Görüntüleme: 18
DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
Altın Üyelik Hakkında Bilgi
Daha önce verdiğim cevap size uymuyor siz xlWhole kullanmak durumundasınız, çünkü her biri farklı değerlere sahip karşılaştırmada hata çıkmasının nedeni bu, diğer bir hata da iki sayfada stok kısmında yazılan değerlerin birbirleriyle birebir eş olmadığı için excelin bul dediğiniz zaman bu verileri bulamaması, ben bir sayfadan diğerine kopyalayıp yapıştırdığım zaman sonuç doğru çıktı.LookAt:=xlWhole yerine LookAt:=xlPart şeklinde deneyin
Boşluklar hücrelerin sonlarındaydı. Diğer hususa gelince dosyayı her ayrı stoğu farklı olarak okuyacak şekilde düzenledim, dosyayı ekliyorum incelerseniz üzerinde konuşuruz.Boşluk göremiyorum nasıl anladınız biri programdan aldığım liste biride excel dosyalarından süzdüğüm liste birbiriyle aynı gibi görünüp nasıl farklı olduklarını çözemedim. İlgin için çok tşk ederim.
Sub Karsilastir()
Set s1 = Sheets("Sayfa1")
Set s2 = Sheets("Sayfa2")
Set s3 = Sheets("Sayfa3")
Set sf = Sheets("FARK")
'İki boyutlu bir dizi oluşturuyoruz, böylece her stok için 3 tane veri girebileceğiz,
'İlki stoğun adı, 2.si sayfa1 değerleri, 3.sü sayfa2 değerleri
Dim stok(0 To 200, 1 To 3)
Application.ScreenUpdating = False
sf.Range("A2:D65536").ClearContents
s3.Range("A2:D65536").ClearContents
'***************************************
'Yıldızlı kısımlar arasında verileri dizimize alıyoruz.
'Önce sayfa1 dekileri direk diziye alıyorz
'hem stok isimleri hemde sayfa1 değerlerini
For i = 2 To s1.[A65536].End(3).Row
stok(i - 2, 1) = RTrim(s1.Cells(i, "A"))
stok(i - 2, 2) = s1.Cells(i, "B")
Next
'Şimdi sayfa2 deki A sütunundakileri önce dizimizdeki elemanlarla karşılaştıracaz
'eğer eşitlik var ise onay değeri False olacak bizde o değeri tekrar diziye eklemeyecez
'ancak o stoğun karşısındaki değeri dizimizin 3 . elemanı olarak alacağız.
k = i - 2
For j = 2 To s2.[A65536].End(3).Row
onay = True
For z = 0 To k
If RTrim(s2.Cells(j, "A")) = stok(z, 1) Then
onay = False
stok(z, 3) = s2.Cells(j, "B")
End If
Next
'Aşağıda eğer onay true olmuşsa ki bu şu demek yukarıdaki karşılaştırmada hiç
'aynı değere rastlanmamış ki onay false olmamış, böyle olunca bu stoğu dizimize
'yeni eleman olarak aldırıyoruz ve karşısındaki değeri yine 3. eleman olarak aldırıyoruz
If onay Then
stok(i - 2, 1) = RTrim(s2.Cells(j, "A"))
stok(i - 2, 3) = s2.Cells(j, "B")
i = i + 1
End If
Next
'****************************************************
'Aşağıda alınan değerleri sayfa3 ve fark sayfasına yazdırıyoruz.
k = i - 3 ' bu satırla dizimizde toplam kaç eleman olmuş onu öğreniyoruz.
For i = 0 To k
s3.Cells(i + 2, "A") = stok(i, 1)
s3.Cells(i + 2, "B") = stok(i, 2)
s3.Cells(i + 2, "C") = stok(i, 3)
s3.Cells(i + 2, "D") = stok(i, 2) - stok(i, 3)
Next
y = 1
For i = 0 To k
If stok(i, 2) - stok(i, 3) <> 0 Then
y = y + 1
sf.Cells(y, "A") = stok(i, 1)
sf.Cells(y, "B") = stok(i, 2)
sf.Cells(y, "C") = stok(i, 3)
sf.Cells(y, "D") = stok(i, 2) - stok(i, 3)
End If
Next
s3.Cells.EntireColumn.AutoFit
sf.Cells.EntireColumn.AutoFit
Application.ScreenUpdating = False
MsgBox "Karşılaştırma Tamam....", vbOKOnly, "Karşılaştırma Sonucu"
End Sub