Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Hintergrundfarben zählen, Anpassung gesucht

Hintergrundfarben zählen, Anpassung gesucht
16.04.2009 22:39:44
Fenja
Hallo für ein zweites mal heute.
Ich habe in Zeile D3 bis AK3 mehrere Zellen, die eine grüne (leuchtend grün) Hintergrundfarbe haben.
Diese (grünen Farbindex müsste "4" sein) möchte in Zelle AO3 Zählen lassen.
Folgendes habe ich im recherchiert kann es aber nicht selber anpassen.
in AO3 =CountColor(3;D3:AK3)
(muss auch ein Fehler drin sein, habs schon angepasst aber eben falsch)
Option Explicit

Function CountColor(Farbe As Range, ParamArray rngArea()) As Double
Dim rngCell As Range
Dim varArea As Variant
Dim intColor As Integer
intColor = Farbe(4).Interior.ColorIndex
Application.Volatile
For Each varArea In rngArea
For Each rngCell In varArea
If rngCell.Interior.ColorIndex = intColor Then
CountColor = CountColor + 1
End If
Next
Next
End Function


Danke für eure vorzügliche Hilfe
Fenja

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Hintergrundfarben zählen, Anpassung gesucht
16.04.2009 22:56:01
Daniel
Hi
damit das Makro nach deinen Vorgaben funktioniert (erster Parameter ist die Index-Zahl der Farbe), musst du es so anpassen:

Function CountColor(Farbe As Integer, ParamArray rngArea()) As Double
Dim rngCell As Range
Dim varArea As Variant
Application.Volatile
For Each varArea In rngArea
For Each rngCell In varArea
If rngCell.Interior.ColorIndex = Farbe Then
CountColor = CountColor + 1
End If
Next
Next
End Function


eine andere Alternative wäre, daß der erste Parameter ein Zellbezug ist, und alle Zellen gezählt werden, die die gleiche Farbe haben wie die Zelle aus dem ersten Parameter. Das würde dann so aussehen:


Function CountColor(rngFarbe As Range, ParamArray rngArea()) As Double
Dim rngCell As Range
Dim varArea As Variant
Dim intFarbe As Integer
Application.Volatile
intFarbe = rngFarbe(1).Interior.ColorIndex
For Each varArea In rngArea
For Each rngCell In varArea
If rngCell.Interior.ColorIndex = intFarbe Then
CountColor = CountColor + 1
End If
Next
Next
End Function


aber wie gesagt, für die 2. Variante ist der erste Parameter ein Zellbezug.
Gruß, Daniel

Anzeige
Anders gelöst. Danke!
16.04.2009 23:14:53
Fenja
Habs anders gelöst, ohne VBA, ist mir doch ne Nummer zu aufwendig.
Trotzdem Danke
AW: Ist auch besser so, Farbenzählen ist Quatsch.
16.04.2009 23:17:19
Daniel
;

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