在 For 循環中的公式中按列號引用列大家好,
我試圖使用“for”循環立即生成一堆新列,並且每列將被命名為“樣本”矩陣中的下一項。 我想我能弄清楚那部分。 但我還希望每一列都包含一個公式來查找不同的列(每次都會不同),並從初始值(列“0”)中減去該值。 當我運行它時,它只會給我公式評估錯誤,而不是計算它引用的列應該是什麼。
感謝您的幫助!
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")))
);回复:在 For 循環中的公式中按列號引用列太感謝了!!
回复:在 For 循環中的公式中按列號引用列我的錯誤。需要解析字符串以除去一對引號
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] || "\!")")
)
);
);回复:在 For 循環中的公式中按列號引用列感謝您的幫助!! 這個解決方案幾乎有效 - 但我堅持最後一點。
目前,生成的電子表格給出了以下公式。
":Name(\!"5\!")" - 0
我希望前半部分引用名為“5”的列,就像後半部分引用名為“0”的列一樣。 無論我做什麼,我都無法讓前半部分只顯示 :Name("5")。 當我重新格式化引號或嘗試移動它們時,我只會得到該主題的變化。
再次感謝!
回复:在 For 循環中的公式中按列號引用列當前公式的問題是變量“i”和“新列”。您假設計算將被評估為最終計算,然後放入 As Column() 函數中。問題在於公式中放入的是 As Column( 13 + i + new columns )。因此,執行公式時,它不具有創建列時的“i”和“新列”值,但每當計算或重新計算公式時,它都會使用這些值。由於“i”和“新列”在您的腳本中發生變化,因此您遇到了問題。現在您可以在定義公式之前更改公式進行計算,然後將列號代入公式中。但是,這樣做的問題是,通過使用列號,如果移動或刪除表中的列,公式中的列號將不會更改,因此計算將是錯誤的。我建議您將實際的列名稱代入公式中。下面的腳本說明了執行此操作的方法。
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] || "\!")"
)
);
);