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

Forumthread: VBA farbige Zellen zählen

VBA farbige Zellen zählen
18.04.2013 10:36:34
HTT
Hallo
ich habe diesen Code zusammengegoogelt und angepasst.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Zähler_Hintergrund As Integer, Zähler_Schrift As Integer, _
Zelle_Hintergrund As Range, Zelle_Schrift As Range
'Hintergrundfarbe
For Each Zelle_Hintergrund In Range("E1:E193")
If Zelle_Hintergrund.Interior.ColorIndex = 4 Then
Zähler_Hintergrund = Zähler_Hintergrund + 1
End If
Next
Range("E195").Value = Zähler_Hintergrund
End Sub
Private Sub CommandButton1_Click()
Application.VBE.MainWindow.Visible = True
End Sub
Problem ist jetzt, das ich in Spalte G und I und K etc die gleiche Farbe extra zählen.
Kann man den Code anpassen, das ich jetzt nicht 50x den Code Stg-C -> Strg-V und den Bereich anpassen muß?
Bitte keine Lösung mit Funktion und F9 Aktualisierung.
Danke für Tips

Anzeige

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA farbige Zellen zählen
18.04.2013 10:42:35
JACKD
Hallo HT
Ich würde es über eine weitere Schleife "aussen herum" lösen.
also
für jede Spalte von A-Z
für jede Zelle in A1:A200
guggen und zählen
nächste Zelle
in letzte Zelle eintragen
nächste Spalte
Wenn du es Sportlich willst, kannst du es sicher auch über ein Array lösen .. =)
Grüße

Anzeige
der Form halber
18.04.2013 10:45:48
JACKD
sollte natürlich dein zähler genullt werden nachdem es eingetragen wurde
für jede Spalte von A-Z
für jede Zelle in A1:A200
guggen und zählen
nächste Zelle
in letzte Zelle eintragen
zähler_Hintergrund "leeren"
nächste Spalte

AW: VBA farbige Zellen zählen
18.04.2013 10:51:34
Rudi
Hallo,
so?
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Zaehler_Hintergrund() As Integer, Zaehler_Schrift As Integer, _
Zelle_Hintergrund As Range, Zelle_Schrift As Range
Dim rngZAEHLER As Range, iAreas As Integer
Set rngZAEHLER = Range("E1:E193 ,g1:g193,i1:i193")
ReDim Zaehler_Hintergrund(1 To rngZAEHLER.Areas.Count)
'Hintergrundfarbe
For iAreas = 1 To rngZAEHLER.Areas.Count
For Each Zelle_Hintergrund In rngZAEHLER.Areas(iAreas)
If Zelle_Hintergrund.Interior.ColorIndex = 4 Then
Zaehler_Hintergrund(iAreas) = Zaehler_Hintergrund(iAreas) + 1
End If
Next
Next
Range("E195").Resize(, rngZAEHLER.Areas.Count).Value = Zaehler_Hintergrund
End Sub

Gruß
Rudi

Anzeige
AW: VBA farbige Zellen zählen
18.04.2013 10:58:48
HTT
Hallo Rudi!
Super Danke, nur ich schaffs leider nicht selber, das die Ergebnisse in jeder 2.Spalte ausgegeben werden.
Momentan in E F G und richtig wäre E G I
Kanns leider nicht alleine bzw meine Versuche sind gescheitert...

AW: VBA farbige Zellen zählen
18.04.2013 11:09:17
Rudi
hallo,
besser so:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Zaehler_Hintergrund As Integer, Zelle_Hintergrund As Range
Dim rngZAEHLER As Range
Dim iColumn As Long
For iColumn = 5 To 13 Step 2
Set rngZAEHLER = Cells(1, iColumn).Resize(193)
Zaehler_Hintergrund = 0
For Each Zelle_Hintergrund In rngZAEHLER
If Zelle_Hintergrund.Interior.ColorIndex = 4 Then
Zaehler_Hintergrund = Zaehler_Hintergrund + 1
End If
Next
Cells(rngZAEHLER.Row + rngZAEHLER.Rows.Count + 1, iColumn) = Zaehler_Hintergrund
Next
End Sub

Gruß
Rudi

Anzeige
PERFEKT--DANKE!!!!! o.T.
18.04.2013 11:22:14
HTT
PERFEKT--DANKE!!!!!

AW: VBA farbige Zellen zählen
18.04.2013 14:13:13
HTT
Hallo Rudi,
kann man den Code so ändern, das er auf zwei Mappen unterschiedlich "rechnet"
Mappe 1 bis 193
Mappe 2 bis 238
Jetzt wird auf Mappe 2 auch in Zeile 193 der Wert angezeigt :-(
Sorry hatte ich vergessen zu erwähnen.
Danke

Anzeige
AW: VBA farbige Zellen zählen
18.04.2013 15:31:48
Klaus
Hallo HTT,
da der Code in "worksheet_SelectionChange" steht, hast du ihn doch eh mindestens einmal auf Blatt 1 und einmal auf Blatt 2?
Ändere in Blatt 2 doch einfach die 193 in eine 238 um.
Grüße,
Klaus M.vdT.

farbige Zellen zählen und das bei jedem Klick?
18.04.2013 10:54:32
Matthias
Hallo
Worksheet_SelectionChange

Ist Dir klar, das der Code bei jedem Klick in eine Zelle ausgelöst wird?
Gruß Matthias

Anzeige
AW: farbige Zellen zählen und das bei jedem Klick?
18.04.2013 10:59:24
HTT
Ja ist mir klar und auch nötig

ok ...
18.04.2013 11:08:03
Matthias
Hallo
Bitte nur als Anmerkung verstehen
Das heißt aber auch: Du selektierst eine Zelle, hast im Moment z.B. 3x Colorindex=4
Jetzt setzt Du in der Zelle auch Colorindex=4
Nun müsste aber das Ergebnis 4x Colorindex=4 sein! Es bleibt aber auf 3x bis Du die Zelle wechselst.
Gruß Matthias

Anzeige
Ich würde dafür ja 'ne UDF verwenden, ...
19.04.2013 00:36:00
Luc:-?
…HTT,
ggf volatil oder in Verbindung mit einer volatilen StandardFkt wie zB JETZT in einer ZellFml. Da gibt's schon einiges im w³ bzw Archiv. Die fktionieren (ebenso wie die hier vorgestellten Lösungen) nur unter der Voraussetzung, dass die Zellen direkt gefärbt wurden.
Gruß Luc :-?
Besser informiert mit NDS, diesmal sogar mit Xl-Bezug!
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VBA für das Zählen von farbigen Zellen in Excel


Schritt-für-Schritt-Anleitung

Um in Excel farbige Zellen zu zählen, kannst Du den folgenden VBA-Code verwenden. Dieser Code zählt die Zellen mit einer bestimmten Hintergrundfarbe (z.B. ColorIndex = 4) in einem definierten Bereich und gibt das Ergebnis in einer Zelle aus.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.

  3. Füge den folgenden Code in das Modul ein:

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        Dim Zaehler_Hintergrund As Integer, Zelle_Hintergrund As Range
        Dim rngZAEHLER As Range
        Dim iColumn As Long
        For iColumn = 5 To 13 Step 2
            Set rngZAEHLER = Cells(1, iColumn).Resize(193)
            Zaehler_Hintergrund = 0
            For Each Zelle_Hintergrund In rngZAEHLER
                If Zelle_Hintergrund.Interior.ColorIndex = 4 Then
                    Zaehler_Hintergrund = Zaehler_Hintergrund + 1
                End If
            Next
            Cells(rngZAEHLER.Row + rngZAEHLER.Rows.Count + 1, iColumn) = Zaehler_Hintergrund
        Next
    End Sub
  4. Schließe den VBA-Editor und teste den Code, indem Du in die Zellen klickst.


Häufige Fehler und Lösungen

  • Fehler: Der Zähler wird nicht aktualisiert.

    • Lösung: Stelle sicher, dass der Code im Worksheet_SelectionChange-Ereignis steht, damit er bei jeder Zellenauswahl aktiviert wird.
  • Fehler: Ergebnisse erscheinen in den falschen Zellen.

    • Lösung: Überprüfe den angegebenen Bereich im Code und passe die Zeilen- und Spaltenindizes an.

Alternative Methoden

Anstelle von VBA kannst Du auch eine UDF (benutzerdefinierte Funktion) verwenden, um in Excel eingefärbte Zellen zu zählen. Diese Methode erfordert jedoch die Verwendung einer Funktion in einer Zelle, die möglicherweise eine manuelle Aktualisierung benötigt.

Beispiel für eine UDF:

Function CountColoredCells(rng As Range, color As Range) As Long
    Dim cell As Range
    Dim count As Long
    count = 0

    For Each cell In rng
        If cell.Interior.Color = color.Interior.Color Then
            count = count + 1
        End If
    Next cell

    CountColoredCells = count
End Function

Praktische Beispiele

Hier ist ein Beispiel, wie Du den Zähler anpassen kannst, um mehrere Bereiche zu berücksichtigen:

Set rngZAEHLER = Range("E1:E193, G1:G193, I1:I193")

Diese Zeile erweitert die Zählung auf die Spalten G und I, sodass Du die Excel farbige Zellen zählen kannst, ohne den Code mehrfach zu kopieren.


Tipps für Profis

  • Verwende Application.ScreenUpdating = False, um die Leistung zu verbessern, wenn Du große Datenmengen verarbeitest.
  • Nutze Debug.Print im Code, um Zwischenergebnisse zu überprüfen, ohne Excel-Fenster zu stören.
  • Experimentiere mit verschiedenen ColorIndex-Werten, um andere Farben zu zählen.

FAQ: Häufige Fragen

1. Wie kann ich den Code auf mehrere Arbeitsblätter anwenden? Du musst den Code in jedes Arbeitsblatt einfügen, auf dem Du die Zählung durchführen möchtest, und die Bereichsangaben entsprechend anpassen.

2. Funktioniert dieser Code in Excel 2016 und anderen Versionen? Ja, der Code ist mit Excel 2010, 2013, 2016 und neueren Versionen kompatibel, solange VBA aktiviert ist.

3. Kann ich den Code so anpassen, dass er auch die Schriftfarbe zählt? Ja, Du kannst eine ähnliche Schleife für die Schriftfarbe hinzufügen, indem Du Zelle_Schrift.Font.Color anstelle von Interior.ColorIndex verwendest.

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