OK, also mache ich eine Bankrec, ich habe ein Arbeitsblatt ("Einlagen und Kredite"), den Kontoauszug, den ich mit einem intern erstellten Bericht vergleiche ("Juni PB INS").Vergleichen Sie Werte über zwei Blätter, markieren Sie Ähnlichkeiten, Läuft aber funktioniert nicht
Für jede Position im Kontoauszug suche ich im internen Bericht nach einer Zeile mit übereinstimmendem Datum (Spalte 1), enthält den Unternehmensdeskriptor (string1) und stimmt mit dem Betrag überein (Spalte 3 im Kontoauszug) Spalte 2 ODER Spalte 15 im internen Bericht).
Wenn es eine Übereinstimmung gibt, möchte ich die Zeile im Kontoauszug-Arbeitsblatt markieren und in Spalte 7 die Adresse der übereinstimmenden internen Berichtszeile markieren.
Der Code hat scheinbar keine Fehler, macht aber keine der Änderungen.
Option Compare Text
Sub HighlightMatches()
Dim Sht1LastRow As Long, Sht2LastRow As Long
Dim lastrow As Long
Dim iPBINS As Long, iPBINScount As Long, iDeposits As Long, iDepositscount As Long
Dim string1 As Variant
Sht1LastRow = Sheets("Deposits And Credits").Cells(10000, 1).End(xlUp).Row
Sht2LastRow = Sheets("June PB INS").Cells(100000, 1).End(xlUp).Row
iPBINS = 2
iDeposits = 2
For iDeposits = 2 To Sht1LastRow
string1 = Sheets("Deposits And Credits").Cells(iDeposits, 7).Value
For iPBINS = 2 To Sht2LastRow
If Sheets("Deposits And Credits").Cells(iDeposits, 1).Value = Sheets("June PB INS").Cells(iPBINS, 1).Value And InStr(1, Sheets("June PB INS").Cells(iPBINS, 3).Value, string1, 1) <> 0 And Sheets("Deposits And Credits").Cells(iDeposits, 3) = Sheets("June PB INS").Cells(iPBINS, 2) Or Sheets("Deposits And Credits").Cells(iDeposits, 1).Value = Sheets("June PB INS").Cells(iPBINS, 1).Value And InStr(1, Sheets("June PB INS").Cells(iPBINS, 3).Value, string1, 1) <> 0 And Sheets("Deposits And Credits").Cells(iDeposits, 3) = Sheets("June PB INS").Cells(iPBINS, 15) Then
Sheets("Deposits And Credits").Cells(iDeposits, 12).Value = Sheets("June PB INS").Cells(iPBINS, 1).Address(1, 1, 1, 1) And Sheets("Deposits And Credits").Rows("iDeposits:iDeposits").Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 5296274
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End If
Next iPBINS
Next iDeposits
End Sub
Wie viele Datensätze haben Sie? Mehr als 10000 und Ihre Methode, die letzte Zeile zu finden, wird fehlschlagen (das heißt, Sie kommen nie in die Schleifen). Bevorzugen Sie etwas wie 'Zellen (Rows.Count, 1) .End (xlUp) .Row' – Mikegrann
Die Sht1LastRow und Sht2LastRow beide erhalten die richtigen Werte, die Zeilennummer mit dem letzten Eintrag des Blattes. Der interne Bericht enthält 70.000 Datensätze, und Sht2LastRow zeigt im Debug-Modus die korrekte Nummer der letzten Zeile an. –