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

"X" in Zelle wenn Schriftfarbe rot

"X" in Zelle wenn Schriftfarbe rot
03.02.2023 20:17:26
Max
Liebes Forum,
ich verzweifel grade an einer für Euch sicher lösbaren Aufgabe:
Ich möchte in Zelle A5 ein "X" setzen, wenn in Zellen A1 bis A4 einmal die Schriftfarbe rot auftaucht.
Ansonsten soll A5 leer bleiben.
Ihr würdet mir super helfen!!!
Herzlichen Dank und schönes Wochenende!!!

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: "X" in Zelle wenn Schriftfarbe rot
03.02.2023 20:23:36
SF
Hola,
wird A1:A4 über die bedingte Formatierung gefärbt? Wenn nein, kann man das anhand einer Logik evtl darüber machen? Oder ist das völlig willkürlich?
Gruß,
steve1da
AW: "X" in Zelle wenn Schriftfarbe rot
03.02.2023 20:27:56
Max
@steve1da
Rot wird willkürlich eingetragen. Der Benutzer möchte in einer simplen Liste damit Veränderungen anzeigen. Also keine bed. Formatierung.
Ich probiere mit einer Formel aus dem Forum für Zelle A5: "=WENN(A1:A4=@Schriftfarbe=3;"X";"")" oder so ähnlich aber das funktioniert bisher nicht.
Vielen Dank für deine Antwort!!! :)
AW: "X" in Zelle wenn Schriftfarbe rot
03.02.2023 21:42:53
onur
Dumme Frage: Ist die rote Schriftfarbe nicht auffälig genug? Wozu noch das "X"? Für Farbenblinde? Der Bereich A1:A4 ist doch auf einen Blick überblickbar.
Anzeige
AW: "X" in Zelle wenn Schriftfarbe rot
03.02.2023 21:55:55
Max
Gibt doch keine dummen Fragen :)
Die Liste A1:A5 ist seeehr lang und ich möchte am Ende eine Zeile die ein x anzeigt, sollte in den Zellen vorher ein Wort in rot sein.
Damit könnte ich dann die Spalte mit den x-en filtern nur zeile mit x anzuzeigen.
AW: "X" in Zelle wenn Schriftfarbe rot
03.02.2023 22:29:02
onur
"Damit könnte ich dann die Spalte mit den x-en filtern nur zeile mit x anzuzeigen. " Dann siehst du aber nix mit rot, da du das "X" in A5 machen willst, wenn DARÜBER etwas rot ist.
Entweder dein Beispiel mit A1:A5 ist extrem blöd oder wir reden aneinander vorbei.
AW: "X" in Zelle wenn Schriftfarbe rot
04.02.2023 16:38:35
Yal
Hallo Joseph,
die grösste Schwierigkeit ist, dass rot nicht unbedingt gleich rot. Beim meinem Test ist rot 255. Ein leicht anderes rot wäre aber 13311. Wenn auch andere Farben mitmischen, wird es erst lustig.
Folgende Code ist ein User Defined Function. Es wird in ein allg. Modul abgelegt und im Blatt als Formel verwendet.
Public Function Farbe(ByVal Target As Range, Optional InfoTyp As String)
Dim i
Dim min%, max%
Dim tmp As Long
Dim Liste As Object
    min = -1
    max = -1
    Set Target = Target.Cells(1) 'falls mehrere Zelle, nur die erste
    Set Liste = craeteobject("scripting.dictionary")
    For i = i To Len(Target.Text)
        tmp = Target.Characters(i, 1).Font.Color
        If tmp > 0 Then If min = -1 Or tmp  min Then min = temp 'kleinsten non-Null. Null=Schwarz
        If max = -1 Or tmp > max Then max = temp
        Liste(tmp) = Liste(tmp) + 1
    Next
    Select Case LCase(InfoTyp)
    Case "min": Farbe = min
    Case "max": Farbe = max
    Case "beide": Farbe = min & ";" & max
    Case "gleich": Farbe = (min = max)
    Case "liste", ""
        tmp = ""
        For Each i In Liste.Keys
            tmp = tmp & "," & i & ":" & Liste(i)
        Next
        Farbe = Mid(tmp, 2) 'ohne führende ","
    End Select
End Function

Die Aufruf lautet
=Farbe(A1;"min") 'die kleinste Farbwert. Schwarz ist 0 und wird gar nicht aufgelistet. Wenn alles schwarz kommt -1 raus.
=Farbe(A1;"max") 'die höchste Farbwert
=Farbe(A1;"gleich") 'ob alle dieselbe Farbe
oder
=Farbe(A1;"liste") 'alle Farbe + Anzahl an Zeichen in jeder Farbe
Somit kannst Du sehen, ob Zeichen in eine andere Farbe als schwarz vorliegen.
Ob die Farbe dann rot ist, war das eigentlich Grund, warum diese Frage interessant sein kann. Nach verschiedenen Ansätze komme ich ungefährt auf einen Ermittlung durch "Abstand": in wie weit ist die Farbe vom rot (RGB 255-0-0) entfernt, und wo ist die Grenze des "nicht mehr rot genug".
Function IstEsRot(ByVal Farbe As Long) As Boolean
Dim R&, G&, B&, RG#, RB# '& long, # Double
Const cGrenze = 80
'Teilung in Rot-Grün-Blau
    R = Farbe And 255
    G = (Farbe \ 256) And 255
    B = (Farbe \ 65536) And 255
'Berechnung der Abstände
    RG = Sqr((255 - R) ^ 2 + G ^ 2) 'Radius Rot-Grün
    RB = Sqr((255 - R) ^ 2 + (2 * B) ^ 2)  'Radius Rot-Blau, Blauwert gedoppelt, weil Blau nicht so stark zieht wie Grün
'Rot oder nicht, je nach Grenzensetzung
    IstEsRot = RG  cGrenze And RB  cGrenze
End Function
Man kann auch schon aus den Farben den RGB rechnen und sagen: erst wenn R > 200, ist es rot genug.
Dafür einen Test. Man kann an der "Grenze" ausprobieren:
Sub Test()
Dim i, z, Arr
Dim Farbe As Long
Const cRotGrenze = 200
    Randomize
    With ThisWorkbook.Worksheets.Add
        z = 1
        For i = 1 To 200
            Arr = Array(WorksheetFunction.RandBetween(0, 255), WorksheetFunction.RandBetween(0, 255), WorksheetFunction.RandBetween(0, 255))
            Farbe = RGB(Arr(0), Ar(1), Arr(2))
            If SplitRGB(Farbe)(0) > cRotGrenze Then
                z = z + 1
                .Cells(z, 1).Interior.Color = Farbe
                .Cells(z, 2).Resize(1, 3) = Arr
            End If
        Next
    End With
End Sub
Endlich mal was ausserhalb von "Daten von A nach B kopieren". Hat spass gemacht.
VG
Yal
Anzeige
AW: "X" in Zelle wenn Schriftfarbe rot
05.02.2023 10:47:31
Max
@Yal: Vielen Dank dir für deine Mühe. Freut mich sehr, dass es dir Spass gemacht hat! :)
Ich habe allerdings wirklich nur rot. Ich versuche die Aufgabe nochmal zu stellen, etwas abgeändert:
Spalten A bis E haben Einträge, meistens schwarz, nur einige in rot (Standard Rot).
Nach jeder Zeile soll in Spalte F geprüft werden, ob sich in den 5 Zellen links davon eine rote Standard Farbe befindet. Sollte das der Fall sein, möchte ich ein "X" erscheinen lassen, ansonsten soll F leer bleiben. Im Nachhinein möchte ich Spalte F filtern können auf X'e, damit mir nur Zeilen mit roter Farbe angezeigt werden.
Sorry, dass es da bisher Unklarheiten gab.
Ein schönes Wochenende!
Anzeige
AW: "X" in Zelle wenn Schriftfarbe rot
05.02.2023 11:58:11
Yal
Hallo Max,
dann wesentlich einfacher:
Public Function HatRot(ByVal Target As Range) As Boolean
Dim i, Z As Range
    For Each Z In Target.Cells
        For i = 1 To Len(Target.Text)
            If Target.Characters(i, 1).Font.Color = 255 Then
                HatRot = True
                Exit Function 
            End If
        Next
    Next
End Function
Wie vorher, UDF, also als Formel zu verwenden. Kann auch mehrere Zelle ("A1:A5") als Parameter aufnehmen, steigt aber beim ersten rot aus (Optimierung der Berechnungszeit).
VG
Yal
Anzeige
AW: "X" in Zelle wenn Schriftfarbe rot
05.02.2023 23:35:12
Max
Danke dir nochmal Yal! :)
Und was muss ich dann als Formel eingeben? In F1 sowas wie : =WENN(@HatRot(A1:E1);"X";"") ?
Sorry ich taste mich grade langsam ran an das Wunderwerk Excel!
Genau, aber ohne @ owT
05.02.2023 23:49:32
Yal
(owT steht für "ohne weitere Text")
AW: Genau, aber ohne @ owT
05.02.2023 23:56:50
Max
https://www.herber.de/bbs/user/157658.xlsm
Yal, abermals vielen Dank für deine schnelle Antwort.
Sorry, dass es noch nicht klappt, sei bitte gnädig :)
Ich hab mal eine Datei angehängt.
AW: Genau, aber ohne @ owT
06.02.2023 09:11:50
Yal
Hallo Max,
sorry, ich habe gestern den Code am Handy aus dem original auf das wesentlichen reduziert und dann die mehrzellige Fähigkeit eingebaut. Dabei zwei Fehler reingebaut.
Hier der richtigen Code. Nach dem "For Each Z" muss man natürlich Z als Einzelzelle verwenden und nicht Target (mehrzellig)
Public Function HatRot(ByVal Target As Range) As Boolean
Dim i, Z As Range
  
      For Each Z In Target.Cells
          For i = 1 To Len(Z.Text)
              If Z.Characters(i, 1).Font.Color = 255 Then
                  HatRot = True
                  Exit Function
              End If
          Next
      Next
End Function
Es ist keine Matrixformel. Einfach zuerst mit =HatRot(A1:B1) testen (aber der Wenn ist ja nicht störend).
VG
Yal
Anzeige
AW: Genau, aber ohne @ owT
07.02.2023 13:18:32
Max
Habemus X :D
Yal vielen lieben Dank dir für deine Arbeit! Großartig!!!
na dann: gaudium magnum
07.02.2023 13:44:34
Yal
owT

227 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige