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

Forumthread: wenn schriftfarbe rot dann zählen

wenn schriftfarbe rot dann zählen
Lars
Hi habe eine Frage,
ich habe mir eine kleine Funktion geschrieben mit der ich alle roten ampeln zählen möchte, bekomme aber irgendwie immer die Fehlermeldung "Name" vielleicht kann sich jemand mal die Datei anschauen und mir kurzes Feedback geben wo ich den Denkfehler habe.
DANKE Sehr
https://www.herber.de/bbs/user/77316.xls
Lars
Anzeige
AW: wenn schriftfarbe rot dann zählen
02.11.2011 12:01:30
Dieter(Drummer)
Hi Lars,
einmal fällt mir auf, dass deine Funktion in Zelle "Function FarbeZaehlen(Bereich, Farbe)" schon nicht erkannt wird. Dies erkennst Du in der Zelle F4 der Tabelle mit "#Name?". Wäre die Function ok in VBA, dann würde auch der Funtionsname so dort stehen "FarbeZaehlen" und nicht "Farbezaehlen".
Ich bin in VBA nicht FIT aber die Farbe, die Du als Anzahl haben möchtest, muss wohl auch im Functionscode vorhanden sein, wenn ich nicht irre ...
Hier müssen Spezialisten/innen ran.
Gruß
Dieter(Drummer)
Anzeige
Leider irrst du da wahrscheinlich, ...
02.11.2011 14:22:39
Luc:-?
…Dieter,
denn Xl passt zwar das Schriftbild der StddFktt an, nicht aber unbedingt auch das der udFktt → das macht wohl nur der VBE.
Den wahren Grund hat NoNet genannt - Dok-Klassenmodul!
Gruß Luc :-?
AW: Leider irrst du da wahrscheinlich, ...
02.11.2011 14:47:47
Dieter(Drummer)
Hi Luc:-?,
Danke für Info. Das ist alles zu hoch für mich ...
Gruß
Dieter(Drummer)
Anzeige
Mehrere Fehlerquellen im Beispiel
02.11.2011 12:04:21
NoNet
Hallo Lars,
das Beispiel enthält mehrere Fehler(quellen) :
  • Platziere den Code besser in einem Modul im VBA-Editor (z.B. "Modul1") anstatt im Klassenmodul des Tabellenblattes

  • Deklare den Code evtl. als PUBLIC : Public Function ...()

  • mit der Zuweisung FarbeZaehlen=Farbezaehlen+1 wird das Ergebnis bereits festgelegt, d.h. es kann immer nur 0 oder 1 als Ergebnis resultieren, da die Function mit dieser Wertzuweisung an den Funktionsnamen beendet wird !
    Verwende stattdessen eine temporäre Variable (z.B. tmpVariable) zum Aufaddieren und weise dem Funktionnamen am Ende der Function diesen Wert zu : FarbeZaehlen=tmpVariable

  • Die Farbe der Ampeln werden in Deinem Beispiel per Bedingte Formatierung erzeugt, diese kann man nicht per Font.ColorIndex ermitteln, denn diese eigenschaft gibt nur die Farbe der Schrift der Zelle zurück, nicht aber die Farbe der Bedingten Formatierung !! - Dazu müsste man die Regeln der Bed.format. auswerten und die daraus resultierende Schriftfarbe - das ist nicht ganz einfach. Suche mal nach Beispielen im Forum


Gruß, NoNet
Anzeige
...und der 4.Pkt ist die Crux, ...
02.11.2011 14:41:15
Luc:-?
…Lars,
denn die allgemeine Empfehlung bei nicht-engl Xl ist Nachbauen der farbveränderungsauslösenden Bedingung im Pgm. Man kann das zwar auch durch direkte Auswertung der angegebenen Bedingungen lösen, aber dazu wirst du kaum irgendwo eine vollständige Lösung finden (höchstens wie im Archiv Lösungsbspp), denn hierbei handelt es sich um eine der, na sagen wir mal, Xl:VBA-Top-Problemstellungen, vor allem, wenn das per Zellformel (udFkt) ausgewertet wdn soll. Da ist wirklich 'ne Menge zu beachten und wenn du nicht weißt, wie man eine dtsche Bedingungsfml auswerten kann, kannst du den Zweig Formel ist gleich und Wert ist auch abhaken, wenn darin nicht nur einfache Zuweisungen vorkommen.
Gruß Luc :-?
Anzeige
Aber natürlich geht das auch automatisiert, ...
06.11.2011 17:13:10
Luc:-?
…(verschollener) Lars und wen's noch interessiert.
Zwar habe ich dazu schon vor fast 2 Jahren einiges auf den Server geladen, aber das ist ggf in Vergessenheit geraten bzw kennen es viele gar nicht, wie dröge Diskussionen in den letzten Wochen vermuten lassen. Das hier soll nur noch einmal dokumentieren, dass es sowohl möglich ist, alle (Zell-)Formatierungen, egal welchen Typs, auszulesen und die aktuelle zu bestimmen als auch das ConditionalFormat-Objekt so zu konditionieren, dass es auch vor Xl12 mit wesentl mehr (Teil-)Bedingungen und Formatierungen (natürl im Rahmen der überhpt möglichen) als den 3 vorgegebenen (Hpt-)Bedingungen zurechtkommen kann. Insofern war die immense Ausweitung der BedingtFormatierung unter Xl12ff gar nicht notwendig, zumal Xl/VBA alles zV stellt, was benötigt wird — man muss nur darauf kommen, was man am besten durch eigenes Nachdenken und nicht Abschreiben von Anderen erreicht. Die wissen es meist ja auch nicht besser, wovon sich jeder gern auf einschlägigen WebSites überzeugen kann. Aber wenn jemand dann gg eine richtige Einordnung üblicher Lösungen front macht, weil er/sie den Unterschied zwischen Range- u.ConditionalFormat-Objekt nicht kennt bzw meint, ihn vernachlässigen zu können, ist das weder eine saubere noch gar „wissenschaftliche”, sondern viel eher ψ-wissenschaftliche Herangehensweise.
Zur normalen BedingtFormatierung, → Regular Conditional Formatting, habe ich mit den bereits in Xl/VBA vorhandenen Mitteln 2 Methoden (es sind auch noch mehr vorstellbar) der Erweiterung desselben entwickelt, die ich in der einfacheren Variante Dynamized u.der etwas kompakt-komplexeren Expanded Conditional Formatting nenne. Auf Letzteres bezieht sich das nflgd Bsp. Auf der Basis des Regular Formatting (nämlich direkt des Range-Objekts) bewegen sich demggüber die CFPlus-analogen Angebote auf WebSites u.in Foren, die man wg ihrer VBA-Steuerung auch als Regular Formatting on Conditions bezeichnen kann. Wenn man diese Methode nicht auf die Zelle, sondern ein sie überlagerndes und mit ihr verlinktes Objekt anwendet, erhält man einen Eindruck davon wie das ConditionalFormat-Objekt (CFO) in bezug auf die Zelle fktionieren mag. Deshalb ist das unter der Bezeichnung Extended Formatting on Conditions ebenfalls in der Abb. enthalten…
Userbild
Mit einer EventProc wdn (wie bei den anderen Lösungen auch) die Farbinfos des CFO (nicht des Range-Objekts!) je nach Bedarf ausgetauscht. Wird die HptBedingg in Gänze nicht erfüllt, wird das BedingtFmt auch nicht wirksam. Die eigentl Zellfarbe selbst wird von dem allen nicht berührt — nur die, die zu sehen ist. Wie das im Einzelnen fktioniert, sollten Profis weitgehend schon den Fmln entnehmen können.
Zu den hier in Form von zellfmltauglichen udFktt angewendeten Tools bleibt noch zu sagen, dass sie ein nicht in sich geschlossenes System bilden, sondern Teil eines ganzen Fktssystems sind, das viele Tsd Zeilen Code und Erläuterungstext umfasst, hier also schon deshalb nicht angeboten wdn kann. Außerdem ist bei dem immensen Arbeits- und Innovationsaufwand, der darin steckt, sicher verständlich, dass das dann auch nicht kostenlos wäre.
Gruß Luc :-?
Anzeige
AW: wenn schriftfarbe rot dann zählen
02.11.2011 15:25:42
KlausF
Hallo Lars,
anbei mal eine Mappe aus meiner Sammlung (stammt nicht von mir).
Da kannst Du sehen, wie Farben aus der bedingten Formatierung gezählt werden können.
Gruß
Klaus
https://www.herber.de/bbs/user/77323.xls
Das ist ein Torso, aber nicht universell!
02.11.2011 16:09:54
Luc:-?
Der ursprgl Autor, Bernd, hat auch schon lange nichts mehr dazu geschrieben, obwohl er inzwischen sicher weiß wie's geht.
Luc :-?
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Schriftfarbe rot zählen in Excel


Schritt-für-Schritt-Anleitung

Um in Excel die Schriftfarbe rot zu zählen, musst Du eine benutzerdefinierte Funktion (UDF) in VBA erstellen. Folge diesen Schritten:

  1. Öffne den VBA-Editor: Drücke ALT + F11 in Excel.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (deineDatei.xlsx)" > Einfügen > Modul.

  3. Füge den folgenden Code ein:

    Public Function FarbeZaehlen(Bereich As Range, Farbe As Long) As Long
        Dim Zelle As Range
        Dim tmpVariable As Long
        tmpVariable = 0
    
        For Each Zelle In Bereich
            If Zelle.Font.Color = Farbe Then
                tmpVariable = tmpVariable + 1
            End If
        Next Zelle
    
        FarbeZaehlen = tmpVariable
    End Function
  4. Schließe den VBA-Editor und kehre zu Excel zurück.

  5. Verwende die Funktion in einer Zelle: =FarbeZaehlen(A1:A10, RGB(255, 0, 0)), um die Anzahl der roten Schriftfarben im Bereich A1:A10 zu zählen.


Häufige Fehler und Lösungen

  • Fehlermeldung "#Name?": Stelle sicher, dass der Funktionsname in der VBA korrekt geschrieben ist. Prüfe auch, ob Du den Code im richtigen Modul eingefügt hast.
  • Funktion erkennt keine Farben: Wenn die Schriftfarbe durch bedingte Formatierung erstellt wurde, kann diese Methode möglicherweise nicht funktionieren. In diesem Fall benötigst Du eine andere Herangehensweise.

Alternative Methoden

  1. Verwenden von bedingter Formatierung: Du kannst die bedingte Formatierung so einstellen, dass sie eine Zelle rot färbt, und dann diese Zelle mithilfe einer Formel zählen.
  2. Zählen mit Hilfe von Zellenformatierungen: Statt die Schriftfarbe zu zählen, kannst Du die Zellenfarbe zählen, wenn die Zellen direkt gefärbt sind.

Praktische Beispiele

  • Zählen von roten Schriftfarben: Verwende die Funktion =FarbeZaehlen(B1:B20, RGB(255, 0, 0)).
  • Summieren von Werten basierend auf Schriftfarbe: Du könntest auch eine Funktion erstellen, die Werte summiert, wenn die Schriftfarbe rot ist. Beispiel: =SUMMEWENN(A1:A10, "rot", B1:B10).

Tipps für Profis

  • Nutze die Public-Deklaration in VBA, damit Deine Funktion in allen Arbeitsblättern verfügbar ist.
  • Achte darauf, dass Du die RGB-Werte für die Farben genau angibst, um Fehler zu vermeiden.
  • Wenn Du mit bedingter Formatierung arbeitest, solltest Du die Regeln gut dokumentieren, um die Übersicht zu behalten.

FAQ: Häufige Fragen

1. Kann ich auch andere Schriftfarben zählen? Ja, Du kannst die Funktion anpassen, indem Du die RGB-Werte für die gewünschten Farben änderst.

2. Funktioniert das in jeder Excel-Version? Die VBA-Funktion sollte in Excel-Versionen ab 2007 funktionieren, da sie die grundlegenden Features von VBA nutzen.

3. Was tun, wenn die Zelle direkt gefärbt, aber nicht die Schriftfarbe rot ist? In diesem Fall müsstest Du die Zellenfarbe anstelle der Schriftfarbe zählen. Dies erfordert eine andere Funktion.

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