Referenzieren einer Spalte anhand der Spaltennummer in einer Formel in einer For-SchleifeHallo alle,
Ich versuche, mithilfe einer „for“-Schleife eine Reihe neuer Spalten auf einmal zu generieren, und jede Spalte wird als nächstes Element in der „Beispiel“-Matrix benannt. Ich denke, ich kann diesen Teil herausfinden. Ich möchte aber auch, dass jede Spalte eine Formel enthält, um eine andere Spalte nachzuschlagen, die jedes Mal anders ist, und diesen Wert vom Anfangswert (Spalte „0“) zu subtrahieren. Wenn ich dies ausführe, erhalte ich lediglich Fehler bei der Formelauswertung und berechne nicht, wie die Spalte aussehen soll, auf die sie verweist.
Vielen Dank für Ihre Hilfe!
sample = {0, 1, 2, ...}
new columns = N Items (sample);
for( i=1, i<= new columns, i++, col = num(sample [i]);
dt << New Column (sample [i] || " Days", formula (as column (13+i+new columns) - :Name("0")))
);Betreff: Referenzieren einer Spalte anhand der Spaltennummer in der Formel in einer For-SchleifeVielen Dank!!
Betreff: Referenzieren einer Spalte anhand der Spaltennummer in der Formel in einer For-SchleifeMein Fehler.Die Zeichenfolge muss analysiert werden, um das Anführungszeichenpaar zu entfernen
Names Default To Here( 1 );
dt = Current Data Table();
sample = {0, 1, 2};
new columns = N Items( sample );
For( i = 1, i <= new columns, i++,
col = Num( sample[i] );
colNamesList = dt << Get Column Names;
Wait( 0 );
Eval(
Substitute(
Expr(
dt << New Column( sample[i] || " Days",
formula( __column__ - :Name( "0" ) )
)
),
Expr( __column__ ),
Parse(":Name(\!"" || colNamesList[13 + i + new columns] || "\!")")
)
);
);Betreff: Referenzieren einer Spalte anhand der Spaltennummer in der Formel in einer For-SchleifeIch danke Ihnen für Ihre Hilfe!! Diese Lösung funktioniert fast – aber bei einem letzten Punkt hänge ich noch fest.
Derzeit liefert mir die resultierende Tabelle die folgende Formel.
":Name(\!"5\!")" - 0
Ich möchte, dass die erste Hälfte auf eine Spalte mit dem Namen „5“ verweist, so wie die zweite Hälfte auf eine Spalte mit dem Namen „0“ verweist. Egal was ich mache, ich schaffe es nicht, in der ersten Hälfte nur :Name("5") anzuzeigen. Wenn ich die Anführungszeichen neu formatiere oder versuche, sie zu verschieben, erhalte ich nur Variationen dieses Themas.
Danke noch einmal!
Betreff: Referenzieren einer Spalte anhand der Spaltennummer in der Formel in einer For-SchleifeDas Problem mit Ihrer aktuellen Formel sind die Variablen „i“ und „Neue Spalten“.Sie gehen davon aus, dass die Berechnung zu einer endgültigen Berechnung ausgewertet und dann in die Funktion „As Column()“ eingefügt wird.Das Problem besteht darin, dass in die Formel „As Column( 13 + i + new columns)“ eingefügt wird.Wenn die Formel ausgeführt wird, verfügt sie also nicht über die Werte von „i“ und „neue Spalten“, als Sie die Spalte erstellt haben, sondern verwendet bei jeder Berechnung oder Neuberechnung der Formeln die jeweiligen Werte.Und da sich „i“ und „Neue Spalten“ in Ihrem Skript ändern, liegt ein Problem vor.Jetzt können Sie die Formel ändern, um die Berechnung vor dem Definieren der Formel durchzuführen, und dann die Spaltennummer in die Formel einsetzen.Das Problem dabei ist jedoch, dass bei der Verwendung von Spaltennummern die Spaltennummer in der Formel nicht geändert wird, wenn eine Spalte in der Tabelle verschoben oder gelöscht wird und die Berechnung daher falsch ist.Ich schlage vor, dass Sie stattdessen den tatsächlichen Spaltennamen in die Formel einsetzen.Das folgende Skript veranschaulicht den Ansatz dazu.
Names Default To Here( 1 );
dt = Current Data Table();
sample = {0, 1, 2};
new columns = N Items( sample );
For( i = 1, i <= new columns, i++,
col = Num( sample[i] );
colNamesList = dt << Get Column Names;
Wait( 0 );
Eval(
Substitute(
Expr(
dt << New Column( sample[i] || " Days",
formula( __column__ - :Name( "0" ) )
)
),
Expr( __column__ ),
":Name(\!"" || colNamesList[13 + i + new columns] || "\!")"
)
);
);