Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1004to1008
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

Zeile rot färben bei 2 Bedinungen

Zeile rot färben bei 2 Bedinungen
25.08.2008 14:22:00
Lauren
Hallo Gemeinde,
ich habe wiedermal ein kleines Problem.
Und zwar habe ich wenn sich einige erinnern können jetzt meine Daten nach größer/gleich 3 usw. aufbereitet, leerzeilen für die Veranschaulichung usw. eingefügt und meine Rechnungen gemacht.
Jetzt ist mir aufgefallen, dass manche Monate doppelte Werte haben, zum Beispiel ich habe jetzt Datumsangaben in Spalte A und ich habe 2x 2007-11-01 aber mit jeweils anderen Werten. Die fälle müssen geprüft werden, daher möchte ich mit ein Makro durch alle Tabellenblätter jagen der prüfen soll ob es fälle gibt in dem es mehr als 12 Monate bzw. Zeilen gibt bei der Bildung von SUMs. Also wenn man den Jahreswert einer Menge bildet das SUMs durch eine Zahl größer 12 geteilt wird bevor man es mit 12 multipliziert, dann hätte ich die Fälle abgefangen wenn ich zwar 12 Monate habe aber in den 12 Monatswerten sich ein Monat doppelt vorkommt.
Da der Bereich der Bildung von SUMs zwischen minimal 3 bis eben größer 12 variieren kann und dabei sich Datumswerte auch wiederholen könnten muss noch der Fall abfangen werden ob je berechnungsbereich sich ein Datum wiederholt.
Ein weiteres Problem ist, dass die Datumswerte nicht sortiert sind und eine Sortierung bei der Datenmenge nicht zum nachholen ist.
Wenn eines der beiden Fälle eintritt soll die Zeile Rot markiert werden, damit ich diese fälle dann beim durchscrollen erkenne und die Fälle dann manuel prüfen kann.
Ich habe mal einen Auszug bzw. einen Beispielbereich eines Tabellenblattes erstellt und hochgeladen. Links und rechts von diesem Beispielsausschnitt sind noch andere Parameter bzw. Bezeichnungen vorhanden die aber meines erachtens nicht wichtig sind für das Vorhaben.
>>https://www.herber.de/bbs/user/54884.xls
Vielen Dank und viele Grüße

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeile rot färben bei 2 Bedinungen
25.08.2008 17:44:27
fcs
Hallo Lauren,
hier ein Makro zum Markieren der doppelten Datumsangaben je SUMs-Bereich.

Sub MehrfacheMarkieren()
'Markiert pro SUM-Bereich mehrfach vorkommendes Datum
Dim wks As Worksheet
Dim lngZeile As Long, lngZeile1 As Long, lngZeileSum As Long, lngI As Long
Set wks = ActiveSheet
With wks
lngZeile1 = 2
For lngZeile = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
If .Cells(lngZeile, 1).Value = "SUMs" Then
For lngI = lngZeile1 To lngZeile - 1
If Application.WorksheetFunction.CountIf(.Range(.Cells(lngZeile1, 1), _
.Cells(lngZeile - 1, 1)), .Cells(lngI, 1).Value) > 1 _
And .Cells(lngI, 1).Value  "" Then
.Cells(lngI, 1).Interior.ColorIndex = 3 'rot einfärben
End If
Next
lngZeile1 = lngZeile + 1
End If
Next
End With
End Sub


Gruß
Franz
P.S.
Lasse in Zukunft beim Einfügen des Links für eine hochgeladenen Datei weitere Zeichen weg oder füge Leerzeichen vor und nach dem Link ein!! Der Link funktioniert sonst nicht!!
Am besten: Link einfach in eine Leerzeile einfügen - fertig.

Anzeige
AW: Zeile rot färben bei 2 Bedinungen
26.08.2008 14:59:00
Lauren
Hallo Franz,
vielen Dank für deinen Code!!!
Leider passt er noch nicht ganz.........ich habe die nachkommastellen auf 3 geändet z.B von ,1 auf (.Rows.Count, 3) weil der Datumswert in der richtigen Tabelle in der Spalte 3 ist, das ganze sieht dann so aus:

Sub MehrfacheMarkieren()
'Markiert pro SUM-Bereich mehrfach vorkommendes Datum
Dim wks As Worksheet
Dim lngZeile As Long, lngZeile1 As Long, lngZeileSum As Long, lngI As Long
Set wks = ActiveSheet
With wks
lngZeile1 = 2
For lngZeile = 2 To .Cells(.Rows.Count, 3).End(xlUp).Row
If .Cells(lngZeile, 3).Value = "SUMs" Then
For lngI = lngZeile1 To lngZeile - 1
If Application.WorksheetFunction.CountIf(.Range(.Cells(lngZeile1, 3), _
.Cells(lngZeile - 1, 3)), .Cells(lngI, 3).Value) > 1 _
And .Cells(lngI, 3).Value  "" Then
.Cells(lngI, 3).Interior.ColorIndex = 3 'rot einfärben
End If
Next
lngZeile1 = lngZeile + 1
End If
Next
End With
End Sub


Jetzt Färbt es auch andere Fälle Rot (SIEHE TABELLE IM ANHANG) welches zu einem falschen Ergebnis führt. Im Beispiel bei den Werten bbbbb und ccccc sowie ddddd und eeeee.
Was auch nuch super wäre, wenn er am schluss also in der aller letzten Zeile von der Spalte A mit Rot dann ganz unten eine Zahl rein schreibt wie oft bzw. wieviel Doppelwerte aufgetaucht sind.
NOCHMALS SUUUUUUUUuuuuuuuper LIEBEN DANK!!!
Grüße
Lauren
BEISPIELTABELLE
https://www.herber.de/bbs/user/54929.xls

Anzeige
AW: Zeile rot färben bei 2 Bedinungen
26.08.2008 16:47:52
Lauren
Hallo nochmal,
nach dem ich mir jetzt ewig Gedanken gemacht habe um diesen Code zu verstehen habe ich den Fehler gefunden aber kann die Korrektur nicht alleine umsetzen.
Der Code setzt nun lngZeile1 = Zeilennummer in der ein SUMs gefunden wurde +1 und sucht weiter nach dem nächsten SUMs und prüft dann nach Wiederholungen, jedoch im zu großen Bereich.
Es kommt vor, dass zwischen dem letzten SUMs und dem aktuellen SUMs ein paar Datumsangaben sich befinden für die kein SUMs gebildet wurde und das Makro sagt dann LETZTES SUMs +1 BIS AKTUELLEM SUMs WIEDERHOLT SICH DAS DATUM ALSO ROT was aber falsch ist
Die einfachste Lösung wäre nach meinen Überlegungen, das man dem Makro sagt aktuelles SUMs nach oben geht bis zur ersten freien Zeile. Denn nach jedem SUMs gibt es mindestens 2 freie Zeilen.
Abier hier ist das Problem was passiert mit dem ersten SUMs welches dann oben die Spaltenüberschriften beinhaltet und keine leere Zelle in der Spalte hat?!?!?
Ich habe mal meine Gedanken in meiner Beispiel Tabelle veranschaulicht:
Die Farben sind gedanklich nur neben an um es zu veranschaulichen, es geht aber natürlich immer um Spalte 3 (C)
GRÜN = Prüfbereich nach dem bisherigen Makro natürlich in Spalte C (3)
ORANGE = Mein Vorschlag bis wohin der Suchbegriff sein sollte wiederum in Spalte C (3)
Nochmals vielen Dank für die Hilfe!
https://www.herber.de/bbs/user/54931.xls
Anzeige
AW: Zeile rot färben bei 2 Bedinungen
26.08.2008 17:04:50
Lauren
So ich habe die Lösung der Probleme aber ich kann die Formulierung nicht selber :(
Die Werste in Spalte A wiederholen sich ja im SUMs Bereich und SUMs wurde ja nur gebildet wenn sich die Werte in Spalte A mehr oder mindestens 3 mal wiederholt haben. Also kommt immer nach einer Wertänderung in Spalte 3 Leere Zeilen. Dies ist in der vorhergehenden Beispieltabelle deutlich ersichtlich.
Also müsste man jetzt "einfach" vom aktuellen SUMs ausgehend einfach in eine Zeile hoch und in Spalte A anfangen zeile für zeile hochgehen bis sich vorhergehende Wert ändert, somit hätte man exakt den gewünschten Bereich bzw. die Zeilenangaben in denen dann in Spalte C geprüft werden soll ob sich Werte wiederholen.
Wäre super wenn mir jemand bei der Umformulierung helfen würde.
Viele Grüße
Anzeige
AW: Zeile rot färben bei 2 Bedinungen
26.08.2008 20:33:29
fcs
Hallo Lauren,
ich habs jetzt so umgesetzt, dass immer die nächste Zeile mit SUMs gesucht wird. Die erste Zeile des zu SUMs gehörenden Bereichs wird ermittelt, indem die nächste leere Zelle oberhalb von SUMs gesucht wird oder Zeile 2 erreicht ist.
Gruß
Franz

Sub MehrfacheMarkieren()
'Markiert pro SUM-Bereich mehrfach vorkommendes Datum
Dim wks As Worksheet, lngZaehler As Long
Dim lngZeile As Long, lngZeile1 As Long, lngZeileSum As Long, lngI As Long
Const SpalteSUMs As Long = 3
Set wks = ActiveSheet
With wks
For lngZeile = 2 To .Cells(.Rows.Count, SpalteSUMs).End(xlUp).Row
If .Cells(lngZeile, SpalteSUMs).Value = "SUMs" Then
'Leerzeile oberhalb von SUMs ermitteln
lngZeile1 = lngZeile
Do
lngZeile1 = lngZeile1 - 1
Loop Until IsEmpty(.Cells(lngZeile1, SpalteSUMs)) Or lngZeile1 = 2
'Mehrfach-Einträge markieren
For lngI = lngZeile1 To lngZeile - 1
If Application.WorksheetFunction.CountIf(.Range(.Cells(lngZeile1, SpalteSUMs), _
.Cells(lngZeile - 1, SpalteSUMs)), .Cells(lngI, SpalteSUMs).Value) > 1 _
And .Cells(lngI, SpalteSUMs).Value  "" Then
.Cells(lngI, SpalteSUMs).Interior.ColorIndex = 3 'rot einfärben
lngZaehler = lngZaehler + 1
End If
Next
End If
Next
End With
MsgBox "Es wurden " & lngZaehler & " Mehrfacheinträge markiert."
End Sub


Anzeige
AW: Zeile rot färben bei 2 Bedinungen
27.08.2008 15:43:47
Lauren
SUuuuuper!
vielen Dank, das war genau das was ich gebraucht habe.
MERCI!
Liebe Grüße
Lauren

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige