2008-09-08 11 views

Antwort

8

Excel hat keine Möglichkeit, dieses Attribut mit seinen integrierten Funktionen zu sammeln. Wenn Sie bereit sind, einige VB zu verwenden, alle Ihre farbbezogenen Fragen werden hier beantwortet:

http://www.cpearson.com/excel/colors.aspx

Beispiel die Seite bilden:

Die SumColor Funktion ist eine farbbasierte Analog sowohl der SUM- als auch der SUMMIF Funktion. Sie können separate Bereiche für den Bereich angeben, deren Farbindizes untersucht werden sollen, und den Bereich der Zellen, deren Werte auf summiert werden. Wenn diese beiden Bereiche sind, summiert die Funktion die Zellen , deren Farbe mit dem angegebenen Wert übereinstimmt. Die folgende Formel fasst beispielsweise die Werte in B11: B17 zusammen, deren Füllfarbe rot ist.

=SUMCOLOR(B11:B17,B11:B17,3,FALSE)

5

Das Arbeitsblatt Formel, =CELL("color",D3) kehrt 1, wenn die Zelle mit Farbe für negative Werte formatiert ist (sonst gibt 0).

Sie können dies mit ein bisschen VBA lösen. Fügen Sie ihn in einem Codemodul VBA:

Function CellColor(xlRange As Excel.Range) 
    CellColor = xlRange.Cells(1, 1).Interior.ColorIndex 
End Function 

Dann =CellColor(D3) die Funktion verwenden, um die .ColorIndex von D3

+0

Ich kann nicht scheinen, dass dies funktioniert. Der Farbindex wird auf 55 angezeigt, wenn 6 Zellen mit der Farbe vorhanden sind. – FortunateDuke

+0

Entschuldigung, ich habe meine Erklärung nicht ganz vervollständigt. ColorIndex gibt einen Indexwert in der aktuellen Farbpalette an, daher benötigen Sie eine andere Arbeitsblattformel, um zu zählen, wie viele CellColor-Funktionen 55 zurückgeben. – Graham

+0

Hier finden Sie detaillierte Artikel mit Bildern zum Erstellen benutzerdefinierter Funktionen im VBA-Add-In: Zählen Sie die Anzahl der Zellen mit bestimmter Zellenfarbe mithilfe von VBA https://support.microsoft.com/kb/2815384 – Vadzim

3

ich das gerade erstellt, um anzuzeigen, und es sieht einfacher. Sie erhalten diese 2 Funktionen:

=GetColorIndex(E5) <- returns color number for the cell 

aus (Zelle)

=CountColorIndexInRange(C7:C24,14) <- returns count of cells C7:C24 with color 14 

aus (Bereich von Zellen, Farbnummer, die Sie zählen möchten)

Beispiel zeigt Prozent der Zellen mit Farbe 14

Erstellen Sie diese 2 VBA-Funktionen in einem Modul (drücken Sie Alt-F11)

öffnen + Ordner. Doppelklicken Sie auf Module1

Einfach diesen Text und fügen Sie ihn in, dann das Modul-Fenster schließen (es dann speichern müssen):

Function GetColorIndex(Cell As Range) 
    GetColorIndex = Cell.Interior.ColorIndex 
End Function 

Function CountColorIndexInRange(Rng As Range, TestColor As Long) 
    Dim cnt 
    Dim cl As Range 
    cnt = 0 

    For Each cl In Rng 
    If GetColorIndex(cl) = TestColor Then 
     Rem Debug.Print ">" & TestColor & "<" 
     cnt = cnt + 1 
    End If 
    Next 

    CountColorIndexInRange = cnt 

End Function 
2

ich brauchte, war absolut die gleiche Aufgabe zu lösen. Ich habe die Tabelle visuell mit verschiedenen Hintergrundfarben für verschiedene Teile geteilt.Im Internet googeln Ich habe diese Seite https://support.microsoft.com/kb/2815384 gefunden. Leider löst es das Problem nicht, da ColorIndex sich auf einen nicht vorhersagbaren Wert bezieht. Wenn also einige Zellen Nuancen einer Farbe haben (z. B. unterschiedliche Helligkeitswerte der Farbe), zählt die vorgeschlagene Funktion sie. Die folgende Lösung ist mein Fix:

Function CountBgColor(range As range, criteria As range) As Long 
    Dim cell As range 
    Dim color As Long 
    color = criteria.Interior.color 
    For Each cell In range 
     If cell.Interior.color = color Then 
      CountBgColor = CountBgColor + 1 
     End If 
    Next cell 
End Function 
0

Ja VBA ist der Weg zu gehen.

Wenn Sie jedoch keine Zelle mit Formel benötigen, die die Anzahl der Zellen mit einer bestimmten Farbe automatisch zählt/aktualisiert, besteht die Alternative darin, die Funktion "Suchen und Ersetzen" zu verwenden und die Zelle zu formatieren um die passende Farbe zu haben.

Wenn Sie auf "Alle finden" klicken, wird die Gesamtzahl der Zellen angezeigt, die Sie unten links in der Dialogbox finden.

enter image description here

Dies wird besonders dann nützlich, wenn Sie Ihr Suchbereich massiv ist. Das VBA-Skript wird sehr langsam sein, aber die 'Suchen und Ersetzen'-Funktion wird immer noch sehr schnell sein.

Verwandte Themen