应用列表中的公式我想使用公式列表并将它们相应地应用于某些列。当前抛出错误:
发送在访问或评估“发送”时需要可编写脚本的对象,col << /*###*/Set Formula
示例公式列表:
{:Column 7 + 2, :Col1 + 8, :umn 2 * 3, 3, Empty(), Empty(), Empty(), Empty()}
For( i = 1, i < ListSize + 1, i++,
If( i > colSize,
New Column( "temp" )
);//create columns to accomidate list size
col << Set Formula( ms:formulaList[i] );//set column formulas
);
脚本回复:应用列表中的公式谢谢,我曾尝试使用 Parse() 但看起来 Char 是缺失的部分。 我曾将 Parse 用于列名,但在获取名称时已将其设置为字符串,因此它在那里工作。
我确实忘记在代码中包含列引用,因为我已将其精简以专注于该问题。我一定会研究这两个选项如何以及为什么有效,以及为什么很难找到它们。
回复:应用列表中的公式Jim 提供了用于处理表达式的 Eval(Substitute()) 语法。 但是,只有当您的列表具有当前列的占位符时,您的逻辑才会起作用。
此外,如果您创建一个名为“temp”的新列,然后创建另一个名为“temp 1”的列;但是,您只是将公式分配给列 temp。我附上了一个示例脚本,其中包含可能对您有用的逻辑。
在处理表达式时,我经常使用 Parse(Char()),但是,NameExpr() 返回表达式的值,未计算,并且在构建表达式时特别有用。您应该查看 Parse 和 Name Expr() 函数。
您将在附加的脚本中看到它。
//解析(字符(公式列表[i]))
NameExpr(公式列表[i])
回复:应用列表中的公式假设您在问题中显示的列表被命名为“formulalist”并且它位于名为“ms”的命名空间中,我相信下面的脚本会做你想要的
For( i = 1, i < ListSize + 1, i++,
If( i > colSize,
New Column( "temp" )
);//create columns to accomidate list size
Eval(
Substitute(
Expr(
:temp << Set Formula( __formula__ );//set column formulas
)
),
Expr( __formula__ ),
Parse( Char( ms:formulaList[i] ) )
);
);