使用FormulaArray时,为什么一直会出现COM异常

时间:2012-06-25 20:27:37

标签: c# excel exception com-interop array-formulas

try
{
    sheet1.get_Range("M34").FormulaArray =
    "=SUM(IF(Sheet2!D6:D122=M31,IF(Sheet2!P6:P122>0,Sheet2!I6:I122/SUMIFS(Sheet2!I:I,Sheet2!C:C,Sheet2!C6:C122,Sheet2!D:D,Sheet2!D6:D122)*ROUNDUP(SUMIFS(Sheet2!I:I,Sheet2!C:C,Sheet2!C6:C122,Sheet2!D:D,Sheet2!D6:D122)/Sheet2!Q3,0),0),0))";
}
catch (COMException ex) { MessageBox.Show(ex.Message); }

任何人都知道为什么上面的代码会引发COM异常。如果我输入excel并按ctrl + shift + enter,该公式工作正常但是当我的程序写入excel时会抛出异常。我在我的程序中的其他地方使用了Range.FormulaArray,它运行良好。也许有人可以指出这个问题因为我疯了似乎其他人有同样的问题,但没有在线解决方案。

1 个答案:

答案 0 :(得分:2)

我尝试了这项工作并且有效。

try        
{  
sheet1.get_Range("M33").FormulaArray = "=SUMIFS(Sheet2!I:I,Sheet2!C:C,Sheet2!C6:C122,Sheet2!D:D,Sheet2!D6:D122)";

sheet1.get_Range("M34").FormulaArray = "=SUM(IF(Sheet2!D6:D122=M31,IF(Sheet2!P6:P122>0,Sheet2!I6:I122/Sheet1!M33*ROUNDUP(Sheet1!M33/Sheet2!Q3,0),0),0))";        
}        
catch (COMException ex) { MessageBox.Show(ex.ToString); } 
相关问题