我有一个模板,我需要将数据填充到动态生成的范围中,每个范围由23列组成。 我也使用数据表将数据填充到范围内。
还为每个列和行动态生成公式:
"=IF(COUNT(" + prefix + "J" + rowNum + ":" + prefix + "L" + rowNum + ")>0," + prefix + "J" + rowNum + "+" + prefix + "K" + rowNum + "+" + prefix + "L" + rowNum + ",\"\")";
当动态应用值时,上面的公式将如下所示:
=IF(COUNT(J12:L12)>0,J12+K12+L12,"")
在上面的公式中,prefix是列名i,ll动态确定和替换,rowNum是每行的迭代值,也是确定和替换的。
我在这里面临的问题是公式是动态生成的,并放在excel中的必需列中,但作为文本放置。如果我按下' F2'然后按Enter键,公式将被应用。
注意:我已检查并确认 =
之前没有空格在:
后:
我没有改变任何东西,我只是按F2然后进入公式,只需按Enter键即可应用公式
我尝试了各种选项,例如
R1C1
R1C1local
ShowFormulas
Ctrl + ' issue
由于我有超过100列和无限行要计算,我不能转到每个范围并将范围设置为公式然后计算。
我已应用宏代码OnWorkbookOpen来应用公式,我只是想知道有没有办法用SpreadsheetGear实现这个并且没有宏代码。
答案 0 :(得分:1)
如果您提供与SpreadsheetGear相关的例程以查看该代码中是否存在任何问题,将会有所帮助。
由于你提到使用DataTables,我猜你正在使用IRange。CopyFromDataTable(...)方法。鉴于公式被视为文本,我还猜测你传递的是SetDataFlags。AllText选项。
如果是这种情况,您会看到此AllText
标记的预期行为,因为DataTable中的所有值将被视为文本,包括公式。您需要停止使用{{1}}选项来防止这种情况发生。