Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1484to1488
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

Sheets vergleichen, zwei Suchwörtern, markieren

Sheets vergleichen, zwei Suchwörtern, markieren
07.04.2016 16:11:44
Daniel
Servus Excelgemeinde,
ich stehe vo einem kleinen Problem. Ich soll zwei Excelsheets miteinader vergleichen und die ungleichen Stellen rot markieren. Das Excel besteht aus über 3500 Zeilen und 48 Spalten die verglichen werden sollen. Also fällt eine Exelformel raus. Ich habe eine Beispieldatei hochgeladen.
https://www.herber.de/bbs/user/104826.xlsm
Der Reiter "Original" und "Vergleich" soll miteinader verglichen werden. Das Ergebniss soll wie in Reiter "Vergleich nach Lauf" im Reiter Vergleich dargestell sein.
Um eine Zeile (F-BA) im Sheet Vergleich mit dem anderen Sheet zu vergleichen, muss "Nachname" und "Geb" in beiden Sheets übereinstimmen. Sollte eins der beiden Felder leer sein, kann diese Zeile übersprungen werden.
Output: In Spalte A soll eine rot/grün Markierung signalisieren, dass etwas falsch ist. Der falsche Wert soll rot in der betroffenen Zeile hinterlegt sein.
Ist so etwas über VBA machbar? Ich hoffe auf Eure Unterstützung.
Vielen Dank Daniel

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sheets vergleichen, zwei Suchwörtern, markieren
07.04.2016 17:53:38
Fennek
Hallo Daniel,
auch schon vor 'Trusty' habe ich keine fremden *.xlsm geöffnet. Also hier meine frei Interpretation der Frage, einige Änderungen wirst du noch vornehmen müssen.

Sub sDaniel()
sR = Worksheets("Original").UsedRange.Address
Debug.Print sR
Debug.Print Split(sR, "$")(4)
Debug.Print Val(Split(sR, "$")(2))
For i = 1 To Split(sR, "$")(4) 'Zeilen
For j = 1 To Val(Split(sR, "$")(2)) 'Spalten
If Worksheets("Original").Cells(i, j)  Worksheets("Vergleich").Cells(i, j) Then
Worksheets("Original").Cells(i, j).Interior.Color = vbYellow
End If
Next j
Next i
End Sub
mfg

Anzeige
AW: Sheets vergleichen, zwei Suchwörtern, markieren
07.04.2016 18:48:33
Daniel
Halle Fennek,
vielen Dank. Ich schaue es mir gleich mal an. Anbei das Sheet noch einmal ohne Makros, für die bessere Nachvollziehbarkeit.
https://www.herber.de/bbs/user/104831.xlsx
Daniel

AW: Sheets vergleichen, zwei Suchwörtern, markieren
07.04.2016 18:56:57
Daniel
Hallo Fennek,
ich habe es mir einmal angeschaut. Ich verstehe nicht ganz wo er den Suchstring her bekommt. Der Nachname steht in Spate B und das Geb in Spalte D. Er muss die diese Kombination erst in dem anderen Sheet suchen. Hatte vergessen zu sagen, dass die Zeilen untereinander vertauscht sein könnten. Also was in Zeile 12 im Original steht, könnte im anderen Sheet in Zeile 11 stehen.
Danke & Gruß Daniel

Anzeige
AW: Sheets vergleichen, zwei Suchwörtern, markieren
07.04.2016 19:32:10
Fennek
Hallo,
der Makro vergleicht jede Zelle in beiden sheets, einen Suchbegriff habe ich nicht wahrgenommen.
Der Code erfasst keine Sonderfälle, wie vertauschen von Werten. Da uch nicht mehr im Büro bin, kann ich jetzt nur recht allgemein antworten.
Kannst du Änderungen im Code vornehmen?
Mfg

AW: Sheets vergleichen, zwei Suchwörtern, markieren
08.04.2016 00:47:48
Daniel
Hallo Fennek,
ich habe versucht mit einem festen Suchwort den Abgleich hin zu bekommen, aber er färbt es mir nicht. Aber wie oben geschrieben, brauche ich ja die zwei Suchwörter die in verschiedenen Spalten einer Zeile stehen und dann müssen diese auch erst in der richtigen Zeile bei Vergleich gefunden werden.
Das ist mein Code der durchläuft, aber nix einfärbt:
Sub Vergleich()
Dim c As Range, blnDif As Boolean
Dim lngR As Long, lngC As Long, zz As Long, cc As Long
Dim suchwort As String
With Worksheets("Original").Range("C9:BA53")
Set c = .Find(What:="Maier")
End With
d = c.Row
For j = 6 To lngC 'Spalten
If Worksheets("Original").Cells(d, j)  Worksheets("Vergleich").Cells(d, j) Then
Worksheets("Original").Cells(d, j).Interior.Color = vbYellow
End If
Next j
End Sub

Anzeige
AW: find prüfen
08.04.2016 08:29:21
Fennek
Hallo Daniel,
nach dem 'find' - Befehl solltest du das Ergebnis überprüfen. Z.B. mit
Debug.print c.address
If c is nothing then
oder ähnlichem. Da du weist, wo der Suchbegriff steht, kannst die die Funktion erst prüfen, bevor es weitergeht.
Mfg

AW: find prüfen
08.04.2016 09:22:56
Daniel
Hallo Fennek,
ok jetzt habe ich verstanden was das Debug.Print macht. Aber ich bekomme es nicht hin, das er 2 Suchwörter in der gleichen Zeile aber unterschiedlichen Zellen (C9 & C11), in einem anderen Sheet sucht. Wie macht man so etwas?
Danke Daniel

AW: find prüfen
08.04.2016 09:31:30
Fennek
Hallo Daniel,
für zwei Suchbegriffe brauchts du zwei mal Suchen ('find'), die man dann mit 'und' verknüpfen muss.
Mfg

Anzeige
AW: find prüfen
08.04.2016 10:38:43
Daniel
Servus,
ich habe schon mal die Suche hinbekommen, aber er bringt mir immer ein Anwendungsfehler bei "Set rng = .Range("C9..."
Hast du eine Idee?
Sub Vergleich()
Dim blnDif As Boolean
Dim suchwort1 As Range, suchwort2 As Range, rng As Range
Dim lngR As Long, lngC As Long
'Suchwörter definieren
With Worksheets("Original").Range("A1:BA53")
Set suchwort1 = .Cells(9, 3)
Set suchwort2 = .Cells(9, 5)
End With
'    MsgBox suchwort1
'    MsgBox suchwort2
With Worksheets("Vergleich")
lngR = .Cells(.Rows.Count, 3).End(xlUp).Row
lngC = .Cells(5, .Columns.Count).End(xlToLeft).Column
Set rngT1 = .Range(.Cells(9, 6), .Cells(lngR, lngC))
Cells(9, 6).Select
End With
'Suchen & Vergleich
With Worksheets("Vergleich")
Set rng = .Range("C9:C" & lngR).Find(suchwort1)
MsgBox rng.Row
If .Cells(rng.Row, 5) = suchwort2 Then
For j = 6 To lngC 'Spalten
If Worksheets("Original").Cells(9, j)  Worksheets("Vergleich").Cells(rng.Row,  _
j) Then
Worksheets("Original").Cells(9, j).Interior.Color = vbYellow
End If
Next j
Else
MsgBox "nix gefunden"
End If
End With
End Sub

Anzeige
AW: find prüfen
08.04.2016 10:55:00
Fennek
Hallo Damiel,
im Prinzip sollten die Codes stimmen.
Da sich beide with...end with -Blöcke auf das selbe sheet beziehen, reicht ein großer Block.
Sieh dir den Inhalt der Variable 'lngR' an. Falls der [größer Zeichen] 9 sein sollte, gibt das einen Fehler. Auch der Inhalt von 'suchwort1' sollte definiert sein.
Mfg

AW: find prüfen
08.04.2016 11:04:43
Daniel
Hallo Fennek,
im Debugmodus bekomme ich den Wert 17 für lngR. Was müsste ich für lngR und suchwort1 definieren?
Danke Daniel

AW: find prüfen
08.04.2016 11:28:35
Fennek
Hallo,
lngR ist die letzte Zeile der Spalte C und wird über die Funktion weiter oben flexibel bestimmt. Da ist alles in Ordnung.
Such1 wird durch den Wert der Zelle E9 bestimmt. Ist -such1-'leer?
Geht du im Einzelschritt-modus (F8) durch die Codes?
Mfg

Anzeige
AW: find prüfen
08.04.2016 11:38:06
Daniel
Hallo,
ja gehe einzeln durch und die Variablen haben alle einen Inhalt und er stoppt immer bei "Set rang =". Suchwort1 (E9) ist auch im Excel nicht leer. Es steht Schmitz in der Zelle.
suchwort1 = "Schmitz"
suchwort2 = "05.07.1985"
lngR = 17
lngC = 53
Danke & Gruß
Daniel

AW: find prüfen
08.04.2016 11:54:06
Fennek
Hallo Daniel,
Fehler gefunden: am Anfang hast du suche1/2 als range definiert, es muss entweder string oder ein Zahlenformat sein.
In meinem 'Nachbau' hat es problemlos fumktioniert.
Mfg

AW: find prüfen
08.04.2016 12:05:08
Daniel
Hallo Fennek,
gute Hinweis. Aber bleibt bei mir immer noch hängen. Wie hast du die Zeile "Set rng =.Range.." umgebaut?
Sub Vergleich()
Dim d As Integer
Dim suchwort1 As String, suchwort2 As String
Dim rng As Range
Dim lngR As Long, lngC As Long, LastColumn As Long
'Suchwörter definieren
With Worksheets("Original")
suchwort1 = .Cells(9, 3)
suchwort2 = .Cells(9, 5)
End With
With Worksheets("Vergleich")
lngR = .Cells(.Rows.Count, 3).End(xlUp).Row
lngC = .Cells(5, .Columns.Count).End(xlToLeft).Column
'Suchen & Vergleich
Set rng = .Range("C9:C" & lngR).Find(suchwort1)
MsgBox rng.Row
If .Cells(rng.Row, 5) = suchwort2 Then
For j = 6 To lngC 'Spalten
If Worksheets("Original").Cells(9, j)  Worksheets("Vergleich").Cells(rng. _
Row, j) Then
Worksheets("Original").Cells(9, j).Interior.Color = vbYellow
Worksheets("Original").Cells(9, 1).Interior.Color = vbRed
Else
Worksheets("Original").Cells(9, 1).Interior.Color = vbGreen
End If
Next j
Else
MsgBox "nix gefunden"
End If
End With
End Sub

Anzeige
SOLVED: AW: find prüfen
08.04.2016 12:51:21
Daniel
Servus Fennek,
nach einem neustart des Excels, ging es auf einmal. Vielen Dank für dein Hilfe.
Gruß Daniel

197 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige