Excel makro vba zeilenvergleich und

Hallo liebe wer-weiss-was-Gemeinde,

ich habe mal wieder ein hoffentlich kleines Excel-Problem, wofür ich eine Lösung brauche.
Folgende Ausgangslage:
Spalte A = laufende Nummer von 1 bis ~ (z.Zt. 1235)
Spalte B = Vergleichswerte (Format Standard). Diese kommen aus einer anderen Datei (Import)

Ich benötige jetzt ein Makro VBA, welches folgende Prüfung vornimmt: alle Zeilenwerte mit Zeilenwert drüber und Zeilenwert drunter vergleichen und bei Ungleichheit ein # vor die laufende Nummer in Spalte A setzen.

Hier ein Beispiel
Spalte A Spalte B
1 11 12311
2 12 12311
3 13 17456

Hallo Stefan

du schreibst " Das Makro soll die Spalte B durchprüfen und immer ein # in die Spalte A vor die Zahl setzen in der Zeile, wo eine Anomalie auftritt. Allerdings nicht wenn die Werte sich normal ändern, wie in Zeile 4 zu 5."
Meinst du damit die Markierung soll nur gesetzt werden wenn der Wert ungleich dem Wert in der Zelle darüber UND der Zelle darunter ist, oder was meinst du mit „normal ändern“

Hallo.

Ich habe eine Idee, aber auch eine Rückfrage zu deinem Beispiel

Hier ein Beispiel
Spalte A Spalte B
1 11 12311
2 12 12311
3 13 17456 range(„A“&b) and Range(„A“&a)range(„A“&c) and range(„A“&b)=range(„A“&c) then

range(„B“&a)="#" & range(„B“&a)
else
endif
a=a+1
loop

Dabei bin ich davon ausgegangen, dass die ersten Zahlenreihe in Zeile 1 steht.

Grüße, Aiko.

Hallo FoolOnTheHill,

ja mit dem „UND“ ist eine gute Formulierung. Es handelt sich um große Datenmengen, die importiert werden. Jetzt macht die Messtechnik irgendein Fehler. Die Technikabteilung arbeitet mit Hochdruck daran, diesen Fehler zu analysieren, aber es gibt noch kein Ergebnis. Jetzt müssen die bisher erstellten Protokolle für den weiteren Arbeitsprozess verwendet werden. Es gibt also Kolonnen mit richtigen Zahlen (gleiche Werte) Dazwischen kommt dann eine Zeile mit einem falschen Wert, dann geht es in der Zahlenkolonne richtig weiter. Nach einer gewissen Zeilenanzahl wechselt die Werte auf ein neues Messergebnis (neuer Wert in einer Kolonne). Ich möchte diesen ‚falschen‘ Wert mit einem Hash in Spalte A herausfiltern, wenn der untere Zeilenwert UND der obere Zeilenwerte gleich sind.

Ich hoffe, es ist klarer geworden.

Gruß

Stefan

Hallo Aiko,

leider hat es mit der Formatierung nicht richtig geklappt.

Es sollte so aussehen:
…Spalte A…Spalte B…
1…11…12311…
2…12…12311…
3…13…17561…
4…14…12311…
5…15…5722…
6…16…5722…

Nach dem Makro:
…Spalte A…Spalte B…
1…11…12311…
2…12…12311…
3…#13…17561…
4…14…12311…
5…15…5722…
6…16…5722…

Ich hoffe, es ist jetzt klarer.
Das Makro soll ein Hash in der entsprechenden Zeile setzen, wenn der Zahlenwert oberhalb UND unterhalb gleich ist.

Gruß

Stefan

Hallo Stefan,

um das von dir gewünschte Ergebnis zu erreichen brauchst du kein Macro.
Füge in die Zelle A2 folgende Formel ein:
=WENN(UND(B2B1;B2B3);"#"&ZEILE()-ZEILE(A$1)+1;ZEILE()-ZEILE(A$1)+1)
Zieh die Zelle A2 die ganze Spalte A runter……

Wenn du es als Makro brauchst:

Sub Prüfe_Werte()
Dim i As Long
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row - 1
If Cells(i, 2) Cells(i - 1, 2) And Cells(i, 2) Cells(i + 1, 2) Then
Cells(i, 1) = „#“ & Cells(i, 1)
End If
Next i
End Sub

Grüße vom Narren

Hallo Stefan.

Von deinem Beispiel ausgehend habe ich die Zahl 1 in die Zelle A1 geschrieben. 11 steht entsprechend in Zelle B1 und 12311 in Zelle C1.

…Spalte A…Spalte B…
1…11…12311…
2…12…12311…
3…13…17561…
4…14…12311…
5…15…5722…
6…16…5722…

Mein Makro:

a = 2
a_b = 1
Do Until Range(„A“ & a) = „“
a_c = a + 1
If Range(„C“ & a_c) = Range(„C“ & a_b) Then
Range(„B“ & a) = „#“ & Range(„B“ & a)
Else
End If

a = a + 1
a_b = a - 1
Loop

hat dann genau das erreicht, was du gefragt hast:

Das Makro soll ein Hash in der entsprechenden Zeile setzen,
wenn der Zahlenwert oberhalb UND unterhalb gleich ist.

Ich hoffe, dass es bei dir jetzt klappt. Die Formatierung ist natürlich noch nicht optimal, aber das ist sicher eine Kleinigkeit und kann per Makro-Aufnahme gedeichselt werden.

Grüße.

Hallo FoolOnTheHill,

vielen Dank für deine Antwort. Leider wusste ich bei der Antwort per e-mail nicht genau bei Deinem Listing, welche Zeichen ich löschen muss, weil sie nur der Darstellung (html) dienten, z.B. . Da es sich um eine schnelle Lösung handeln sollte, aber ich eine andere gewählt. Aber ich finde es toll, dass du so schnell geantwortet hast und sogar eine Lösung ohne Makro liefern konntest, obwohl diese Variante etwas unpraktisch läuft, da ich leider so 70 bis 80 Dateien überprüfen muss, die aus ca. jeweils 6000 Datenzeilen bestehen, da ist die Makro-Lösung schon schneller und komfortabler.

Ich wünsche noch ein schönes Wochenende

Gruß

Stefan