首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >加快通过Excel-DNA通过xlcFormula插入公式

加快通过Excel-DNA通过xlcFormula插入公式
EN

Stack Overflow用户
提问于 2012-07-02 21:35:34
回答 2查看 1.7K关注 0票数 1

我使用Excel-DNA在大约40k行* 10列中插入公式,速度相当慢。

代码语言:javascript
复制
 XlCall.Excel(XlCall.xlcFormula, myFormula, new ExcelReference(row, row, column, column));

我设法通过暂时禁用更新时重新计算单元格(XlCall.Excel(XlCall.xlcCalculation, 3);)来显著改进它,但理想情况下,我希望找到一种方法,在一次操作中将整列公式放入excel中(我假设这将提高速度)。

我尝试在调用xlcFormula时传递一个object[,]

代码语言:javascript
复制
 XlCall.Excel(XlCall.xlcFormula, excelFormulas, new ExcelReference(1, lastRow, columnNumber, columnNumber));

但它将所有公式放在一个字段中(用分号分隔)。有没有办法做我想做的事情,或者我是在浪费我的时间在不可能的事情上?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-03 02:50:25

你可以在屏幕更新中尝试一下,同时关闭XlCall.Excel(XlCall.xlcEcho, false)

使用剪贴板怎么样?您可以将公式(列之间带有制表符)复制到剪贴板,然后将所有公式一次性粘贴到Excel工作表中。这可能是让Excel处理公式字符串的最快速度。

票数 2
EN

Stack Overflow用户

发布于 2013-03-27 03:55:51

我也遇到了这个问题,并想出了另一种加速公式插入的方法。尝试以下代码:

代码语言:javascript
复制
var formula = "=1+2";
var reference = new ExcelReference(rowFirst, rowLast, columnFirst, columnLast); // it's а rectangular area, just split up your huge area to smaler ones here
XlCall.Excel(XlCall.xlcFormulaFill, new object[] { formula, reference } ));

当您想要将相同的公式插入到许多单元格中时,此代码非常有用。尝试在公式中使用相对引用。

之前的解决方案也有效:

代码语言:javascript
复制
XlCall.Excel(XlCall.xlcEcho, false)

..。但不要忘记时不时地启用echo。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11294811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档