Wenn Dann Formel mit Hintergrundfarbe?

Bespiel Tabelle - (Formel, Microsoft Excel, kopieren)

2 Antworten

Ich verstehe die Frage so, dass du bereits durch irgendeine Berechnung oder Formatierung die Farbe einer Zelle (in einer Zeile) gewählt hast, und du nun in einer Funktion basierend auf der Farbe etwas machen willst.

Pseudocode:
Zelle C1 = WENN (L1.color == "red"; B1)
Zelle D1 = Wenn (L1.color == "blue"; B1)

Ausser VBA kenne ich nichts. Dennoch habe ich einmal gesucht und zumindest auch noch eine zweite Meinung [1] gefunden, die das auch behauptet.

Wärst du auch mit einem Makro zufrieden, oder muss das eine Funktion in der Zelle sein? Du kannst in der entsprechenden Zelle ja auch das Makro aufrufen:

Zelle C1 = valueIfRed(L1;B1)

bei entsprechender VBA Funktion "valueIfRed"


Iamiam  20.01.2017, 23:00

Bist Du sicher, dass man mit einer VBA-Funktion eine Aktivität, wie Zellhintergrund  färben, auslösen kann?

Ich hab das nicht hingekriegt, nur Zahlen- bzw Textwerte eintragen.

Ich brauch dazu ein Sub!

Umgekehrt auslesen, das geht. zB dann Farbnummer darstellen.

hawking42  20.01.2017, 23:31
@Iamiam

ich habe jetzt leider keinen Rechner zur Hand aber mit VBA geht fast alles. Du kannst aber mal im Internet suchen.  Es gibt sicherlich schon Lösungen. 

Um den Code aus einer Zelle auszurufen und einen Wert in die Zelle zu schreiben, schau am besten wie das mit Funktionen geht. 

Die Links sind nicht von mir geprüft:

http://www.excel-easy.com/vba/examples/background-colors.html

http://analysistabs.com/excel-vba/change-background-color-of-cell-range/

https://support.office.com/en-us/article/Create-Custom-Functions-in-Excel-2007-2f06c10b-3622-40d6-a1b2-b6748ae8231f

Iamiam  21.01.2017, 01:14
@hawking42

Natürlich geht in VBA fast alles. Aber erwartungsgemäß geht es im 1. und 2. Link um Subs, und damit kann man natürlich sowohl Farben auslesen und in Variable oder Zellen beschreiben  wie auch aktiv setzen.

Im 3. geht es tatsächlich wenigstens um Funktionen, aber ich hab beim drüberlesen nichts gefunden, wo eine Funktion etwas gesetzt hätte.

Warum sollte eine Makrofunktion auch was grundsätzlich anderes machen als eine Integrierte Funktion, letztendlich ist VBA ja nur ein etwas kognitiv Verständlicheres als die xl-Programme selbst es sind, aber doch davon abgeleitet.

Aktion bleibt Aktion und Funktion bleibt Funktion, die erste stellt was an, die zweite rechnet und erstellt lediglich ein Ergebnis.

hawking42  21.01.2017, 08:44
@Iamiam

Wo steht geschrieben, dass eine Funktion nicht auch noch was anstellen kann? Vereinfacht ausgedrückt ersetzt du Sub durch Function und setzt den Rückgabewert auf z.B. TRUE und deine Funktion macht dasselbe wie das Sub zuvor.

Wenn du mit der Verwendung von VBA unglücklich bist, dann schlage ich den Umweg von DeeDee vor  der ist schnell gemacht, du brauchst eben eine zusatz spalte als Marker für die bedingte Formatierung.

DeeDee07  21.01.2017, 08:58
@hawking42

Ich sehe meine Lösung nicht als Umweg. Ich schreibe Formeln direkt in die Zielzellen. Ohne Abhängigkeit von der Bedingten Formatierung, von Farben oder der Spalte (E), die sie verwendet.

Freilich geht das in diesem Fall nur, weil es eine Regel gibt (abwechselnde Eintrag, also immer eine Zeile auslassen).

hawking42  21.01.2017, 11:01
@DeeDee07

Es ist im guten Sinn ein Umweg, weil ja die Frage nach der color-sensitiven Bedingung war. Wenn man eine Spalte mehr verkraftet ist das so natürlich auch besser!

Einen Wert farbabhängig auszugeben ist zwar über Krücken möglich, besser wäre es aber, die Auswahl von anderen Werten abhängig zu machen.

Da die Bedingte Formatierung die Zellen in Spalte E abwechselnd färbt, kann man sich das auch für die Einträge in C und D zunutze machen; in jeder geraden Zeile ein Eintrag in C, in jeder ungeraden einer in D.

Die Formel für C2 wäre dann:
=WENN(REST(ZEILE(A2);2)=0;B2;"")

Für D2:
=WENN(REST(ZEILE(A2);2)=1;B2;"")

Diese beiden Formeln nach unten kopieren.


hawking42  21.01.2017, 08:39

Ja, ein Umweg ist manchmal die bessere Wahl.