3.3k Aufrufe
Gefragt in Tabellenkalkulation von chruez Einsteiger_in (41 Punkte)
Hi liebe Leute
Ich bin neu hier und wollte euch gerne um eure Unterstützung bitten..
Ich wollte mal ein Excel Macro schreiben welches mir meine Arbeit sehr erleichtert jedoch habe ich einfach viel zu wenig, sprich fast gar keine Kenntnisse.

Das Macro sollte folgendes können.

in "Tabelle 2" die Werte von Spalte B mit der von in "Tabelle 1" Spalte A & B zusammen, vergleichen und die doppelten auf Tabelle 2 hervorheben z.B. Rot.
Die Daten sind total unsortiert, so muss die suche jede Zeile, resp. Zeile A&B vergleichen. Der Datenbestand ist Text und die Tabelle ist deutlich kleiner als 65000 Einträge

Da ich absult keine Ahnung habe wäre ich echt dankbar für eure hilfe, ich habe bereits eni paar Stunden investiert um mir was zusammenzuschustern, aber ich bin echt ratlos.

hier seht ihr meinen erfolgosne Versuch;

Public Subvergleiichen()
Dim lngLetzte As Long
Dim lngZeile As Long
Dim wksA As Worksheet
Dim wksB As Worksheet
Set wksA = Worksheets("Tabelle1")
Set wksB = Worksheets("Kunden")
Application.ScreenUpdating = False
lngLetzte = IIf(IsEmpty(Range("A65536")), Range("A65536").End(xlUp).Row + 1, 65536)
For lngZeile = lngLetzte To 1 Step -1
If wksA.Cells(lngZeile, 1) & wksA.Cells(lngZeile, 2).Text = wksB.Cells(lngZeile, 2).Text Then
wksB.Cells(lngZeile, 2).EntireRow.Interior.ColorIndex = 33
End If
Next
Application.ScreenUpdating = True
End Sub

herzlichen Dank für eure Hilfe

4 Antworten

0 Punkte
Beantwortet von dukent Einsteiger_in (49 Punkte)
Hallo chruez!
Versuch mal folgenden code:

Sub Subvergleiichen()
Dim lngLetzte1, lngLetzte2 As Long
Dim lngZeile1, lngZeile2 As Long
Dim wksA As Worksheet
Dim wksB As Worksheet
Set wksA = Worksheets("Tabelle1")
Set wksB = Worksheets("Kunden")
Application.ScreenUpdating = False
lngLetzte1 = Sheets("Tabelle1").Range("A65536").End(xlUp).Row
lngLetzte2 = Sheets("Kunden").Range("B65536").End(xlUp).Row
For lngZeile1 = lngLetzte1 To 1 Step -1
AB = wksA.Cells(lngZeile1, 1).Value & wksA.Cells(lngZeile1, 2).Value
For lngZeile2 = lngLetzte2 To 1 Step -1
If AB = wksB.Cells(lngZeile2, 2).Value Then
wksB.Cells(lngZeile2, 2).EntireRow.Interior.ColorIndex = 3
End If
Next lngZeile2
Next lngZeile1
Application.ScreenUpdating = True
End Sub

Gruß Niels
0 Punkte
Beantwortet von chruez Einsteiger_in (41 Punkte)
wow, soeben eroflgreich getestet!
Funktioniert Super!
Jetzt wo ich deine Änderungen sehe, beginne ich langsam, sehr langsam, das ganze mehr und mehr zu verstehen.. aber brauche da wohl mal en kurs dazu, falls sich das häufen sollte.

hoffe es war nicht zuviel Zeitaufwand für dich!

nochmals herzlichen Dank!
0 Punkte
Beantwortet von dukent Einsteiger_in (49 Punkte)
Hi chruez,
schön das es funktioniert!
War kein großer Aufwand weil ich selber viele von solchen "Vergleichsmacros" benutze um Daten aufzubereiten...
Kann aber auch vorkommen, das er nicht alle doppelten findet wegen z.B. ein Leerzeichen zuviel ist.
Die Zeile:
AB = wksA.Cells(lngZeile1, 1).Value & wksA.Cells(lngZeile1, 2).Value

kopiert lediglich den Inhalt von z.B. Zelle A1 und B1 zusammen und vergleicht diese dann mit allen Zellen von Tabelle "Kunden" in Spalte B.

Also immer "Auge sei Wachsam".
Gruß Niels
0 Punkte
Beantwortet von chruez Einsteiger_in (41 Punkte)
Hi Niels
Danke nochmals für den zusätzlichen Hinweis, diese Überlegung habe ich mir auch schon gemacht, jedoch kann ich fast zu 100% sicher sein dass die Daten keine zusätzlichen Leerzeichen drinn haben, da es ein extrakt aus einer DB ist.
Gruss Dani
...