Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1232to1236
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

VBA Funktion erweitern

VBA Funktion erweitern
Judith
Hallo,
ich habe eine Funktion aus dem Internet kopiert, mit der man Farben zählen kann.
Dazu habe einen Namen vergeben, mit dem der Farbindex der Zelle ermittelt wird.
Die Funktion zählt, wie oft diese Farbe (hier F1) in einem definiertem Bereich (hier A1:A20) vorkommt. Die Funktion rufe ich in einer Zelle auf (=Farbsumme(A1:A20;F1)
  • 
    Function Farbsumme(Bereich As Range, Farbe As Integer)
    Dim Zelle As Object
    Application.Volatile
    For Each Zelle In Bereich
    If Zelle.Interior.ColorIndex = Farbe Then
    Farbsumme = Farbsumme + 1
    End If
    Next
    End Function
    


  • Kann mir jemand sagen, wie ich die Funktion erweitern muss um zusätzlich noch einen 2. Bereich prüfen zu können (beide Bedingungen müssen wahr sein)?
    Beispiel:
    In Bereich A1:A20 wird die Farbe geprüft =Farbsumme(A1:A20;F1)
    In einem 2. Bereich (z.B. B1:B20 soll noch geprüft werden, ob in der jeweils geprüften Zeile ein "x" steht)
    Summenprodukt hat bei mir nicht funktioniert =SUMMENPRODUKT(B1:B20="x")*(Farbsumme(A1:A20;F1)
    Mit ZählenWennS habe ich es auch nicht geschafft.
    Danke, für Eure Vorschläge!
    Viele Grüße

    4
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Benutzer
    Anzeige
    AW: VBA Funktion erweitern
    29.09.2011 16:41:17
    Markus
    Hallo Judith,
    Schau dir mal diese Beispielmappe an.
    Möglicherweise ist das ein Lösungsansatz.
    https://www.herber.de/bbs/user/76808.xls
    lg
    Markus
    Das würde ich nicht machen, ...
    29.09.2011 17:38:04
    Luc:-?
    …Judith,
    denn dadurch machst du aus einer im TabBlatt nahezu universell einsetzbaren Fkt eine ganz spezielle und damit unflexible. Der FmlWeg war schon richtiger, aber die udF für die Fml ungeeignet, denn sie heißt ja nicht umsonst Farbsumme! Was du brauchst, wäre eine udF, die die Zellfarbe jeder Zelle des Bereichs liefert, also ein Datenfeld. Das könntest du dann mit SUMMENPRODUKT zu einer Fml kombinieren. Leider verarbeitet die in benannten Fmln einsetzbare XLM-Fkt ZELLE.ZUORDNEN (mit Arg1=38; Arg2=Zelle) auch nur Einzelzellen, so dass du, wenn du nicht mit Hilfskonstrukten wie in Markus' Bsp arbeiten willst, eine neue udF benötigen würdest, die einen Farbvektor liefert, zB …
    
    Function ZFarbIndex(Bereich As Range)
    Dim Farbe() As Long, zix As Long, Zelle As Range
    On Error Resume Next
    ReDim Farbe(Bereich.Cells.Count - 1)
    For Each Zelle In Bereich
    With Zelle.Interior
    Farbe(zix) = IIf(.ColorIndex 
    Mit der Fml =SUMMENPRODUKT((ZFarbIndex(A1:A20)=F1)*(B1:B20="x")) kann dann das gewünschte Ergebnis ermittelt wdn.
    Anmerkung: Application.Volatile ist bei beiden udF überflüssig, da es ohnehin nicht auf Farbänderungen reagiert. Für alles andere reicht die Xl-Automatik aus. Wenn nur eine Zellfarbe geändert wird, zusätzl in die Zelle klicken, damit sich die Farbindex-Vektoren anpassen können.
    Gruß Luc :-?
    Anzeige
    AW: Das würde ich nicht machen, ...
    29.09.2011 19:31:38
    Judith
    Hallo,
    danke, für Eure Antworten! Und vor allem auch für die Erklärungen! So habe ich eine ganze Menge dazu gelernt.
    Ich werde das alles morgen mal testen und dann sehen, wie es weiter geht. So ganz wohl habe ich mich mit dem Zählen der Farben sowieso nicht gefühlt.
    Vielen Dank noch mal und noch einen schönen Abend!
    Judith
    AW: Das würde ich nicht machen, ...
    30.09.2011 05:31:39
    Judith
    Hallo Marcus, hall Luc,
    ich habs, zumindest einigermaßen, verstanden. Danke, für die tollen Ideen!
    Mit ein paar Anpassungen ist die Formel von Dir, Marcus, vollkomen ausreichend.
    Manchmal sieht man den Wald vor Bäumen nicht, das Excel-Leben muss nicht immer so kompliziert sein...
    Schönen Tag an die fleißigen Retter!
    Judith
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige