Excel Makro - 2 Tabellen vergleichen und Matches markieren
der Code ist fertig, irgendwie fängt er sich leider in einer Endlosschleife
Hallo, ich habe eine .xls-Datei, die hat 2 Tabellenblätter.
Die Blätter sind hier in den Variablennamen schon drin also: Blatt_Bestandsdaten ist ein String (da liegt der Fehler also nicht ^^)
Anfangen soll der Vergleich ab Zeile 5 auf jedem Sheet
Und er vergleicht nur Spalte A aus Bestand mit Spalte A aus Abgang
wenn er was gleiches findet soll er den Wert aus dlgLBS.ComboBox1 in Spalte T aus Bestand schreiben
aber irgendwas stimmt jetzt nicht, er fängt sich in einer Endlosschleife.
Die Datensätze sind ca 15000 zu 3000 also nicht soviel...
Außerdem wenn das läuft, soll es die Werte aus Abgang, die nicht gefunden werden können in eine neue Tabelle einfügen.
Für Hilfe wäre ich sehr dankbar.
mfg tommy
Hallo, ich habe eine .xls-Datei, die hat 2 Tabellenblätter.
Die Blätter sind hier in den Variablennamen schon drin also: Blatt_Bestandsdaten ist ein String (da liegt der Fehler also nicht ^^)
Anfangen soll der Vergleich ab Zeile 5 auf jedem Sheet
Und er vergleicht nur Spalte A aus Bestand mit Spalte A aus Abgang
wenn er was gleiches findet soll er den Wert aus dlgLBS.ComboBox1 in Spalte T aus Bestand schreiben
' Abgänge mit Blatt Gesamtbestand vergleichen anhand Versicherungsnummer und einfügen des Quartals unter 'Abgang'
' nicht gefundene Versicherungsnummern werden in das Blatt "VNR nicht gefunden" kopiert
For Zeile = 5 To Sheets(Blatt_Bestandsdaten).Range("A65536").End(xlUp).Row ' Versicherungsnummer aus Bestandsdaten
For Suchzeile = 5 To Sheets(Blatt_Abgang).Range("A65536").End(xlUp).Row ' Versicherungsnummer aus Abgang
If Sheets(Blatt_Abgang).Cells(Suchzeile, 1) = Sheets(Blatt_Bestandsdaten).Cells(Zeile, 1) Then
Sheets(Blatt_Bestandsdaten).Cells(Zeile, 20) = dlgLBS.ComboBox1.Value
End If
Next Suchzeile
Next Zeile
aber irgendwas stimmt jetzt nicht, er fängt sich in einer Endlosschleife.
Die Datensätze sind ca 15000 zu 3000 also nicht soviel...
Außerdem wenn das läuft, soll es die Werte aus Abgang, die nicht gefunden werden können in eine neue Tabelle einfügen.
Für Hilfe wäre ich sehr dankbar.
mfg tommy
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 104069
Url: https://administrator.de/contentid/104069
Ausgedruckt am: 23.11.2024 um 07:11 Uhr
5 Kommentare
Neuester Kommentar
Hallo,
stell doch erstmal mit zwei Variablen sicher, dass die Beiden Fors einen gültigen Bereich haben.
Laut Deinen Zahlen muss Excel hier ca. 45.000.000 (15000*3000) Einträge vergleichen. Ist das richtig?
Excel ist nicht wirklich schnell!
Mach das ganze doch intelligenter.
Sortiere beide Tabellen (notfalls in einem anderen Bereich oder Blatt). Dann kanns Du beide viel effektiver (und auch schneller) vergleiche.
Deine Variante wäre Bubblesort. Meine Quicksort
Stefan
stell doch erstmal mit zwei Variablen sicher, dass die Beiden Fors einen gültigen Bereich haben.
Laut Deinen Zahlen muss Excel hier ca. 45.000.000 (15000*3000) Einträge vergleichen. Ist das richtig?
Excel ist nicht wirklich schnell!
Mach das ganze doch intelligenter.
Sortiere beide Tabellen (notfalls in einem anderen Bereich oder Blatt). Dann kanns Du beide viel effektiver (und auch schneller) vergleiche.
Deine Variante wäre Bubblesort. Meine Quicksort
Stefan
guten morgen,
um die Suche zu beschleunigen, würde ich die 3.000 Daten in den 15.000 suchen
wenn einer der 3.000 Sätze gefunden wurde, dann wird die Zelle (in beiden Tabellen?) grün markiert
wird es nicht gefunden, dann wird die Zelle rot markiert
(getestet mit Excel 2003 SP3, ncith schön aber funktioniert)
um die Suche zu beschleunigen, würde ich die 3.000 Daten in den 15.000 suchen
wenn einer der 3.000 Sätze gefunden wurde, dann wird die Zelle (in beiden Tabellen?) grün markiert
wird es nicht gefunden, dann wird die Zelle rot markiert
(getestet mit Excel 2003 SP3, ncith schön aber funktioniert)
Dim Blatt_Abgang As String, ZeilAb As String
Dim Blatt_Bestandsdaten As String, ZeilBe As String
Sub SuchenUndMarkieren()
ZeilAb = 4
Blatt_Abgang = "Tabelle1"
Blatt_Bestandsdaten = "Tabelle2"
Start:
ZeilBe = 4
Sheets(Blatt_Abgang).Select
ZeilAb = ZeilAb + 1
Cells(ZeilAb, 1).Select
If Cells(ZeilAb, 1) = "" Then GoTo Ende
With Selection.Interior
.ColorIndex = 3
End With
Suchen:
ZeilBe = ZeilBe + 1
If Sheets(Blatt_Bestandsdaten).Cells(ZeilBe, 1) = "" Then GoTo Start
If Cells(ZeilAb, 1) = Sheets(Blatt_Bestandsdaten).Cells(ZeilBe, 1) Then
With Selection.Interior
.ColorIndex = 4
End With
GoTo Start
End If
GoTo Suchen
Ende:
End Sub