DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
Altın Üyelik Hakkında Bilgi
Hocam cevap için teşekkürler ancak Diyelim ki fatura no ve tutar aynı ancak tarih farklı ise bunu yok olarak gösteriyor halbuki X olarak göstermesi gerek
ayrıca fatura no farklı tarih ve tutar aynı olanlara "Tarih ve Fatura numarası tutuyor Tutar farklı" yazıyor
Ben çalıştırınca X yazıyor. Siz çalıştırınca hangi satırda Yok yazıyor.
Bunu düzeltmek için kodlardaki iki metnin yerini değiştirin.
Şimdi şöyle yapsak daha sağlıklı olacak tarih fatura no ve tutar tutyorsa "Y" Fatura no ve tutar tutyorsa "X" Yazsın
Sub Karsilastir_(SAYFA1 As Worksheet, SAYFA2 As Worksheet)
Dim Bak1 As Range
Dim Bak2 As Range
Dim No As Boolean
Dim Tutar As Boolean
For Each Bak1 In SAYFA1.Range("A2:A" & SAYFA1.Range("A65000").End(3).Row)
Bak1.Offset(0, 3).Value = "YOK"
For Each Bak2 In SAYFA2.Range("A2:A" & SAYFA2.Range("A65000").End(3).Row)
If Bak1.Value = Bak2.Value Then
If Bak1.Offset(0, 1).Value = Bak2.Offset(0, 1).Value Then
No = True
End If
If Bak1.Offset(0, 2).Value = Bak2.Offset(0, 2).Value Then
Tutar = True
End If
If No And Tutar Then
Bak1.Offset(0, 3).Value = "Y"
ElseIf No Then
Bak1.Offset(0, 3).Value = "Tarih ve Fatura numarası tutuyor Tutar farklı"
ElseIf Tutar Then
Bak1.Offset(0, 3).Value = "Tarih ve Tutar tutuyor Fatura numarası Farklı"
End If
If No Or Tutar Then
No = False
Tutar = False
Exit For
End If
Else
If Bak1.Offset(0, 1).Value = Bak2.Offset(0, 1).Value And _
Bak1.Offset(0, 2).Value = Bak2.Offset(0, 2).Value Then
Bak1.Offset(0, 3).Value = "X"
Exit For
End If
End If
Next
Next
End Sub
Sub Karsilastir_(SAYFA1 As Worksheet, SAYFA2 As Worksheet)
Dim Bak1 As Range
Dim Bak2 As Range
Dim No As Boolean
Dim Tutar As Boolean
For Each Bak1 In SAYFA1.Range("A2:A" & SAYFA1.Range("A65000").End(3).Row)
Bak1.Offset(0, 3).Value = "YOK"
For Each Bak2 In SAYFA2.Range("A2:A" & SAYFA2.Range("A65000").End(3).Row)
If Bak1.Value = Bak2.Value Then
If Bak1.Offset(0, 1).Value = Bak2.Offset(0, 1).Value Then
No = True
End If
If Bak1.Offset(0, 2).Value = Bak2.Offset(0, 2).Value Then
Tutar = True
End If
If No And Tutar Then
Bak1.Offset(0, 3).Value = "Y"
ElseIf No Then
Bak1.Offset(0, 3).Value = "Tarih ve Fatura numarası tutuyor Tutar farklı"
ElseIf Tutar Then
Bak1.Offset(0, 3).Value = "Tarih ve Tutar tutuyor Fatura numarası Farklı"
End If
If No Or Tutar Then
No = False
Tutar = False
Exit For
End If
Else
If Bak1.Offset(0, 1).Value = Bak2.Offset(0, 1).Value And _
Bak1.Offset(0, 2).Value = Bak2.Offset(0, 2).Value Then
Bak1.Offset(0, 3).Value = "X"
Exit For
ElseIf Bak1.Value = "" And Bak1.Offset(0, 1).Value = "" And _
Bak1.Offset(0, 2).Value = "" Then
Bak1.Offset(0, 3).Value = "BOŞ"
Exit For
End If
End If
Next
Next
End Sub
Rica ederim iyi çalışmalar.
Hangi satırlarda yanlış sonuç veriyor. Birkaç tane sayfa ismi ve satır numarasını söyler misiniz?
Sub Karsilastir_(SAYFA1 As Worksheet, SAYFA2 As Worksheet)
Dim Bak1 As Range
Dim Bak2 As Range
Dim No As Boolean
Dim Tutar As Boolean
For Each Bak1 In SAYFA1.Range("A2:A" & SAYFA1.Range("A65000").End(3).Row)
Bak1.Offset(0, 3).Value = "YOK"
For Each Bak2 In SAYFA2.Range("A2:A" & SAYFA2.Range("A65000").End(3).Row)
If Bak1 = Bak2 Then
If Bak1.Offset(0, 1) = Bak2.Offset(0, 1) Then
No = True
End If
If Bak1.Offset(0, 2) = Bak2.Offset(0, 2) Then
Tutar = True
End If
If No And Tutar Then
Bak1.Offset(0, 3).Value = "Y"
ElseIf No Then
Bak1.Offset(0, 3).Value = "Tarih ve Fatura numarası tutuyor Tutar farklı"
ElseIf Tutar Then
Bak1.Offset(0, 3).Value = "Tarih ve Tutar tutuyor Fatura numarası Farklı"
End If
If No Or Tutar Then
No = False
Tutar = False
Exit For
End If
Else
If Bak1.Offset(0, 1) = Bak2.Offset(0, 1) And _
Bak1.Offset(0, 2) = Bak2.Offset(0, 2) Then
Bak1.Offset(0, 3).Value = "X"
Exit For
ElseIf Bak1 = "" And Bak1.Offset(0, 1) = "" And _
Bak1.Offset(0, 2) = "" Then
Bak1.Offset(0, 3).Value = "BOŞ"
Exit For
End If
End If
Next
Next
End Sub
Aşağıdaki kodları deneyin.
Kod:Sub Karsilastir_(SAYFA1 As Worksheet, SAYFA2 As Worksheet) Dim Bak1 As Range Dim Bak2 As Range Dim No As Boolean Dim Tutar As Boolean For Each Bak1 In SAYFA1.Range("A2:A" & SAYFA1.Range("A65000").End(3).Row) Bak1.Offset(0, 3).Value = "YOK" For Each Bak2 In SAYFA2.Range("A2:A" & SAYFA2.Range("A65000").End(3).Row) If Bak1 = Bak2 Then If Bak1.Offset(0, 1) = Bak2.Offset(0, 1) Then No = True End If If Bak1.Offset(0, 2) = Bak2.Offset(0, 2) Then Tutar = True End If If No And Tutar Then Bak1.Offset(0, 3).Value = "Y" ElseIf No Then Bak1.Offset(0, 3).Value = "Tarih ve Fatura numarası tutuyor Tutar farklı" ElseIf Tutar Then Bak1.Offset(0, 3).Value = "Tarih ve Tutar tutuyor Fatura numarası Farklı" End If If No Or Tutar Then No = False Tutar = False Exit For End If Else If Bak1.Offset(0, 1) = Bak2.Offset(0, 1) And _ Bak1.Offset(0, 2) = Bak2.Offset(0, 2) Then Bak1.Offset(0, 3).Value = "X" Exit For ElseIf Bak1 = "" And Bak1.Offset(0, 1) = "" And _ Bak1.Offset(0, 2) = "" Then Bak1.Offset(0, 3).Value = "BOŞ" Exit For End If End If Next Next MsgBox "Karşılaştırma tamamlandı." End Sub
Yani aynı tarih ve tutar aynı ise verinin çok olduğu sayfada iki kere işlemi yapmıyor ilk bulduğunu yazıyor
verinin az olduğu 1. sayfada son bulduğuna göre işlem yapıyor
Evet kodlar bu şekilde çalışıyor. Çünkü sabit bir veri yok.
Örneğin A ürününe bakıp A ürünleri arasında karşılaştırma yapmıyoruz. Tarihi alıp Tarih, No yada tutar tutuyorsa eşleşme var diyoruz. Dolayısı ile bu atalara sebep olabilir.
Ama asıl sorun hücre formatından kaynaklanıyor.