Skip to main content
Announcements
Introducing a new Enhanced File Management feature in Qlik Cloud! GET THE DETAILS!
cancel
Showing results for 
Search instead for 
Did you mean: 
ReiBi18
Contributor
Contributor

Auswahl in Formel überprüfen

Hallo liebe Community!

Ich bräuchte mal wieder eure Hilfe da ich gerade ziemlich auf der Leitung stehe... 

Folgendes Problem:

Ich bräuchte eine Formel, die überprüft, ob eine Auswahl im Feld Monat getroffen wurde oder nicht.

Falls ja und ich wähle zB den Monat 05 aus, sollen alle kumulierten Spalten Jänner-Mai anzeigen. 

Wurde kein Monat ausgewählt, dann soll automatisch folgende Formel gelten:

=if(today()>=(day(22)&Month(today())&Year(today())), 
sum({<Jahr={"$(=year(today()))"}, Monat={">=1<=$(=num(Month(today())-1)) "}>}PlanSaldo), 
sum({<Jahr={"$(=year(today()))"}, Monat={">=1<=$(=num(Month(today())-2)) "}>}PlanSaldo)) 

 

Mein Problem ist, wenn ich den Monat Mai auswähle, dann passen sich die Werte Ist, Budget, VJ an, aber meine kumulierten Spalten zeigen nach wie vor >01<09 an. Und ich habe gerade wirklich keine Idee, wie ich in die Formel eine Überprüfung bezüglich Monatsauswahl einbauen kann....

ReiBi18_1-1698053245046.png

 

Ich hoffe es ist halbigs verständlich und es kann mir jemand helfen. 

 

Vielen lieben Dank,

Birgit

 

 

Labels (1)
3 Replies
marcus_sommer

Ich denke, ich würde zu einem Ansatz wie diesen tendieren und die Monats-Bedingungen an nur einer Stelle evaluieren:

sum({<Jahr={"$(=year(today()))"},
               Monat={"<=$(=alt(max(Monat) * if(getselectedcount(Monat), 1, null()),
                                                    month(today()) - (day(today())<22) - 1)) "}>} PlanSaldo)

ReiBi18
Contributor
Contributor
Author

Hallo!

Vielen Dank für die Antwort und Entschuldigung für die späte Rückmeldung. 
Ich hätte die vorgeschlagene Formel probiert, leider funktioniert sie nicht so wie sie sollte. 
Es erfolgt keine Einschränkung auf die Monate, sondern es wird nur mehr der Jahreswert angezeigt, egal welche Auswahl ich im Monatsfeld getroffen habe. 

Ein weiterer erfolgloser Versuch wäre folgende Formel gewesen: 

if(getselectedcount(Monat) = 1,
sum({<Jahr={"$(=year(today()))"}, Monat={">=1<=$(=$(=num(Month(today())"}>}Betrag),
(if(today()>=(day(22)&Month(today())&Year(today())), 
sum({<Jahr={"$(=year(today()))"}, Monat={">=1<=$(=$(=num(Month(today())-1) "}>}Betrag), 
sum({<Jahr={"$(=year(today()))"}, Monat={">=1<=$(=$(=num(Month(today())-2) "}>}Betrag))))

 

Laut QV ist die "Expression OK", aber ich bekomme trotzdem keine Werte.... 

 

LG Birgit

 

 

marcus_sommer

Ich habe den wesentlichen Part der vorgeschlagenen Variante, also die Monatsermittlung, mal bei mir ausprobiert und es funktioniert prinzipiell - außer mit dem Vormonat bei weniger als dem 22. Kalendertag. Dies kann aber wie folgt korrigiert werden:

alt(max(Monat) * if(getselectedcount(Monat), 1, null()),
                                                    month(today()) + (day(today())<22) - 1)

Insofern probiere das Ganze nochmal sowie falls es weiterhin nicht geht, in den jeweiligen Teilen - im aufwändigsten Fall wäre jede Einzel-Summe und jedes Einzel-If als separate Formel in der Tabelle sowie auch die Zusatz-Berechnungen, wie die Monatsermittlung innerhalb der Bedingungen (könnte man auch in einer Textbox machen). Wenn alle Einzel-Ergebnisse passen, kann man dann die Formeln wieder Stück für Stück zusammenfügen und nochmals prüfen.

Einfacher als das ist es aber meistens, die wesentlichsten Logiken bereits im Datenmodell umzusetzen, um solche komplexen Formeln zu vermeiden sowie auch die User das auswählen zu lassen, was sie sehen wollen. Aus meiner Sicht gibt es z.B. keinen wirklichen Vorteil alle bisherigen Monate mit der Auswahl eines Einzel-Monats zu berücksichtigen, anstatt einfach alle Monate per gedrückter Maustaste zu selektieren. Auch bei deutlich mehr Feldwerten kann man mit der Eingabe von <= n die entsprechenden Auswahlen schnell und einfach durchführen.

Die Einschränkung mit dem 22. Tag lässt sich mit den klassischen Auswahlen jedoch nicht ganz so leicht umsetzen. Hier könnte man aber ein entsprechendes Flag im Kalender generieren, wie:

if(Jahr = year(today()) and Monat < month(today()), 1,
  if(Jahr = year(today()) and Monat = month(today()) and day(today()) >= 22, 1, 0)) as Flag

und als Formel dient dann vielleicht etwas wie: sum(Betrag * Flag). Im übrigen kann man auch multiple weitere Flags im Kalender generieren sowie diese auch überlappend kombinieren, um alle Standard-Sichten wie YTD, MTD mit und ohne Berücksichtigungen wie den 22. Tag sowie die entsprechenden Perioden der Vorjahre sowie was sonst noch benötigt wird, mit einer Auswahl bereitzustellen. Sowas kostet einmal Aufwand und kann dann für Jahre über nahezu alle Anwendungen genutzt werden.