Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Verschiedene Ranges definieren und vergleichen

Forumthread: Verschiedene Ranges definieren und vergleichen

Verschiedene Ranges definieren und vergleichen
25.06.2024 14:34:39
Muckinator
Hallo zusammen,

ich bräuchte bitte Eure Hilfe. Ich hab schon einige Makros "zusammengepfuscht", aber hier fehlt mir vermutlich der richtige Denkansatz, um eine Lösung zu finden.
Bisher konnte ich mir immer über die Suchmaschinen im Internet die passende Unterstützung suchen, aber hier zu finde ich nichts bzw. weiß ich eben nicht richtig wo nach ich suchen muss.

Ich habe in Spalte A Artikelnummern, die sich unterschiedlich oft wiederholen. Diese gleichen Artikelnummerblöcke können sich durch eine Zahl in Spalte B unterscheiden (beginnend mit 1). Also gibt es zum Beispiel Artikel 5200 2x mit 1 in Spalte B und 2x mit 2 in Spalte B. Jetzt sollen diese Blöcke erkannt werden und die Zahlen in Spalte C dieser Blöcke verglichen werden. Sind sie identisch, okay. Unterscheidet sich zB eine Nummer in Spalte C soll die Differenz farblich markiert werden. Im Beispiel würden P200 und P300 nicht matchen.

Ich hab ein Knoten im Hirn, weil ich mir so schwer tue das überhaupt anständig zu formulieren. Ich hoffe ich konnte es einigermaßen verständlich erklären - für mich vor der Mappe macht es vollkommen Sinn.

Ich habe noch eine Beispielmappe angehängt, um es deutlicher aufzuzeigen.
Ich hoffe mir kann hier jemand helfen.

Liebe Grüße
Muckinator




Meine Mappe sieht grob vereinfacht so aus:

SPALTE A 

5200
5200
5200
5200
5300
5300
.
.


SPALTE B

1
1
2
2
1
1
.
.


SPALTE C

P100
P200
P100
P300
P400
P400
.
.

Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Verschiedene Ranges definieren und vergleichen
25.06.2024 20:22:38
Piet
Hallo

ich denke ich habe eine brauchbare VBA Lösung gefunden. Bitte mal testen. Bei mir klappt es.

mfg Piet

Option Explicit

Dim Zahl As Integer, lz1 As Long


Sub vergleichen()
Dim a As Long, b As Long, j As Long
lz1 = Cells(Rows.Count, 1).End(xlUp).Row
Range("C2:C" & lz1).Font.Color = 1

For a = 2 To lz1
'Blockende suchen
For b = a To lz1
If Cells(a, 1) > Cells(b, 1) Then Exit For
Next b
'Block Mit ZählenWenn auswerten
For j = a To b
Zahl = Application.WorksheetFunction.CountIf(Range(Cells(a, 3), Cells(b, 3)), Cells(j, 3))
If Zahl = 1 Then Cells(j, 3).Font.ColorIndex = 3
Next j
a = b 'nächsten Block
Next a
End Sub
Anzeige
AW: Verschiedene Ranges definieren und vergleichen
26.06.2024 15:20:22
Piet
Hallo

bitte probiere mal diesen Code, ich hoffe der Fehler ist jetzt behoben. Ich habe ihn auskommentiert.
Für VBA Anfänger verwirrend ist die letzte Codezeile: - a=b, um die Schleife auf den nächsten Block zu setzen.
Normalerweise inkrementiert eine Schleife immer um den Wert 1, hier habe ich die Schleife etwas ausgetrickst!

mfg Piet

Option Explicit

Dim Zahl As Integer, lz1 As Long
Dim Blk As Integer 'Anzahl Block

Sub vergleichen()
Dim a As Long, b As Long, j As Long
'LastZell in Spalte A ermitteln
lz1 = Cells(Rows.Count, 1).End(xlUp).Row
'Schriftfarbe auf schwarz setzen
Range("C2:C" & lz1).Font.ColorIndex = 1
'Interiorfarbe löschen
Range("C2:C" & lz1).Interior.ColorIndex = xlNone

'1. Schleife durchsucht alle Zeilen von 2 bis LastZell
For a = 2 To lz1
'2. Schleife: Blockende suchen
For b = a To lz1
If Cells(a, 1) > Cells(b + 1, 1) Then Exit For
Next b

Blk = b - a + 1 'Anzahl Blockzeilen
'2.Schleife: Block Plan-Nr mit ZählenWenn zählen
For j = a To b
Zahl = Application.WorksheetFunction.CountIf(Range(Cells(a, 3), Cells(b, 3)), Cells(j, 3))
'wenn Plan A-B nur einmal vorkommt rot markieren
If Zahl = 1 Then Cells(j, 3).Font.ColorIndex = 3
'wenn Plan insgesamt nur einmal vorkommt grün markieren
If Zahl = Blk Then Cells(j, 3).Resize(Blk, 1).Interior.ColorIndex = 4: Exit For
Next j
a = b 'a auf nächsten Block setzen
'** ändert den Wert der 1. Schleife
Next a
End Sub
Anzeige
AW: Verschiedene Ranges definieren und vergleichen
28.06.2024 10:45:10
Muckinator
Hallo Piet,

sehr, sehr geil. Ich konnte den Code noch auf meine Originalmappe anpassen und 1-2 Anpassungen vornehmen - passt einwandfrei.

Vielen Dank für deine Zeit und Hilfe.

Schönes Wochenende!
Mucki
AW: Verschiedene Ranges definieren und vergleichen
02.07.2024 14:38:47
Muckinator
Hi Piet,

jetzt ist mir beim intensiveren Testen doch noch etwas aufgefallen.
Dürfte ich dich bitten mir nochmals zu helfen?

Wenn ich den Code jetzt richtig verstanden habe, prüft er, ob eine Prüfplannummer (Spalte C) innerhalb des Blocks einer Artikelnummer (Spalte A) mehr als einmal (grün) oder nur einmal (rot) vorkommt.

Das Ziel sollte sein zu überprüfen, ob innerhalb eines Artikelblocks (Spalte A) die Prüfpläne (Spalte C) der einzelnen Unterblöcke (Spalte B: Route 1, Route 2,..) absolut identisch sind. Das führt aber zu Problemen, wenn es zum Beispiel nur einen Routenblock im Artikelblock gibt (Code findet kein Duplikat der Prüfplannummer = rot). Das Problem konnte ich sogar irgendwie umständlich lösen, aber ein größeres Problem sind Artikelblöcke mit vielen Routenblöcken, in denen jeder Prüfplan mindestens zweimal vorkommt, aber eben nicht bei jeder Route. Diese werden auch als korrekt/grün erkannt.

Artikel

1001
1001
1001
1001
1001
1001


Route

1
1
2
2
3
3


Prüfplan

P100
P200
P300
P300
P100
P200


Das hier als Beispiel. Hier würde der Code den Artikelblock 1001 grün markieren, weil jeder Prüfplan innerhalb des Artikelblocks mindestens 2x vorkommt. Allerdings wären nur Route 1 und Route 3 identisch.




Ein Lösungsansatz hier zu wäre eventuell folgender:
Artikelblock finden
Unterblöcke finden
Routenanzahl definieren (= Anzahl Unterblöcke)
Checken, ob jede Prüfplannummer im Artikelblock so oft vorkommt wie es verschiedene Routen gibt
Kommt jeder Prüfplan genau so oft vor wie es Routen gibt = grün, andernfalls rot


Ich hoffe ich konnte mich einigermaßen verständlich ausdrücken.

Über eine Rückmeldung freu ich mich sehr

Liebe Grüße
Mucki
Anzeige
AW: Verschiedene Ranges definieren und vergleichen
03.07.2024 10:55:52
Muckinator
Ich nochmal - hatte da wohl bisschen was durcheinander gebracht, aber habs jetzt alles selber lösen können dank deiner Kommentare :-)
AW: Verschiedene Ranges definieren und vergleichen
26.06.2024 09:46:59
Muckinator
Guten Morgen Piet,

danke für die schnelle Antwort.
Wow - funktioniert soweit echt super!

Leider habe ich in der Testmappe zur optischen Trennung eine Leerzeile zwischen den Artikelnummerblöcken eingefügt. Diese existieren in der Originalmappe nicht. Ohne Leerzeile scheint das Makro aber nicht mehr richtig zu funktionieren. Macht es das unproportional schwieriger für die Blockerkennung? Falls ja kann ich auch einfach eine Leerzeile nach jedem Block einfügen lassen - das bekomme ich noch hin (falls das die einfachere Lösung wäre).
Und wäre es möglich, wenn ein Artikelnummerblock keine Unterschiede aufweist, den gesamten Block in Spalte C grün zu markieren?

Und dürfte ich dich vielleicht bitten ein paar Kommentare in den Code zu schreiben? Ich möchte ja nicht nur blind den Code von dir übernehmen, sondern auch verstehen wie er funktioniert und mich weiterbilden.

Vielen, lieben Dank schon mal für deine Hilfe - auch so bin ich schon ein großes Stück weitergekommen.

Liebe Grüße
Mucki

Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige