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

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

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)
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
Anzeige
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
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

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige