这是我得到的例外:
System.Runtime.InteropServices.COMException(0x800A03EC):异常 来自HRESULT:0x800A03EC
at System.RuntimeType.ForwardCallToInvokeMember(String memberName, BindingFlags标志,Object target,Int32 [] aWrapperTypes,MessageData& MSGDATA)
在Microsoft.Office.Interop.Excel.Range.set_Formula(对象 值)
我的代码如下所示:
Range rng = activeWorksheet.get_Range("A1");
rng.Formula = "=SUM(A4*C4;A5*C5;A6*C6;A7*C7)/SUM(A4:A7)";
每当我运行此代码时,我都会得到前面提到的异常。但是,当我运行此代码时:
Range rng = activeWorksheet.get_Range("A1");
rng.Formula = "=SUM(A4:A7)/4"
这完美无缺。没有例外。
我检查了两个公式,它们在我的Excel中完美运行。我试过设置:
Application.Calculation = XlCalculation.xlCalculationAutomatic;
这根本没有帮助,我一直在谷歌搜索这个解决方案,但没有找到任何有用的东西。有没有人知道可能有什么问题?
答案 0 :(得分:6)
Excel的COM界面说美国语,因此您需要在公式字符串中使用US列表分隔符。用逗号替换你的分号,你应该没问题。
Range rng = activeWorksheet.get_Range("A1");
rng.FormulaArray = "=SUM(A4*C4,A5*C5,A6*C6,A7*C7)/SUM(A4:A7)";
答案 1 :(得分:0)
您需要使用{}和R1C1引用,使用范围对象的FormulaArray属性将公式更新为数组公式。
“= SUM(R4C1 * R4C3; R5C1 * R5C3; R6C1 * R6C3; R7C1 * R7C3)/ SUM(R4C1:R7C1)”