Anzeige
Archiv - Navigation
1252to1256
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

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

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

308 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige