Kodum, sahip olduğum veri miktarı nedeniyle süper yavaş (her sayfa için 10+ dk). Diziler kullanarak onu hızlandırmanın bir yolu olabileceğine inanıyorum, ama nasıl gideceğimi bilmiyorum. Durumu ayrıntılı olarak açıklamaya çalışacağım.Dizileri kullanarak iki sayfayı karşılaştırın
Farklılık bulmak için karşılaştırmaya çalıştığım fatura # s, parça # s ve satış fiyatları (diğer bilgiler arasında) içeren iki çalışma sayfam var. Her bir satır için, fatura # ile her iki sayfadaki # parçasının bir birleşimini kullanarak benzersiz bir sayı oluşturdum. Ayrıca, her iki sayfayı da bu sayıya göre sıralıyorum. Bu benzersiz # lerden hangisinin sheet1 üzerinde olduğunu ve sayfa 2'de değil, tersini bulmak istiyorum. (Bunun bir başka kısmı da, Satış fiyatının farklı olup olmadığını kontrol etmek ve bu fiyatın farklı olup olmadığını kontrol etmek olacaktır. Ancak, bunu kolayca çözebileceğimi düşünüyorum.) Amaç, faturaların kısmen veya tamamen satıcı tarafından kaçırıldığını görmek. ve benim şirketim.
Bir sayfada 10k satırlık veri var ve diğer tarafta 11k tane var. Aşağıda, www.vb-helper.com/howto_excel_compare_lists.html adresinde bulduğum modemi kullanarak ve bu sitedeki benzer sorulara verilen yanıtlara bakarak para birimini kullanıyorum. Yaprakları tersine çeviren neredeyse aynı ikinci bir alt var. Her iki şekilde de yazabilmenin mümkün olup olmadığını bilmiyorum.
Private Sub cmdCompare2to1_Click()
Dim first_index As Integer
Dim last_index As Integer
Dim sheet1 As Worksheet
Dim sheet2 As Worksheet
Dim r1 As Integer
Dim r2 As Integer
Dim found As Boolean
Set sheet1 = Worksheets(1)
Set sheet2 = Worksheets(2)
Application.ScreenUpdating = False
first_index = 1
last_index = sheet1.Range("a" & Rows.Count).End(xlUp).Row
' For each entry in the second worksheet, see if it's
' in the first.
For r2 = first_index To last_index
found = False
' See if the r1-th entry on sheet 2 is in the sheet
' 1 list.
For r1 = first_index To last_index
If sheet1.Cells(r1, 16) = sheet2.Cells(r2, 9) Then
' We found a match.
found = True
Exit For
End If
Next r1
' See if we found it.
If Not found Then
' Flag this cell.
sheet2.Cells(r2, 9).Interior.ColorIndex = 35
End If
Next r2
Application.ScreenUpdating = True
End Sub
Bu küçük veri kümeleri için çalışıyor, ama ben geçmesi yapıyorum satır çok sayıda, sadece sonsuza kadar sürer ve Muhasebeciler hiçbiri kullanmak istiyorum. İdeal olarak, sadece farklılıkları yeşile çevirmek yerine, bunları ayrı bir sayfaya kopyalar, yani: sayfa 3'te sayfa 2'de değil, sayfa 2'de her şey olurdu, ama bu noktada alabileceğim şeyi alacağım. Bir çözüm için etrafa baktıktan sonra, Internet'teki herkesin dizileri hızlandırmak için gerekli olduğunu kabul ediyor gibi görünüyor. Bununla birlikte, bu güzel tavsiyemin mevcut koduma nasıl uygulanacağını anlayamıyorum. Bu kodu atmak ve baştan başlamak için iyi bir olasılık olduğunu anlıyorum, ama yine nasıl diye soruyorum?
Değerleri bir ölçüt temelinde karşılaştırdığınız için, işi yapmak için koşullu biçimlendirmeyi kullanabileceğinizi düşünüyorum. –