2012-06-25 3 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 в другом месте моей программы, и он работал нормально. Может быть, кто-то может указать на проблему, потому что я схожу с ума, и, похоже, у других такая же проблема, но нет решений в Интернете.Почему я получаю исключение COM при использовании FormulaArray

+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 Мне кажется, что попробуйте сейчас – jitsuin

+0

Ну, ваше предложение исправило это :), но теперь у меня есть ячейка со значением, которое я бы предпочел скрыть, если бы я знал, почему это работает, не написано ни одним заявлением, так или иначе ОЧЕНЬ ПРИЗНАНО :) – jitsuin