Daten ergänzen bis zum nächsten validierten Datensatz
Ich habe eine Tabelle, in der leider für zwei Typen (Aktien und Investments) nicht für jeden Tag die Kurse abegrufen werden.
Ich möchte nun, dass auch die Daten in den Feldern "aufgefüllt werden", solange keine neuen Zahlen vorliegen:
Die Formel in Spalte 3 ist einfach
let d := 'Datum (Zusammenfassung)';
sum((select 'Historische Rücknahmepreise' where Datum = d).'Gesamtwert Investmentfondsanteile')
Ich kriege es aber nicht hin, eine Formel zu schreiben, die den letzten Wert (hier z.B. 09.07.) fortschreibt (also wiederholt) bis ein neuer Wert erreicht wird (hier z.B. 17.07.)
Kann mir jemand dabei helfen? Das wäre sehr freundlich!
Alexander
10 Antworten
-
Hallo Alexander,
wenn die Berechnung nicht von den vorhandenen Werten in der dritten Spalte abhängig ist kann man die Werte in einer Schleife mit Bedinging durchrechnen. Entweder als Button:
---
for i in select DEINETABELLE where 'Gesamtwert(For....'=0 do
i.'Gesamtwert(For....':=sum((select 'Historische Rücknahmepreise' where Datum =i. 'Datum (Zusammenfassung)').'Gesamtwert Investmentfondsanteile')
end
---
Oder wenn die Werte nur in der Tabellenspalte sichtbar sein sollten dann:
---
if 'Gesamtwert(For....'!=0 then 'Gesamtwert(For....' else
let d := 'Datum (Zusammenfassung)';
sum((select 'Historische Rücknahmepreise' where Datum = d).'Gesamtwert Investmentfondsanteile')
end
---
Den Namen 'Gesamtwert(For....' musst du ergänzen - ist auf dem Bild nicht mehr zu sehen.
Leo
-
Lieber Leo,
ich würde Variante 2 wählen, weil die Werte nur in der Tabellenspalte benötigt werden: Das funktioniert aber leider nicht, weil Ninox meldet, dass in Zeile 1 ein Zirkelbezug besteht bei
if 'Gesamtwert (Fonds') !=0 then 'Gesamtwert (Fonds')
...
'Gesamtwert (Fonds') ist das Feld 'Gesamtwert(For....', welches auf dem Bild abgeschnitten ist
Alexander
-
Hallo Alexander,
ist 'Gesamtwert (Fonds') ein Zahlenfeld ode ein Funktionsfeld?Leo
-
Es ist ein Funktionsfeld mit bisher folgendem Inhalt let d := 'Datum (Zusammenfassung)';
sum((select 'Historische Rücknahmepreise' where Datum = d).'Gesamtwert Investmentfondsanteile') -
Dann habe ich dich falsch verstanden/nicht richtig gelesen:
---
let me:=this;
if 'Gesamtwert (Fonds)'=0 then
let myDate:=max(select DEINETABELLE[ 'Datum (Zusammenfassung)'<me. 'Datum (Zusammenfassung)' and 'Gesamtwert (Fonds)'!=0].'Datum (Zusammenfassung)');
sum((select 'Historische Rücknahmepreise' where Datum = myDate).'Gesamtwert Investmentfondsanteile')
else
'Gesamtwert (Fonds)'
end
---
Leo
-
Hm. Leider nicht. Immer noch ein Zirkelbezug:
let me := this;
if F = 0 then
let myDate := max((select Werte)['Datum (Zusammenfassung)' < me.'Datum (Zusammenfassung)' and F != 0].'Datum (Zusammenfassung)');
sum((select 'Historische Rücknahmepreise' where Datum = myDate).'Gesamtwert Investmentfondsanteile')
else
F
endwobei F eigentlich für 'Gesamtwert (Fonds)' in der Formel stand.
-
Warum jetzt F?
öffne Bitte einen Datensatz in der Tabelle Werte und erstelle dort ein Funktionsfeld F(x) namens Gesamtwert (Fonds). Als Formel für dieses Feld:
---
let me := this;
sum((select 'Historische Rücknahmepreise' where Datum = me.'Datum (Zusammenfassung)').'Gesamtwert Investmentfondsanteile')
---
Jetzt öffne die Tabellenansicht und füge bei der Spalte Gesamtwert (Fonds) die Formel ein:
---
let me := this;
if 'Gesamtwert (Fonds)' = 0 then
let myDate := max((select Werte)['Datum (Zusammenfassung)' < me.'Datum (Zusammenfassung)' and 'Gesamtwert (Fonds)' != 0].'Datum (Zusammenfassung)');
sum((select 'Historische Rücknahmepreise' where Datum = myDate).'Gesamtwert Investmentfondsanteile')
else
'Gesamtwert (Fonds)'
end
---
Leo
-
Lieber Leo,
vielen lieben Dank! Ich habe mich zwar schon relativ intensiv mit Ninox beschäftigt, aber eine Formel in die Tabellenansicht einzufügen, war mir bislang fremd und unbekannt!
-
Lieber Leo,
ich empfinde es als außerordentlich beeindruckend, wie vielen Benutzern Du so schnell, so unkompliziert Lösungen bereitstellst. Ich möchte Dir dafür einen großen Dank aussprechen. Viele Deiner Vorschläge in anderen Beiträgen habe ich auch in meiner Datenbank untergebracht, die sehr gut funktionieren (auch wenn ich nicht immer verstanden habe, warum...).
Vielleicht hast Du auch eine Lösung für einen anderen Post von mir: Wenn ich nun versuche, die Daten in einem Diagramm anzueigen, passiert gar nichts.
Ich möchte Gesamtwert (Aktien) anzeigen (und das wiederum ist das Ergebnis von:
let d := 'Datum (Zusammenfassung)';
sum((select 'Historische Kurse' where Datum = d).Wert)und
Gesamtwert (Fonds)
na, das ist die hervorragende Formel von Dir
Und daraus bekomme ich aber nur ein Diagramm mit leeren Werten. Also, lange Rede, kurzer Sinn:
Ich würde gerne ein Diagramm haben (Tag für Tag) mit der Summe aus Gesamtwert (Aktien) + Gesamtwert (Fonds).
Daran scheitere ich auch. Es bleibt immer leer.
Aber es mir peinlich, Dich immer wieder fragen zu müssen.
Es ist spät, ich gehe mal schlafen, und vielen herzlichen Dank für die Hilfe!
-
Hallo Alexander,
bei Diagramm gibt es eine Option Spalten einblenden. Dort sollte man nur drei Spalten stehen lassen. Als erst die Datumsspalte, dann die beibden Wertspalten. Die Formel für Gesamtwert (Fonds) sollte auch die Selbe sein wie in der Tabelle wenn die Werte gefülltsein sollten.
Bei Datenreihen sollte auch die Option Spalten ausgewählt sein.
Leo
Content aside
- vor 4 JahrenZuletzt aktiv
- 10Antworten
- 1041Ansichten