Zähle Zellen mit bedingter formatierung
Verfasst: Sa, 04.01.2014 22:11
Hallo zusammen,
ich habe eine Tabelle mit mehreren Zeilen. Sind bestimmte Daten enthalten, je nach zustand, werden diese Grau oder Schwarz dargestellt. DIeses geschiet durch die bedingte Formatierung.
Hier das Makro, was ich bis jetzt gefunden habe:
"B2:K2","B3:K3","B4:K4" -> Diesen Bereich wollte ich auf bestimmte Spalten ändern. -> "A5:A20","B5:B20","C5:C20"
oCell.Cellbackcolor = RGB (255, 0, 0) -> Dieses Funktioniert nur mit manueller Fomratierung.
- Was müsste geändert werden, damit es mit der bedingten Formatierung zusammen arbeitet?
- Wie sieht es aus, wenn ich anstelle des Hintergrundes die Schriftfarbe nehmen möchte?
Hier ist die Ausgabe der Werte für Rot und Blau nebeneinander und für die unterschiedlichen Bereiche unter eiander.
Wie müsste es aussehen, wenn ich Rot und Blau untereinander und die unterschiedlichen Bereicheneben eiander haben möchte?
Ich habe mal an den Werten für die 'Ausgabe rum gebastelt.
Dadurch habe ich erreicht, dass die Blau und Rot unter einander dargestellt werden. Leider wurden die Anderen Bereiche nicht ,mehr dargestellt.
Im Netz habe ich zu meinen Problemen verständlichen Lösungsansatz gefunden.
ich habe eine Tabelle mit mehreren Zeilen. Sind bestimmte Daten enthalten, je nach zustand, werden diese Grau oder Schwarz dargestellt. DIeses geschiet durch die bedingte Formatierung.
Hier das Makro, was ich bis jetzt gefunden habe:
Code: Alles auswählen
REM ***** BASIC *****
Sub Farben_zaehlen
oCalc = thisComponent
oSheet = oCalc.sheets(0) 'erstes Tabellenblatt
z = Array("B2:K2","B3:K3","B4:K4") 'Bereiche die geprüft werden
'Anfang der Ausgabe. Achtung: Der Index fängt bei Null an zu zählen!
rot = 11 'in Zelle (C)12
blau = 11 'in Zelle (D)12
For i = LBound(z()) To UBound(z())
oBereich=oSheet.getCellRangeByName(z(i))
x = 0
y = 0
'auslesen der Eckpunkte
iErsteSpalte = oBereich.rangeAddress.startColumn
iErsteZeile = oBereich.rangeAddress.startRow
iLetzteSpalte = oBereich.rangeAddress.EndColumn
iLetzteZeile = oBereich.rangeAddress.EndRow
For l = 0 to iLetzteZeile-iErsteZeile
For m = 0 to iLetzteSpalte-iErsteSpalte
oCell=oBereich.getCellByPosition(m,l)
if oCell.Cellbackcolor = RGB (255, 0, 0) then ' Farbe rot
x = x + 1
end if
if oCell.Cellbackcolor = RGB (0, 0, 255) then ' Farbe blau
y = y + 1
end if
mycellRot = oSheet.getCellByPosition( 2, rot) 'Ausgabe in C12 bis C14
mycellRot.value= x
mycellBlau = oSheet.getCellByPosition( 3, blau)'Ausgabe in D12 bis D14
mycellBlau.value= y
next m
next l
rot = rot +1
blau = blau +1
Next i
End Sub
oCell.Cellbackcolor = RGB (255, 0, 0) -> Dieses Funktioniert nur mit manueller Fomratierung.
- Was müsste geändert werden, damit es mit der bedingten Formatierung zusammen arbeitet?
- Wie sieht es aus, wenn ich anstelle des Hintergrundes die Schriftfarbe nehmen möchte?
Hier ist die Ausgabe der Werte für Rot und Blau nebeneinander und für die unterschiedlichen Bereiche unter eiander.
Wie müsste es aussehen, wenn ich Rot und Blau untereinander und die unterschiedlichen Bereicheneben eiander haben möchte?
Ich habe mal an den Werten für die 'Ausgabe rum gebastelt.
Code: Alles auswählen
rot = 11 'in Zelle (C)12
blau = 11 'in Zelle (D)11
...
mycellRot = oSheet.getCellByPosition( 2, rot) 'Ausgabe in C12 bis C14
...
mycellBlau = oSheet.getCellByPosition( 3, blau)'Ausgabe in D12 bis D14
...
Im Netz habe ich zu meinen Problemen verständlichen Lösungsansatz gefunden.