Zellinhalte einfärben

Ich habe hier ein Verständnisproblem mit der Anwendung des Übertragens von Formaten in einer Formel über das Konstrukt „&#“.

In einem Dokument steht in einem ersten Rechenblatt in Zelle A1 ein Wert.
Es gibt ein weiteres Rechenblatt mit dem Namen „AW Format“.
In Zelle A2 steht im ersten Rechenblatt die Formel „Wert(A1&(AW Format!#$A$1))“
Im Rechenblatt „AW Format“ steht in der Zelle A1 ein Text, der _grün_ eingefärbt ist.
Im Ergebnis hatte ich erwartet, dass jetzt in der Zelle A2 mein Ergebnis grün wird.
Dies ist jedoch nicht der Fall.
(Das ist in RT6 und RT7 gleich)

Wenn ich das richtig sehe, wird der Wert aus AW Format!$A$1an den Wert aus A1 mittels „&“ angehängt. Mit dem „#“ wird definiert, dass auch das Format übernommen werden soll.
Damit der angehängte Text nicht zu Problemen führt, benutze ich „Wert()“.

Je nachdem, was in AW Format!#$A$1 steht, erhalte ich unterschiedliche Ergebnisse:
Steht dort Text, erhalte ich die Fehlermeldung „Wert!“
Steht dort eine Zahl, erhalte ich eine angehängte _grüne_Zahl. (So wird mit „1“ in A1 und „0“ in AW Format!$A$1 mein Ergebnis in A2 eine _grüne_„10“.
Steht dort kein Inhalt, so dass die Zelle A1 leer ist, erhalte ich mein gewünschtes Ergebnis der _grünen_ Zahl.
Das ist auch irgendwo logisch.

Mir ist jedoch nicht klar, warum "Wert()" nicht den angehängten Text eliminiert. Auch "Zahl()" funktioniert dort nicht.

Hat da jemand eine Idee, warum das so ist?

Mathias

Re: Zellinhalte einfärben

#13562 On 8 Oktober, 2023 12:42 Thomas Kaegi said,

Hallo Mathias

Ich habe, gemäss deinen Angaben, in Zelle A1 des ersten Rechenblatts eine Zahl und im zweiten Rechenblatt einen Text in grüner Schrift. Weshalb du die Wert-Funktion verwendest habe ich nicht verstanden.

Wenn ich in Zelle A2 die Formel

A1&AW Format!#$A$1

einsetze, wird die ganze Antwort grün. Mit der Formel

#A1&AW Format!#$A$1

wird der aus A1 übernommene Teil schwarz und der aus dem zweiten Rechenblatt übernommene Teil grün.

HTH, Thomas

Re: Zellinhalte einfärben

#13563 On 8 Oktober, 2023 20:51 Milchmeyer said,

Hallo Thomas,

vielen Dank für Deine Unterstützung.
Jetzt habe ich die Funktion besser verstanden.

Mit „&“ wird wirklich alles angehangen, ganz präzise.
Wenn ich in Format!$A$1 einen Inhalt habe, wird der eben komplett übernommen.
Daher hatte ich mit Wert() experimentiert und hatte gedacht, damit dann aus z.B. 123,45 und „grün“ in Format!$A$1in Verbindung mit „&“ das Ergebnis „123,45“ als Zahl zu erhalten und dann gefärbt in die betreffende Zelle zurückzuschreiben.
Tatsächlich wird dann jedoch aus 123,45 dann der Inhalt „123,45grün“, was ich ja auch mit Wert() nicht auf die Zahl reduzieren kann.
Aber dann muss eben in Format!$A$1 wirklich „kein“ Inhalt sein und an „123,45“ wird auch nichts angehangen.
Auf den ersten Blick ergeben sich irritierende Ergebnisse. Steht in Format!$A$1 z.B. eine 0, werden die Werte mit dem Faktor zehn erhöht.
Das geht dann mit der Fehlersuche in die falsche Richtung.
In Verbindung mit einem Suchlauf und „SetzeZelle()“ kann ich dann in einer Liste auffällige Werte farbig hervorheben.
So habe ich es in anderen Dokumenten auch eingesetzt, ohne jedoch die Funktion vollständig zu verstehen.

Dass ich das „#" auch an anderer Stelle einsetzen kann, wie Du in" #A1&AW Format!#$A$1“ zeigst, war mir völlig neu und ist aber streng logisch.
Entweder fehlt mir da die Logik oder ich war nicht experimentierfreudig genug. ;)

Jetzt habe ich die Funktion verstanden und kann sie so nutzen, wie ich es wollte.
Manchmal ist alles ganz einfach.
Danke, dass Du das erklärt hast!

Mit freundlichem Gruß
Mathias Milchmeyer

Re: Zellinhalte einfärben

#13564 On 8 Oktober, 2023 23:50 Michael Vaerst said,

Hallo Matthias,

ich hatte Deine ursprüngliche Frage so gedeutet, dass Du, wenn in A1 im 2. Rechenblatt "AW Format" Text steht, Du diesen einfach nicht dargestellt haben möchtest, ansonsten Zahlenwerte aber angehängt übertragen werden sollen.
Die Lösung dafür wäre über eine Wenn-Formel zu lösen. Im ersten Rechenblatt in A2 tut es dann folgende Formel : Wenn(IstZahl(AW Format!$A$1);A1&AW Format!#$A$1;A1).
Letztlich ist mir aber Deine wirkliche Zielsetzung nicht eindeutig klar. Hoffe, es hilft trotzdem ...

Michael Vaerst

Re: Zellinhalte einfärben

#13565 On 9 Oktober, 2023 21:56 Milchmeyer said,

Hallo Michael,

Danke für Deinen Vorschlag.

Meine Zielstellung war, in einer Spalte, in der Differenzen ausgewiesen werden, positive Werte grün, negative Werte rot und neutrale Beträge schwarz zu markieren.
Dabei wird über einen Suchlauf die Spalte geprüft und mit "&#" und SetzeZelle() dann der passende Wert zurückgeschrieben.
Dabei würde ja ein Anhang das Ergebnis verfälschen.

Das Ergebnis betrifft Geldbeträge, somit könnte man einfach ein €-Zeichen als Anhang wählen. Aber es ist wohl einfacher und führt zu weniger Klimmzügen, die Zellen, aus denen dann die Farbreferenz abgeholt wird, einfach leer zu lassen. Dann wird auch "nichts" angehangen, der Zellinhalt jedoch trotzdem passend im Stil angepasst.

Ich hatte ein derartiges Konstrukt schon eingesetzt, jedoch im Detail noch nicht verstanden, was ich da genau getan habe. Somit hatte ich jetzt ein Verständnisproblem, aber dank Thomas verstehe ich jetzt, wie ich das richtig nutzen kann. "Der Groschen ist gefallen" ;)

Mein eingesetztes Ergebnis lautet jetzt:

Hinweis:
Bitte an Stelle von "kleiner" bzw. "größer" die entsprechende spitze Klammer nehmen. Wenn ich die Formel korrekt geschrieben hier einsetze, wird die jeweilige Zeile komplett verschluckt, da es ja keine öffnende / schließende Klammer als Pendant dazu gibt.

VSuchlauf(G6:G1010;1=1;0;
Wenn(LfdZelle<>0 UND IstZahl(LfdZelle)=1;
Wenn(LfdZelle "kleiner" K1 * (-1);SetzeZelle(Wert(LfdZelle&(#$H$1));G6:G1010;LfdIndex);
Wenn(LfdZelle "größer" K1;SetzeZelle(Wert(LfdZelle&(#$I$1));G6:G1010;LfdIndex);
SetzeZelle(Wert(LfdZelle&(#$J$1));G6:G1010;LfdIndex))));'')

Wobei ich (noch) kein zweites Rechenblatt habe und in K1 die Grenze des neutralen Bereichs setzbar ist.
In H1 bis J1 stehen die Formatvorlagen ohne Inhalt.
Das fertige Dokument wird dann ein zweites Rechenblatt mit den Formatvorlagen, einer als Text eingefügten Formeldokumentation und weiteren Hinweisen haben.
Das gewöhne ich mir immer mehr an, sozusagen ein Rechenblatt zum "Anwenden" zu haben und parallel dazu im selben Dokument, jedoch in einem eigenen Rechenblatt, wesentliche Ansätze als Erklärung zu benutzen.
Dazu kommt dann noch ein Rechenblatt mit "Eingabewerten", in denen man dann sozusagen die Einstellungen vornimmt.
Damit kann ich zum Anwenden einfach arbeiten und zum Ändern des Dokumentes geht man dann in die Formeln, die dann erklärt in einem eigenen Rechenblatt verstaut sind, so dass man sich schneller wieder reindenkt, wenn mal etwas aktualisiert oder umgebaut, weiterentwickelt etc. werden muss.

Mit freundlichem Gruß
Mathias Milchmeyer

Re: Zellinhalte einfärben

#13566 On 10 Oktober, 2023 09:10 Thomas Kaegi said,

Hallo Matthias

Du schreibst:
Meine Zielstellung war, in einer Spalte, in der Differenzen ausgewiesen werden, positive Werte grün, negative Werte rot und neutrale Beträge schwarz zu markieren.

Das hättest du einfacher haben können! Einfach das richtige Werteformat definieren und zuordnen:

Dieses Werteformat:
# ##0.00[Grüne Füllung];"-"# ##0.00[Rote Füllung];# ##0.00[Schwarze Füllung]
hätte deine Zielsetzung perfekt erfüllt!

In der RagTime Hilfe steht auf den Seiten 388/9:
Sie können jedem Werteformat eine Farbe geben, indem Sie den Namen einer existierenden Füllvorlage in eckigen Klammern am Ende des Formats eingegeben:
#,##[Rote Füllung]
Wenn ein Werteformat mehrere Zahlenformate enthält, können Sie jedem Format eine Bedingung anfügen. Wenn Sie keine Bedingung eingeben, nimmt RagTime das erste Format für positive Zahlen, das zweite für negative Zahlen und das dritte für den Wert Null.

Gruss, Thomas

Re: Zellinhalte einfärben

#13567 On 10 Oktober, 2023 10:08 Milchmeyer said,

Hallo Thomas,

danke, und wieder etwas dazugelernt, diese kombinierte Wertformatzuordnung kannte ich bislang nicht.
Aber es sieht ausgesprochen interessant aus.
Da muss ich mich mal den verwendbaren Bedingungen vertraut machen.
Trotzdem wird es noch nicht ganz passen, da ich die Grenze des neutralen Bereichs variabel halten möchte.
Dazu frage ich K1 ab und kann dort einen Wert einsetzen und davon in Abhängigkeit die Definition, was rot, und was grün gezeigt wird, verändern.
Wenn ich auf die Schnelle die verwendbaren Bedingungen richtig sehe, kann ich dort keine Formeln benutzen und müsste dann das Wertformat selbst ändern.

Trotzdem habe ich einige Ideen, wo ich meine Dokumente mit Deinem Hinweis vereinfachen kann.

RagTime setze ich seit 1990 seit und lerne immer wieder etwas dazu ;)

Mit freundlichem Gruß
Mathias Milchmeyer

Re: Zellinhalte einfärben

#13568 On 10 Oktober, 2023 11:51 Thomas Kaegi said,

Hallo Mathias

Das Beispiel in meinem letzten Beitrag war mit einem Werteformat mit den automatischen Bedingungen (positiv/negativ/null) formuliert. Jedem Werteformat kann aber in eckigen Klammern eine Bedingung vorangestellt werden. Siehe dazu RagTime-Referenz Seite 389 "Kombinierte Werteformate".

Unter der Annahme, dass dein Bereich für neutrale Werte fest ist – ich nehme hier mal an zwischen -5 und +5 – kannst du das Werteformat so definieren:
[>5]# ##0.00[Grüne Füllung];[<-5]"-"# ##0.00[Rote Füllung];[<0]"-"# ##0.00[Schwarze Füllung];# ##0.00[Schwarze Füllung]

Wenn der neutrale Bereich allerdings variabel sein soll, dann hilft das nicht weiter, weil die Bedingung im Werteformat keine Variablen enthalten darf.

Gruss, Thomas

Re: Zellinhalte einfärben

#13569 On 10 Oktober, 2023 19:01 Michael Vaerst said,

Hallo Matthias und Thomas,

ich denke, beide zuletzt vorgeschlagenen Wege sind machbar, sowohl per Suchlaufformel, als auch per Werteformat. Thomas Lösung mit dem Werteformat erscheint dabei sehr elegant. Ich würde allerdings selbst auch den Suchlauf bevorzugen:

- Bei der Suchlaufformel sind die Variablen wesentlich komfortabler anzupassen, z.B. im Rechenblatt selbst. Oder ...
- Die Variablen kann ich damit auch aus anderen Rechenblattkomponenten oder anderen Dokumenten beziehen, die die Grenzwerte bzw. Referenzwerte für die Variablen der gewünschten Tabelle liefern. Das wäre insbesondere dann interessant, wenn man eine anpassungsfähige Tabellenauswertung benötigt, die beispielsweise die Grenzwerte aus einem sich parallel verändernden Preisindex o.ä. bezieht. In solch einem Fall wäre die dauernde Anpassung des Werteformates sehr mühselig.

Und :
- Vorsicht mit den Werteformaten ... bei den Installationen der Beta-Builds zu RT7 ist es hier mehrmals vorgekommen, dass Werteformate gelöscht, bzw. nicht übertragen wurden.

Beste Grüße, Michael