Wenn Hintergrund ist grün, dann ...

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: Wenn Hintergrund ist grün, dann ...

Beitrag von F3K Total »

Steffen73 hat geschrieben:Ist das so überhaupt realisierbar?
Calc kann von Haus aus nicht auf Basis der Zellhintergrundfarbe einen Zellinhalt berechnen. Das ginge nur per Makro, was du programmieren müsstest.
Umgekehrt, eine Hintergrundfarbe auf Basis eines Zellinhaltes, das geht->bedingte Formatierung.
Also, wenn A1 > 9 dann grün und B1 = A1, siehe Beispiel.
Gruß R
Dateianhänge
BSP.ods
(9.35 KiB) 195-mal heruntergeladen
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Wenn Hintergrund ist grün, dann ...

Beitrag von Stephan »

Die Hintergrundfarbe kannst Du mit einer benutzerdefinierten Funktion auswerten, beispielsweise so:

Code: Alles auswählen

Function fvh(Zellname As String, r As Integer, g As Integer, b As Integer)
	bk = Thiscomponent.CurrentController.ActiveSheet.getCellRangeByName(Zellname).CellBackColor
	If Red(bk) = r AND Green(bk) = g AND Blue(bk) = b Then
			fvh = 1
		Else
			fvh = 0
	End If
End Function 

Gruß
Stephan
Hiker
******
Beiträge: 593
Registriert: Mo, 08.09.2014 21:34
Wohnort: Berlin

Re: Wenn Hintergrund ist grün, dann ...

Beitrag von Hiker »

Hallo,

in diesem Thread findest Du das Thema Farbe auch behandelt: viewtopic.php?t=2835
Lösung ist dasselbe, was Stephan schon vorgeschlagen hat. Und die Funktion kann man so benutzen, wie Du es wahrscheinlich schon kennst.

Ich habe vor einiger Zeit damit in einigen Tabellen, die Farbcdodierungen enthielten, die "Farbe" in eine neue Spalte codiert.
Zu den Problemen gehört:
Gelegentlich werden versehentlich ähnliche Farben verwendet und eine Nahebei-Farbraum-Abfrage habe ich noch nicht gesehen.
In Libre-Office werden Hintergrund-Farben, die direkt gestzt sind anders als bedingte Formatierungen behandelt - man erwischt also nicht alle.

Mein Fazit war daher: Versuche die Farbcodierung in eine Hilfsspalte zu konvertieren, die dann ausgeblendet als Grundlage einer bedingten
Formatierung dienen kann. Spätestens beim Versuch eine csv-Datei zu speichern ist die Farbinformation sonst weg und nicht rekonstruierbar.

MfG, Jörn
Libre Office 6.3.1 (Win 10 Pro) / Libre Office 6.0.7 (Win8.1 Pro, Win 7 Pro) / AOO (Win 7)
TrueColor
******
Beiträge: 547
Registriert: Do, 11.03.2010 11:23

Re: Wenn Hintergrund ist grün, dann ...

Beitrag von TrueColor »

@Steffen73
Der sinnvollere Weg könnte sein, die Tabelle so zu gestalten, dass ausschließlich Daten ausgewertet werden, keine Farben. Also müsstest du analysieren, welche Daten über die Farbe codiert werden und diese Daten dann anderweitig in deiner Tabelle darstellen. Farben nur zur Verbesserung der Visualisierung verwenden (also z.B. das, was man mit Bedingter Formatierung macht).

@Hiker
Eine Idee zur "Nahebei-Farbraum-Abfrage":
Ähnliche Farben haben doch nur geringe Unterschiede in ihren RGB-Anteilen. Also könnte man doch hergehen und den RGB-Bereich gröber rastern, Einzelwerte zusammenfassen. Bsp. aus RGB(256,256,256) machst RGB_redux(16,16,16), damit hast du nur noch 1/8 aller diskreten Werte. Formelmäßig könnte man das sinngemäß so umsetzen:

Code: Alles auswählen

Red_redux = Ganzzahl (Red / 8)
Green_redux = Ganzzahl (Green / 8)
Blue_redux = Ganzzahl (Blue / 8)
Hm... hoffentlich ist das halbwegs verständlich, was ich da geschrieben hab, ich bekomm's heute nicht auf die Reihe, das klarer auszudrücken.
System:
LibO 6 + LibO 7
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Wenn Hintergrund ist grün, dann ...

Beitrag von Stephan »

Löst deine Funktion dieses Problem?


ja

Code: Alles auswählen

...
    fvh = 1
  Else
    fvh = 0
...
Gruß
Stephan
Antworten