• DİKKAT

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

Karşılaştırma sorunu

  • Konbuyu başlatan Konbuyu başlatan desk
  • Başlangıç tarihi Başlangıç tarihi
arkadaşlar hem sayı hem harf hem / - gibi işaretleri kapsayan değeri nasıl verdireceğim değişkene.? yokmu bir yardım edecek . acil.
 
olmadı üstad. farkı verdi sadece
 
long yerine variant yaptığımda dahi sonuç alamıyorum neden olabilir?
 
eklediğiniz dosyada farklı olarak aratmaya çalıştığınız veriler ile ilgili satır yok bunlarıda içeren bir örnek eklerseniz çözmeye çalışalım.
 
sayfa3 e renkli olarak atmıyor ve karşılaştırmadada hatalı karşılaştırma yapıyor?
 

Ekli dosyalar

burda karşılaştırmayı yaparken sanki ikinci - işaretinden sonrasını görmüyor gibi ?
 
LookAt:=xlWhole yerine LookAt:=xlPart şeklinde deneyin
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ı.
 
evet öyle sonuç doğru çıkıyor fakat aslında değerler aynı neden kopyadan sonra çalıışyor onu anlayamadım ayrıca araya bir kaç değişik stok yazdığında bunu fark olarak yazıp sorgulamaya devam ettiremezmiyim.?
 
Muhtemelen bizim fark edemediğimiz bir farklılık var. Araya istediğin kadar yazıp sorgulatabilirsin, tabi bunların iki sayfada da olması lazım çünkü sorgulamayı A sütunlarındaki veriler eşit ise yapıyor ve farklarını alıyor bir sayfada olup da diğer sayfada olmayan veri işleme alınmayacaktır.
 
peki üstad farkları da algılayıp fark olarak yazmasını sağlayamazmıyız zaten sorunumda bu iki farklı listede aynı bu şekilde sorgulatıp farkları döktürmek bunu nasıl başarabilirim. bu kodu ne şekilde revize etmeliyim.
 
Bu iki sütunda hersey aynı olduğu halde neyi farklı görüp algılamıyor a.z. ye herseyi aynı ??
 
Müsait bir zamanda kodları dediğiniz şekilde düzenelemeye çalışacam, ayrıca iki sütunda a dan z ye aynı değil ilk cevabı yazarken incelememiştim, şimdi inceledim bulamadığı değerlerden biri fazla boşluklar içeriyor, eğer genel olarak böyle bir sorun varsa "Trim" fonksiyonu ile bu durumu aşabilirsiniz.
 
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.
 
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.
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.
 

Ekli dosyalar

peki burda sağdaki boşlukları nasıl yok ettireceğim. mesela sayfa1 de sağda 5-6 tane boşluk var
RTrim, (Right Trim)

nasıl uygulayacağım.
 
üstad harikasın tşk ederim yalnız satır satır açıklamasını yaparsan mantığını anlamak için çok faydalı olur benim için.
 
Aşağıda kodları açıklamalarıyla yazdım.
Kod:
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
 
Geri
Üst