2012-06-25 5 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 예외를 throw하는 이유는 누구나 알 수 있습니다. 수식은 Ctrl + Shift + Enter 키를 눌러 Excel에 입력하면 작동하지만 예외를 throw하는 프로그램 작성시 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

Ahh ok Ill 그 시도하자 지금 – jitsuin

+0

그럼 당신의 제안은 그것을 고쳤습니다 :)하지만 지금은 내가 선호하는 가치가있는 셀을 가지고 있는데, 왜 이것이 작동하는지 알았 으면 좋겠지 만 어쨌든 하나의 성명서로 쓰여진 것은 아닙니다. :) – jitsuin