在 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] || "\!")"
)
);
);