Anzeige
Archiv - Navigation
956to960
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
956to960
956to960
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Summenbildung nach textfarbe

Summenbildung nach textfarbe
05.03.2008 22:44:21
dorn
ich habe mal ne frage zu einer funktion, die es wahrscheinlich so nicht gibt.
=summewenn(Bereich;Suchkriterium) (beipiel zum verständis)
der Bereich sind ca. 96 zeilen in einer spalte, das suchkriterium soll jedoch abhängig von der textfarbe der einzelnen zellen in deisem bereich sein.
ziel soll sein aus einem bereich die summe zu bilden, wo die textfarbe der zelle nur blaue (colorindex=5) und/ oder nur grüne (colorindex=4) ist.
weitere zielstellung: ändert man in dem bereich die textfarbe einer zelle in grün, so soll die summe automatisch sich anpassen ohne das man ein button anklickt ergo ein markro manuell ausführen muss, auch ein makro beim verlassen der zelle ist nicht sinvoll.
kompatibel sollte es ab version 2000 bis 2007 sein.
vielen dank im voraus für lösungen oder denkanstöße
p.s. alternativ käme mir auch der gedanke eine eigene formel zu hinterlegen. anstatt =summe(bereich) mal =eigenesumme(bereich). nur wie und ob dies möglich ist, habe ich zu wenig erfahrung.
mod

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Summenbildung nach textfarbe
05.03.2008 22:57:34
Jens
Hi,
schon mal in die Recherche geschaut? Stichwort: Farbsumme
mfg Jens

AW: Summenbildung nach textfarbe
05.03.2008 23:39:00
Daniel

weitere zielstellung: ändert man in dem bereich die textfarbe einer zelle in grün, so soll die summe automatisch sich anpassen ohne das man ein button anklickt ergo ein markro manuell ausführen muss, auch ein makro beim verlassen der zelle ist nicht sinvoll.


dieses Ziel wirst du wahrscheinlich nicht erreichen (zumindest nicht mit einfachen VBA-Bordmitteln).
das Ändern einer Farbe löst in Excel kein Event aus, daß eine Neuberechnung anstossen könnte.
Gruß, Daniel

Anzeige
AW: Summenbildung nach textfarbe
06.03.2008 07:04:00
haw
Hallo,
ein Beispiel aus der Recherche:

Function SumFarbe(Rng As Range, intColor As Integer) As Double
Dim rngAktuell As Range
Dim dblAddition#
Application.Volatile
For Each rngAktuell In Rng.Cells
If IsNumeric(rngAktuell) Then
If rngAktuell.Font.ColorIndex = intColor Then
dblAddition = dblAddition + rngAktuell.Value
End If
End If
Next rngAktuell
SumFarbe = dblAddition
End Function


Gruß
Heinz

AW: Summenbildung nach textfarbe
06.03.2008 09:18:18
Dorn
Vielen Dank für die Hinweise.
Ein ähnliches Script wie Daniel habe ich nun auch erstellet. (nach mühsamer Studierung von meinen VBA und Excel Büchern.)
Das Script von Daniel ist allerdings ein Tick ausgereifter.

Public Function SumFarbe(Rng As Range, intColor As Integer) As Double
Dim rngAktuell As Range
Dim dblAddition#
Application.Volatile
For Each rngAktuell In Rng.Cells
If IsNumeric(rngAktuell) Then
If rngAktuell.Font.ColorIndex = intColor Then
dblAddition = dblAddition + rngAktuell.Value
End If
End If
Next rngAktuell
SumFarbe = dblAddition
End Function


Nun noch eine kleine Frage zur Funktion:
Ich schreibe über ein Makro die Formel in ein Celle, damit die Celle automatisch rechnen kann:
Worksheets(arbeitsblatt).Cells(rszeile, rsspalte + x).Formula = "=SumFarbe(R[-3]C[0]:R[-" & rswerte + 2 & "]C[0];5)"
Das Problem ist das ein Fehler ausgelösst wird, da das ";" in der Formel stört. Gibt es da Lösungsanätze?
Ich kann zwar für jede Formel eine eigene Function schreiben wie für blau:


Public Function SumFarbe(Rng As Range) As Single
Dim rngAktuell As Range
Dim dblAddition#
Application.Volatile
For Each rngAktuell In Rng.Cells
If IsNumeric(rngAktuell) Then
If rngAktuell.Font.ColorIndex = 5 Then
dblAddition = dblAddition + rngAktuell.Value
End If
End If
Next rngAktuell
SumFarbe = dblAddition
End Function


Und die Schreiberrei übers Makro in die Celle funktioniert dann auch:
Worksheets(arbeitsblatt).Cells(rszeile, rsspalte + x).Formula = "=SumFarbe(R[-3]C[0]:R[-" & rswerte + 2 & "]C[0])"
Aber wie gesagt wenn es nach mir gehen soll, würde ich gerne eine globale Funktion, wie die van Daniel, die ja auch funktioniert, solange man direkt in der Tabelle damit arbeitet.
z.B. =SumFarbe(C3:C98;5)
Vielen Dank

Anzeige
AW: Summenbildung nach textfarbe
06.03.2008 09:34:00
haw
Hallo,
hier im VBE musst du auch statt dem Semikolon ein Komma verwenden.
Ich habe den Macrorecorder angeworfen und der hat das ausgespuckt:
ActiveCell.FormulaR1C1 = "=sumfarbe(RC[-3]:R[11]C[-3],5)"
Gruß
Heinz

AW: Summenbildung nach textfarbe
06.03.2008 14:08:20
Dorn
Vielen Dank für Eure Hilfe!!

AW: Summenbildung nach textfarbe
06.03.2008 09:52:00
Renee
Hi Dorn,
Hier noch ein 3ter Vorschlag, bei dem Du als 2ter Parameter auf eine Zelle referenzieren kannst die das zu summierende Format hat. Z.b. auf eine Zelle die eine Legende enthält, die gleich formatiert ist (in Farbe oder Hintergrund) wie die zu summierenden. Hat den Vorteil, dass der Benutzer die Colorindex Zahlen nicht kenne muss. Der 3te Parameter summiert, wenn nichts oder FALSCH angegeben wird nach der Formatierung der Schriftfarbe, wenn WAHR angegeben wird, nach der Formatierung des Zellenhintergrunds.

Public Function SummeFarbe(Summenbereich As Range, _
ZelleMitderFarbe As Range, _
Optional bFillColor As Boolean = False) As Double
Application.Volatile
Dim rC As Range
For Each rC In Summenbereich
If bFillColor Then
If rC.Interior.ColorIndex = ZelleMitderFarbe.Cells(1, 1).Interior.ColorIndex Then _
SummeFarbe = SummeFarbe + rC.Value
Else
If rC.Font.ColorIndex = ZelleMitderFarbe.Cells(1, 1).Font.ColorIndex Then _
SummeFarbe = SummeFarbe + rC.Value
End If
Next
End Function


Zu Frage wie du eine Formel in eine Zelle schreiben kannst. Da es sich um eine lokale Function handelt, kannst du per VBA nicht in die .Formula schreiben, sondern du musst .FormulaLocal benutzen.
GreetZ Renée

Anzeige

65 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige