Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
920to924
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
920to924
920to924
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Hintergrundfarbe und Text auswerten

Hintergrundfarbe und Text auswerten
05.11.2007 11:41:00
Burghard
Hallo,
habe noch ein Problem. Ich möchte in der Spalte "D" des aktiven Tabellenblatts die Zellen zählen, die
a) die Hintergrundfarbe Nr. 8 und den Buchstaben "B" haben
und
b) die Hintergrundfarbe Nr. 8 und den Buchstaben "E" haben
Es soll also zwei Ergebnisse geben.
Die Ausgabe der Ergebnisse soll für a) nach der letzten Zelle und einer Freizeile mit einem Wert in der Spalte D erfolgen.
Die Ausgabe der Ergebnisse soll für b) unter a) in der Spalte D erfolgen.
Ich habe ein Beispiel hochgeladen.
https://www.herber.de/bbs/user/47424.xls
Hilfe wäre nett. Schönen Dank im voraus.
Gruß
Burghard

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Hintergrundfarbe und Text auswerten
05.11.2007 12:02:00
HermannZ
Hallo Burghard;
eine Möglichkeit ist folgende Funktion in ein Modul der Tabelle kopieren;
'Funktion zum auslesen der Farbnummern bei farbigem Hintergrund(keine bedingte Formatierung)
'die Funktion kann in anderen funktionen verwendet werden z.B.SUMME,SUMMENPRODUKT,WENN usw.
'um berechnungen vorzunehmen die als Bedingung einen farbigen Hintergrund oder farbigen Text vorrausetzen.
'Die Funktion kann auch genutzt werden um den Farbindex einer Zelle auszulesen
'Aufruf der Funktion für farbigen Hintergrund =FARBINDEX(Bereich)
'Aufruf der Funktion für farbigen Text =FARBINDEX(Bereich;1)die Eins steht für WAHR
Function FarbIndex(rng As Range, Optional Text As Boolean = False) As Variant
Dim Cell As Range, row As Range
Dim i As Long, j As Long
Dim iWe As Long, iSw As Long
Dim aryFarbe As Variant
Application.Volatile
If rng.Areas.Count > 1 Then
FarbIndex = CVErr(xlErrValue)
Exit Function
End If
iWe = Weiss(rng.Worksheet.Parent)
iSw = Schwarz(rng.Worksheet.Parent)
If rng.Cells.Count = 1 Then
If Text Then
aryFarbe = FarbenIndex(rng, True, iSw)
Else
aryFarbe = FarbenIndex(rng, False, iWe)
End If
Else
aryFarbe = rng.Value
i = 0
For Each row In rng.Rows
i = i + 1
j = 0
For Each Cell In row.Cells
j = j + 1
If Text Then
aryFarbe(i, j) = FarbenIndex(Cell, True, iSw)
Else
aryFarbe(i, j) = FarbenIndex(Cell, False, iWe)
End If
Next Cell
Next row
End If
FarbIndex = aryFarbe
End Function


'Unterfunktion für Weiss

Private Function Weiss(oWB As Workbook) Dim i As Long Weiss = 0 For i = 1 To 56 If oWB.Colors(i) = &HFFFFFF Then Weiss = i Exit Function End If Next i End Function


'Unterfunktion für Schwarz


Private Function Schwarz(oWB As Workbook)
Dim i As Long
Schwarz = 0
For i = 1 To 56
If oWB.Colors(i) = &H0 Then
Schwarz = i
Exit Function
End If
Next i
End Function


'Unterfunktion ob Hintergrundfarbe oder Schriftfarbe


Private Function FarbenIndex(rng As Range, Text As Boolean, idx As Long)
Dim i As Long
If Text Then
i = rng.Font.ColorIndex
Else
i = rng.Interior.ColorIndex
End If
If i 


dann in Zelle D30 folgende Formel;
~f~
{=SUMME(--(FARBINDEX(D1:D28)=FARBINDEX(D2))*(D1:D28="B"))}
Matrix-Formel geschweifte Klammern nicht eingeben sondern die Formel mit Shift-Strg-Enter abschliessen.
Gruss HermannZ

Anzeige
AW: Hintergrundfarbe und Text auswerten
05.11.2007 21:35:42
Burghard
Hallo Hermann,
vielen Dank für Deine Hilfe und große Mühe.
Ich habe zwischenzeitlich etwas gefunden, was super klappt und einfach ist.
Schönen Gruß
Burghard
============================================
Lösung:

Public Function AnzahlB(Bereich As Object) As Double
Dim s As Double
Dim a As Object
Application.Volatile
s = 0
For Each a In Bereich
If a.Interior.ColorIndex = 8 And a.Value = "B" Then
s = s + 1
End If
Next
AnzahlB = s
End Function


==================


Public Function AnzahlE(Bereich As Object) As Double
Dim s As Double
Dim a As Object
Application.Volatile
s = 0
For Each a In Bereich
If a.Interior.ColorIndex = 8 And a.Value = "E" Then
s = s + 1
End If
Next
AnzahlE = s
End Function


=================
Unten in der Spalte D gebe ich dann in zwei Zellen als Funktion ein:
= AnzahlB(D1:D28)
= AnzahlE(D1:D28)

Anzeige
AW: Hintergrundfarbe und Text auswerten
05.11.2007 21:48:00
Josef
Hallo Burghard,
warum machst du die Funktion nicht universeller?
Public Function AnzahlX(Bereich As Range, Farbe As Variant, Text As Variant) As Double
Dim s As Double
Dim a As Range

Application.Volatile

For Each a In Bereich
    If a.Interior.ColorIndex = Farbe And a.Value = Text Then
        s = s + 1
    End If
Next

AnzahlX = s

End Function

Tabelle3

 ABCDE
1a8 a 
2b  b 
3c  a 
4   b 
5   a 
64  c 
72  b 
83  b 
9   c 
10   a 
11   c 
12   c 
13   a 
14   b 
15   a 
16   a 
17   c 
18   b 
19   a 
20     
21     

Formeln der Tabelle
ZelleFormel
A6=anzahlx($D$1:$D$19;$B$1;A1)
A7=anzahlx($D$1:$D$19;$B$1;A2)
A8=anzahlx($D$1:$D$19;$B$1;A3)
Excel Tabellen im Web darstellen  Excel Jeanie HTML
Gruß Sepp

Anzeige
AW: Hintergrundfarbe und Text auswerten
05.11.2007 12:03:00
Beverly
Hi Burghard,
das geht mit einer Hilfsspalte und einem Bereichsnamen.
Name definieren (z.B. Farbe) - Bezieht sich auf: =ZELLE.ZUORDNEN(63;INDIREKT("ZS(-1)";))
In Spalte E diese Formel: =Farbe und nach unten kopieren
In D30: =SUMMENPRODUKT((D1:D28="B")*(E1:E28=8))
In D31: =SUMMENPRODUKT((D1:D28="E")*(E1:E28=8))
________________________________________

AW: Hintergrundfarbe und Text auswerten
05.11.2007 21:36:00
Burghard
Hallo Karin,
vielen Dank für Deine Hilfe und große Mühe.
Ich habe zwischenzeitlich etwas gefunden, was super klappt und einfach ist.
Schönen Gruß
Burghard
============================================
Lösung:

Public Function AnzahlB(Bereich As Object) As Double
Dim s As Double
Dim a As Object
Application.Volatile
s = 0
For Each a In Bereich
If a.Interior.ColorIndex = 8 And a.Value = "B" Then
s = s + 1
End If
Next
AnzahlB = s
End Function


==================


Public Function AnzahlE(Bereich As Object) As Double
Dim s As Double
Dim a As Object
Application.Volatile
s = 0
For Each a In Bereich
If a.Interior.ColorIndex = 8 And a.Value = "E" Then
s = s + 1
End If
Next
AnzahlE = s
End Function


=================
Unten in der Spalte D gebe ich dann in zwei Zellen als Funktion ein:
= AnzahlB(D1:D28)
= AnzahlE(D1:D28)

Anzeige

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige