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

Forumthread: Zählen von Zellen mit grauem Hintergrund?

Zählen von Zellen mit grauem Hintergrund?
Zellen
Hallo,
gibt es eine Funktion, um die Anzahl der Zellen in einen Bereich zu bestimmen, die bspw. einen grauen Hintergrund besitzen?
Rolf
Anzeige

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

Betreff
Benutzer
Anzeige
AW: Zählen von Zellen mit grauem Hintergrund?
05.03.2012 21:57:19
Zellen

Hallo Rolf,
da gibt es viele Möglichkeiten, hier eine davon. Achtung! Änderung der Hintergrundfarbe stößt KEINE Neuberechnung an!
Tabelle3

 ABCDEF
11  Summe14 
22  Summe17 
35  Summe10 
44     
59     
68     
73     
89     
9      

Formeln der Tabelle
ZelleFormel
E1=SUMMENPRODUKT((cellcolor($A$1:$A$8;D1))*$A$1:$A$8)
E2=SUMMENPRODUKT((cellcolor($A$1:$A$8;D2))*$A$1:$A$8)
E3=SUMMENPRODUKT((cellcolor($A$1:$A$8;D3))*$A$1:$A$8)


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Und diese Funktion in ein allgmeines Modul
Public Function CellColor(Target As Range, RefColor As Variant, Optional FontColor As Boolean = False) As Variant
  Dim rng As Range
  Dim vntRet As Variant
  Dim lngColor As Long
  
  Application.Volatile
  
  If TypeName(RefColor) = "Range" Then
    If Not FontColor Then
      lngColor = RefColor.Interior.Color
    Else
      lngColor = RefColor.Font.Color
    End If
  Else
    lngColor = RefColor
  End If
  Redim vntRet(1 To Target.Rows.Count, 1 To Target.Columns.Count)
  
  For Each rng In Target.Cells
    If Not FontColor Then
      vntRet(rng.Row, rng.Column) = rng.Interior.Color = lngColor
    Else
      vntRet(rng.Row, rng.Column) = rng.Font.Color = lngColor
    End If
  Next
  
  CellColor = vntRet
End Function



« Gruß Sepp »

Anzeige
AW: Zählen von Zellen mit grauem Hintergrund?
05.03.2012 22:12:42
Zellen
Hallo Sepp,
das habe ich mir gedacht - der Weg geht über VBA.
Das wollte ich vermeiden. Trotzdem danke.
Rolf
Mit Xl/VBAgut sollte man das 1.wissen, 2.selbst...
06.03.2012 03:02:21
Luc:-?
…können oder 3. in Web oder Archiv finden, Rolf… :->
Gruß Luc :-?
Nachfrage ...
06.03.2012 11:07:41
Jean
Hallo Sepp,
Deine Lösung funktioniert prima.
Aber was habe ich zu ändern, wenn die Werte nicht in A1 beginnen, sondern erst in A6?
Gruß
Jean
Anzeige
AW: Nachfrage ...
06.03.2012 15:50:20
Josef

Hallo Jean,
meine gestern gepostete Funktion ist Quatsch, ich war der Meinung, dass ich letzte Nacht noch eine Korrektur gepostet habe, allerdings habe ich das wohl nur geträumt;-)))
Hier zwei bessere Versionen.
Tabelle1

 ABCDEFG
11  Summe4848 
22  Summe5656 
33  Summe4242 
44  Summe6464 
55      
66      
77      
88      
99      
1010      
1111      
1212      
1313      
1414      
1515      
1616      
1717      
1818      
1919      
2020      

Formeln der Tabelle
ZelleFormel
E1=SUMMENPRODUKT(cellcolor($A$1:$A$20;D1)*$A$1:$A$20)
F1=SUMMENPRODUKT((cellcolor2(D1)=cellcolor2($A$1:$A$20))*$A$1:$A$20)


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Code:
Public Function CellColor(Target As Range, RefColor As Variant, Optional FontColor As Boolean = False) As Variant
  Dim vntRet As Variant
  Dim lngColor As Long, lngRow As Long, lngCol As Long
  
  Application.Volatile
  
  If TypeName(RefColor) = "Range" Then
    If Not FontColor Then
      lngColor = RefColor.Interior.Color
    Else
      lngColor = RefColor.Font.Color
    End If
  Else
    lngColor = RefColor
  End If
  
  Redim vntRet(1 To Target.Rows.Count, 1 To Target.Columns.Count)
  
  For lngRow = 1 To Target.Rows.Count
    For lngCol = 1 To Target.Columns.Count
      If Not FontColor Then
        vntRet(lngRow, lngCol) = Target(lngRow, lngCol).Interior.Color = lngColor
      Else
        vntRet(lngRow, lngCol) = Target(lngRow, lngCol).Font.Color = lngColor
      End If
    Next
  Next
  
  CellColor = vntRet
End Function


Public Function CellColor2(Target As Range, Optional FontColor As Boolean = False) As Variant
  Dim vntRet As Variant
  Dim lngColor As Long, lngRow As Long, lngCol As Long
  
  Application.Volatile
  
  
  Redim vntRet(1 To Target.Rows.Count, 1 To Target.Columns.Count)
  
  For lngRow = 1 To Target.Rows.Count
    For lngCol = 1 To Target.Columns.Count
      If Not FontColor Then
        vntRet(lngRow, lngCol) = Target(lngRow, lngCol).Interior.Color
      Else
        vntRet(lngRow, lngCol) = Target(lngRow, lngCol).Font.Color
      End If
    Next
  Next
  
  CellColor2 = vntRet
End Function



« Gruß Sepp »

Anzeige
Danke
06.03.2012 18:54:27
Jean
Hallo Sepp,
vielen Dank für die beiden veränderten Versionen.
Beide funktionieren prima.
Gruß
Jean
;

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