Wenn Dann Formel mit Hintergrundfarbe?
Hallo, ich möchte eine Wenn Dann Formel in Excel 2013 erstellen, damit ein Wert kopiert wird. Also, auf mein Bild bezogen, wenn in Spalte E eine Zelle Gelb ist, soll der Wert aus Spalte B, in Spalte C übertragen werden. Das gleiche wenn die Zelle in Spalte E weiß ist, nur soll dann der Wert in Spalte D übertragen werden. Mir ist bewusst dass ich wahrscheinlich zwei Wenn-Formeln benötige. Die Farbe Gelb wurde mit einer Bedingten Formatierung generiert, diese Färbt jede zweite Zeile gelb, in dem markierten Bereich (E2-E5). Sollte die Wenn- Formel mit der Schriftfarbe „einfacher“ sein, kann ich die Bedingte Formatierung, dahingehend noch ändern. Außerdem ist in der Spalte B diese Formel hinterlegt: =""&E2&""
Kann mir da bitte wer helfen? Am besten direkt mir der Formel. Über Google habe ich bereits gesucht, aber nichts gefunden was mir hilf bzw. in Schritten erklärt. Viele Grüße, Tsukiko
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"
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/
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.
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.
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).
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.
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.