- Katılım
- 6 Temmuz 2008
- Mesajlar
- 1,875
- Excel Vers. ve Dili
- OFFİCE 2010- TÜRKÇE
- Altın Üyelik Bitiş Tarihi
- 22-12-2019
Hayırlı akşamlar,
Aşağıdaki kodlar ile yaklaşık 20.000 satırlık veriyi diğer excel dosyasındaki verilerle karşılaştırıp olmayanları listeliyorum. Aynı işlemi bir de ters taraftan yapacağım fakat sadece ilk taraf bile yaklaşık 3dk. sürüyor.
Aşağıdaki kodlara ek farklı önerileriniz bekler . Şimdiden teşekkür ederim.
Aşağıdaki kodlar ile yaklaşık 20.000 satırlık veriyi diğer excel dosyasındaki verilerle karşılaştırıp olmayanları listeliyorum. Aynı işlemi bir de ters taraftan yapacağım fakat sadece ilk taraf bile yaklaşık 3dk. sürüyor.
Aşağıdaki kodlara ek farklı önerileriniz bekler . Şimdiden teşekkür ederim.
Kod:
Sub kasa_rapor()
scrfalse
With Sheets("HATALAR")
sat = 4
dosya_yolu = ThisWorkbook.Path & "\108 EKSTRE.xls"
dosya_yolu2 = ThisWorkbook.Path & "\108 MUAVİN.xls"
Set wb1 = Workbooks.Open(dosya_yolu)
Set wb11 = wb1.Sheets("EKSTRE")
Set wb2 = Workbooks.Open(dosya_yolu2)
Set wb22 = wb2.Sheets("MUAVİN")
.Range("A5:R" & Rows.Count).ClearContents
'If Left(wb11.Range("A1"), 15) <> Left(wb22.Range("A1"), 15) Then MsgBox "Raporlar Hatalı Tarih" & _
Chr(13) & Left(wb11.Range("A1"), 15) & Chr(13) & Left(wb22.Range("A1"), 15), vbCritical + vbOKOnly, "Rapor Tarih Hatası": GoTo çıkış
For a = 4 To wb11.Cells(Rows.Count, "A").End(3).Row
If wb11.Cells(a, "A") <> "" And wb11.Cells(a, "D") <> "Devir" Then
aranan1 = wb11.Cells(a, "D")
aranan2 = wb11.Cells(a, "F")
If WorksheetFunction.CountIfs(wb22.Range("E2:E" & Rows.Count), aranan1, _
wb22.Range("G2:G" & Rows.Count), aranan2) = 0 Then
sat = sat + 1
.Cells(sat, "A") = wb11.Cells(a, "A")
.Cells(sat, "B") = wb11.Cells(a, "B")
.Cells(sat, "C") = wb11.Cells(a, "C")
.Cells(sat, "D") = wb11.Cells(a, "D")
.Cells(sat, "E") = wb11.Cells(a, "F")
.Cells(sat, "F") = wb11.Cells(a, "G")
.Cells(sat, "G") = wb11.Cells(a, "H")
End If
End If
Next a
çıkış:
Workbooks("108 EKSTRE.xls").Close False
Workbooks("108 MUAVİN.xls").Close False
End With
scrtrue
End Sub