Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1788to1792
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Datensätze auf bekannte Werte prüfen

Datensätze auf bekannte Werte prüfen
30.10.2020 12:01:10
Sven
Hallo Leute,
ich habe eine monatliche Liste von 2000-3000 Datensätzen, die ich neu importiere. Ab und zu kann es sein, dass dort ein durch die Artikelnummer identifizierbarer Datensatz enthalten ist, den ich schon in einem Vormonat dabei hatte. Ich würde diesen gerne markieren um ihn von der Bearbeitung ausschließen.
Wenn ich hierfür also eine "Blacklist" pflege, in die ich jeden Monat die Artikelnummern schreibe und die am Jahresende um die 30000 Zeilen groß ist, ist es arg unperformant, wenn ich jeden neuen Import mittels Schleifendurchlauf abprüfe.
Gibt es da eine andere colle Lösung?
Grüße
Sven

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datensätze auf bekannte Werte prüfen
30.10.2020 12:45:17
Sven
Hallo Jochen,
danke. Das hilft aber nicht weiter. Hier wird ja nur innerhalb des jeweiligen Imports auf Duplikate geprüft. Die wird es nicht geben. Der Vergleich müsste ja mit einer anderen Liste erfolgen.
AW: war mit anderem Ansatz gedacht...
30.10.2020 14:00:57
JoWE
stimmt, die Idee war anders::
- alles neue unter den vorhandenen Werten einfügen
- und danach den Abgleich machen.
Geht schnell und ohne Programmierung.
Gruß
Jochen
Anzeige
AW: Datensätze auf bekannte Werte prüfen
30.10.2020 12:48:42
volti
Hallo Sven,
leider weiß ich nicht, wie Du Deine Schleife gestaltest hattest und wo bei Dir unperformant anfängt.
Wenn Dir Jochen's Lösung nicht zusagen sollte, probiere mal folgende Anregung aus. Das ist zwar auch eine Schleife, aber nur über die importierten Daten. 2000 Datensätze sollten nicht so lange dauern.
Code:
[Cc]

Sub MarkiereArtikel() Dim iZeile As Long With ActiveSheet For iZeile = 1 To .Cells(Rows.Count, "A").End(xlUp).Row If WorksheetFunction.CountIf(Worksheets("Blacklist").Range("A:A"), _ .Cells(iZeile, "A").Value) > 0 Then .Cells(iZeile, "A").Interior.Color = RGB(255, 255, 0) End If Next iZeile End With End Sub

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz

Anzeige
AW: Datensätze auf bekannte Werte prüfen
30.10.2020 13:24:53
Sven
Hallo Karl-Heinz,
oh, danke für den Code.
Allerdings mache ich offenbar irgendetwas falsch:
With ThisWorkbook.Worksheets("DWH")
For lonZeilen = 1 To .Cells(Rows.Count, "G").End(xlUp).Row
If WorksheetFunction.CountIf(Worksheets("Blacklist").Range("A:A"), _
.Cells(lonZeilen, "G").Value) > 0 Then
.Cells(lonZeilen, "G").Interior.Color = RGB(255, 255, 0)
End If
Next lonZeilen
End With

DWH ist das neu importierte Tabellenblatt mit besagter Nummer in Spalte G.
Die Schleife wird durchlaufen, markiert wird aber nichts.
AW: Datensätze auf bekannte Werte prüfen
30.10.2020 13:47:59
volti
Hallo Sven,
Dein Code sieht mir eigentlich korrekt aus. Ich habe ihn nachgebaut und es funktioniert
Und die Referenzartikelnummern stehen bei Dir auch in Spalte $A?
Gibt es ggf. Unterschiede bzgl. des Formats?
Ansonsten müsstest Du mal eine abgespeckte Probemappe hochladen
viele Grüße
Karl-Heinz
Anzeige
AW: Datensätze auf bekannte Werte prüfen
30.10.2020 13:53:27
volti
Nachtrag:
Es wird auch nichts markiert, sondern zunächst nur gelb hinterlegt.
VG KH
AW: Datensätze auf bekannte Werte prüfen
30.10.2020 14:16:50
Sven
Schön, beim Anonymisieren der Arbeitsmappe hatte es dann geklappt. Ich hatte wohl wirklich Formatunterschiede. Vielen Dank.
AW: Datensätze auf bekannte Werte prüfen
30.10.2020 14:20:46
Sven
Achso, wie würdest Du die nun geprüften IDs der Blacklist anfügen, damit sie nächsten Monat berücksichtigt werden?
AW: Datensätze auf bekannte Werte prüfen
30.10.2020 15:04:28
volti
Hallo Sven,
hier eine Idee:
Code:
[Cc][+][-]

Sub MarkiereArtikel() Dim lonZeilen As Long Dim sNeueArtikel As String, sArr() As String Dim WSh As Worksheet Set WSh = Worksheets("Blacklist") With ThisWorkbook.Worksheets("DWH") For lonZeilen = 1 To .Cells(Rows.Count, "G").End(xlUp).Row If WorksheetFunction.CountIf(WSh.Range("A:A"), _ .Cells(lonZeilen, "G").Value) > 0 Then .Cells(lonZeilen, "G").Interior.Color = RGB(255, 255, 0) Else sNeueArtikel = sNeueArtikel & .Cells(lonZeilen, "G").Value & "," End If Next lonZeilen End With 'Neue Artikel aufnehmen If sNeueArtikel <> "" Then sArr = Split(sNeueArtikel, ",") 'Neue Artikelnummern in Array lonZeilen = WSh.Cells(Rows.Count, "A").End(xlUp).Row + 1 WSh.Cells(lonZeilen, "A").Resize(UBound(sArr), 1).Value = Application.Transpose(sArr) End If End Sub

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz

Anzeige
AW: Datensätze auf bekannte Werte prüfen
02.11.2020 09:52:11
Sven
Klasse, Karl-Heinz! Das klappt.
Selbst wenn 1000 Nummern auf die schwarze Liste gesetzt werden funktioniert es - ich hätte befürchtet, dass der String da irgendwann vollläuft...
Grüße
Sven
AW: Datensätze auf bekannte Werte prüfen
02.11.2020 10:14:47
volti
Hallo Sven,
danke für die positive Rückmeldung.
Der String läuft nicht voll, bzw. das hängt vom verfügbaren Memory ab. 😊
Als ich anfing zu programmieren, durfte ein String max. 255 Zeichen haben, später war's dann ein Segment, also 65.535 Zeichen.....
viele Grüße
Karl-Heinz

131 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige