2012-06-25 70 views
2
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,它工作正常。也許有人可以指出這個問題,因爲我瘋了,看起來其他人有同樣的問題,但沒有在線解決方案。爲什麼我在使用FormulaArray時不斷獲取COM異常

+0

請參閱「[堆棧溢出不允許在標題標籤(http://meta.stackexchange.com/a/130208)」 –

+0

你試過簡化的表達? –

+0

以及我可以找出使用多個單元格,但我想在一個單元格計算清潔的演示文稿,我希望我可以簡化它,但不認爲我可以,除非我在幕後做數學,但我更喜歡它是在excel中計算,我應該刪除標籤還是更改標題? – jitsuin

回答

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); } 
+0

啊好吧我試試看現在 – jitsuin

+0

那麼你的建議修正了它:)但現在我有一個單元格的值,我寧願隱藏,希望我知道爲什麼這個工程,但沒有寫成一個聲明,反正很高興:) – jitsuin

相關問題