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

Forumthread: VBA Farben zählen

VBA Farben zählen
24.03.2016 19:42:34
Simone
Hallo zusammen,
kann man per VBA die Zellen der Farben zählen ?
Bereich der gezählten Zellen A1:H32
Und die gezählten Farbe sind in der Spalte J drin und die Anzahl soll in K erscheinen.
Sobald ich eine Farbe dazu machen ( A1:H32 ) möchte ich die Anzahl der Farben aktualisieren.
https://www.herber.de/bbs/user/104601.xlsm
Geht so was ?
Danke an alle
Simone

Anzeige

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Farben zählen
24.03.2016 19:49:28
Hajo_Zi
Hallo Simone,
Farbveränderungen lösen keoine Aktion aus.

AW: VBA Farben zählen
24.03.2016 19:52:06
Simone
das heißt?
kann man nicht die farbigen zellen zählen ?

AW: VBA Farben zählen
24.03.2016 19:55:20
Hajo_Zi
doch, man kann sie Zählen. Nur Farbveränderungen löst keine Aktion aus, wie schon geschrieben. Es sollte ja sofort passieren.
Gruß Hajo

Anzeige
AW: VBA Farben zählen
24.03.2016 19:58:31
ransi
Hallo Simone,
Versuch mal sowas:
Tabelle1

 ABCDEFGHIJK
1           
2           
3         FarbeAnzahl
4          5
5          6
6          2
7          2
8          5
9          1
10           
11           
12           
13           
14           
15           
16           
17           
18           
19           
20           
21           
22           
23           
24           
25           
26           
27           
28           
29           
30           
31           
32           

Formeln der Tabelle
ZelleFormel
K4=machs($A$1:$H$32;J4)


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Das ist der Code:
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Function machs(Bereich As Range, Farbzelle As Range)
    Dim Zelle As Range
    For Each Zelle In Bereich.Cells
        If Zelle.Interior.Color = Farbzelle.Interior.Color Then machs = machs + 1
    Next
End Function


ransi

Anzeige
AW: VBA Farben zählen
24.03.2016 20:11:36
Simone
Schön, aber leider keine akualisierung :-(
Trotzdem Danke

AW: VBA Farben zählen
24.03.2016 20:11:40
Simone
Schön, aber leider keine akualisierung :-(
Trotzdem Danke

AW: VBA Farben zählen
24.03.2016 20:11:43
Simone
Schön, aber leider keine akualisierung :-(
Trotzdem Danke

Anzeige
Aktualisierung ist nicht oW möglich, ...
24.03.2016 20:33:11
Luc:-?
…Simone,
da simple Formatierung kein (nutzbares) Ereignis auslöst. Da müsstest du schon den FormatPinsel „schwingen“! Wenn du als 1.PgmZeile (nach Dim) Application.Volatile einfügst, kannst du aber mit [F9] bzw Klick in beliebige Zelle (und Edit-Beenden) eine Aktualisierung auslösen.
Gruß, Luc :-?

Anzeige
AW: VBA Farben zählen
24.03.2016 20:10:37
Simone
Hallo Mathias,
Kannst du mir den Code erklären?
rivate Sub CommandButton1_Click() Dim x&, rng As Range, Zaehler& For x = 4 To 14 ' warum 4 To 14 Zaehler = 0 'Warum 0 For Each rng In Range("Bereich") 'Namensmanager ? If rng.Interior.ColorIndex = Cells(x, "J").Interior.ColorIndex Then Zaehler = Zaehler + 1 If Cells(x, "J").Interior.ColorIndex -4142 Thein 'warum -4142 Cells(x, "K") = Zaehler End If End If Next Next End Sub Danke

Anzeige
Erklärung ...
25.03.2016 12:12:00
Matthias
Hallo Simone
Klar erkläre ich Dir den Code.
warum 4 To 14
weil Du die Farben zählen willst von Zeile 4 bis 14
Tabelle1

 JK
3FarbeAnzahl
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8
Ich hatte dabei den gerahmten Bereich gewählt und hätte dann 4 bis 15 nehmen müssen.
In Deinem Bsp. reicht 4 bis 9
Zaehler = 0 'Warum 0
Weil wir die Schleife mehrmals starten.
'warum -4142
weil dann keine Farbe als Hintergrund gesetzt ist.
Gruß Matthias

Anzeige
Info: Geht auch mit Fml unter Einbeziehung ...
24.03.2016 20:26:55
Luc:-?
…geeigneter UDFs, Matti,
bspw (in Vorgriff auf eine Neuentwicklung) so:
K4[:K9]:=SUMMENPRODUKT(--IsDColor(TxEval("CellColor("&RAddress(J4)&")");Bereich;1))
Gruß, Luc :-?
Besser informiert mit …

Anzeige
zeig sie mir bitte, wenn sie fertig ist :-)
25.03.2016 12:14:36
Matthias
Frohe Ostern ...
Gruß Matthias

Klar, ...
25.03.2016 14:06:25
Luc:-?
…Matti,
denn das hatte ich hier schon angekündigt, kann aber auch noch länger (bis ggf ca 2 Wochen) dauern…
Gruß & dito FrOst, Luc :-?
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Farbige Zellen mit VBA zählen in Excel


Schritt-für-Schritt-Anleitung

Um die farbigen Zellen in Excel zu zählen, kannst Du VBA (Visual Basic for Applications) verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

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

  2. Füge ein neues Modul hinzu:

    • Klicke mit der rechten Maustaste im Projektfenster auf „VBAProject (DeinDateiname)“.
    • Wähle „Einfügen“ > „Modul“.
  3. Kopiere den folgenden Code in das Modul:

    Function machs(Bereich As Range, Farbzelle As Range) As Long
        Dim Zelle As Range
        For Each Zelle In Bereich.Cells
            If Zelle.Interior.Color = Farbzelle.Interior.Color Then
                machs = machs + 1
            End If
        Next
    End Function
  4. Verwende die Funktion in Deinem Arbeitsblatt. Zum Beispiel, wenn Du die Anzahl der gelben Zellen in A1:H32 zählen möchtest und die Farbe in J1 festgelegt hast, schreibe in K1:

    =machs(A1:H32, J1)
  5. Aktualisiere die Zählung, indem Du F9 drückst oder in eine beliebige Zelle klickst und die Eingabe beendest.


Häufige Fehler und Lösungen

  • Fehler: Funktion aktualisiert nicht

    • Lösung: Stelle sicher, dass die Funktion Application.Volatile in die Funktion eingefügt wird, um eine automatische Aktualisierung zu ermöglichen. Füge dies direkt nach Option Explicit ein.
  • Fehler: Zählt nicht korrekt

    • Lösung: Überprüfe, ob die Farbcodes der Zellen und der Referenzzelle übereinstimmen. Die Farbvergleiche basieren auf dem .Interior.Color-Wert.

Alternative Methoden

Wenn Du keine VBA verwenden möchtest, kannst Du die bedingte Formatierung in Excel nutzen oder eine Hilfsspalte erstellen, die eine Formel zur Zählung basierend auf einer bestimmten Bedingung verwendet.

  • Bedingte Formatierung: Du kannst Zellen je nach ihren Werten oder Formeln farblich markieren.

  • Hilfsspalte: Füge eine Spalte hinzu, die mit =WENN(A1="Farbe"; 1; 0) die Zellen zählt.


Praktische Beispiele

Hier ist ein praktisches Beispiel, wie Du die Funktion in einer Tabelle nutzen kannst:

  1. Bereich: A1:H32
  2. Farben: Definiere in Spalte J die Farben, die Du zählen möchtest.
  3. Anzahl: Verwende in Spalte K die Formel =machs($A$1:$H$32; J4) für die entsprechende Farbe.

Tipps für Profis

  • Experimentiere mit verschiedenen Farbkodierungen und -typen, um die besten Ergebnisse zu erzielen.
  • Nutze die Debug.Print-Funktion in VBA, um den Wert der Zählvariablen während der Ausführung zu überprüfen.
  • Wenn Du eine große Datenmenge hast, kann die Verwendung von Arrays anstelle von Zellen die Geschwindigkeit erhöhen.

FAQ: Häufige Fragen

1. Kann ich die Funktion auch auf andere Bereiche anwenden? Ja, Du kannst die Funktion machs auf jeden anderen Bereich anwenden, indem Du einfach die Zellreferenzen anpasst.

2. Was ist der Unterschied zwischen .Interior.Color und .Interior.ColorIndex? .Interior.Color gibt den RGB-Wert zurück, während .Interior.ColorIndex den Index der Farbe innerhalb einer Palette zurückgibt. Für genauere Vergleiche solltest Du .Interior.Color verwenden.

3. Funktioniert das auch in Excel Online oder nur in Desktop-Versionen? Die VBA-Funktionalität ist nur in Desktop-Versionen von Excel verfügbar. In Excel Online kannst Du keine VBA-Skripte ausführen.

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