Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: gleichartige Zellenblöcke/Einträge färben

gleichartige Zellenblöcke/Einträge färben
03.11.2017 09:15:50
Gerhard
Hallo,
in einer Anwesenheitsliste werden täglich Kürzel eingetragen. Diese werden mit bedingter Formatierung gefärbt.
Die Aufgabe: sobald in einer Zeile/Reihe 42 K Einträge (=krank) ununterbrochen nebeneinander stehen, sollen diese gelb gefärbt werden (siehe Beispielzeilen in der Musterdatei.)
Wenn möglich als Makro (evtl. Start mit Button).
Die Anwesenheitstabelle geht über 2 Jahre. Eintragungen in den Zellen Y19:ACA200.
Mit bed. Format. gelingt mir die Lösung nicht, noch weniger die Makrolösung. Gibt es eine Lösung? Wer kann mir diese ggf. erstellen?
Die Beisp.-Tabelle ist vereinfacht. https://www.herber.de/bbs/user/117409.xlsx
Gruß
Gerhard
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Areas
03.11.2017 09:44:39
Fennek
Hallo,
nur so als Idee:

- für jede Zeile wird der Bereich Z bis letzte Spalte als Range definiert
- K wird in 999 umgewandelt
- mit specialcells(2,1) werden alle Zahlen ausgewählt
- eine Schleife über alle Areas prüft auf count > 42 und färbt ggf
- die 999 wird in K zurück gewandelt

Sind deine VBA-Kenntnisse ausreichen, um so einen Code warten zu können?
mfg
(es gibt sicher auch andere Möglichkeiten, mal sehen, was andere vorschlagen)
Anzeige
AW: Areas
03.11.2017 09:52:45
Gerhard
Hallo Fennek,
Danke für diese Idee. Diese in VBA umzusetzen schaffe ich nicht. Meine Makrokenntnisse sind sehr bescheiden.
Gruß
Gerhard
AW: Code
03.11.2017 11:11:09
Fennek
Hallo,
in der Beispieldatei läuft der Code fehlerfrei durch und in der ersten relevanten Zeile färbt er richtig ein. Die weiteren Prüfungen überlasse ich dir.

Sub iFen()
Dim rgn As Range
Dim Ar As Range
ls = Cells(8, Columns.Count).End(xlToLeft).Column
lr = Cells(Rows.Count, "E").End(xlUp).Row
For i = 10 To lr
On Error GoTo nrow
Set Rng = Range(Cells(i, "Z"), Cells(i, ls))
Rng.Replace "k", 999
If WorksheetFunction.Count(Rng) > 0 Then
For Each Ar In Rng.SpecialCells(2, 1).Areas
If Ar.Count > 41 Then Ar.Interior.Color = vbYellow
Next Ar
End If
nrow:
Err.Clear
On Error GoTo 0
Rng.Replace 999, "k"
Next i
End Sub
mfg
Anzeige
AW: eine bedingte Formatierungsformel ...
03.11.2017 11:30:46
...
Hallo Gerhard,
... in Y10 und entsprechender Gültigkeitsbereichsdefinition würde auch schon reichen:
=WENN(Y10"k";0;VERGLEICH(1;(Y10:$ABC10"k")*1;0)-25+SPALTE()-VERWEIS(9;1/($Y10:Y10"k"); SPALTE($9:$9)+1)) >41
Gruß Werner
.. , - ...
@ Fennek + Werner
03.11.2017 11:45:22
Gerhard
nach der Gartenarbeit werd ich beide Vers. testen.
Ich gebe dann die Infos.
Gruß
Gerhard
Anzeige
AW: Code Variante
03.11.2017 12:32:31
Fennek
Hallo,
mit "on error" zu arbeiten, ist manchmal etwas kritisch. Hier eine andere Variante:

Sub iFen()
Dim rgn As Range
Dim Ar As Range
ls = Cells(8, Columns.Count).End(xlToLeft).Column
lr = Cells(Rows.Count, "E").End(xlUp).Row
For i = 10 To lr
Set rng = Range(Cells(i, "Z"), Cells(i, ls))
rng.Name = "Fen"
If [SumProduct(--(Fen = "k"))] > 41 Then
rng.Replace "k", 999
For Each Ar In rng.SpecialCells(2, 1).Areas
If Ar.Count > 41 Then Ar.Interior.Color = vbYellow
Next Ar
rng.Replace 999, "k"
End If
Next i
End Sub
mfg
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
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