2009-06-25 4 views
0

quelqu'un peut me dire pourquoi cela ne fonctionne pasC# excel range.FormulaArray, si vous avez le temps pouvez-vous essayer ci-dessous le programme C# avec deux FormulaArrays différents

Excel.Worksheet ws_res = (Excel.Worksheet) 
        wb.Worksheets.Add(mis, mis, mis, mis); 
    Excel.Range range_res = (Excel.Range)ws_res.get_Range("A1","HM232"); 
range_res.FormulaArray = 
      "=ROUND((IF((IF(Sheet4!A1:HM232=1,0,"+ 
      "IF(Sheet4!A1:HM232=0,1,Sheet4!A1:HM232)))=1,0,"+ 
      "IF((IF(Sheet4!A1:HM232=1,0,"+ 
      "IF(Sheet4!A1:HM232=0,1,Sheet4!A1:HM232)))=0,1,("+ 
      "IF(Sheet4!A1:HM232=1,0,"+ 
      "IF(Sheet4!A1:HM232=0,1,Sheet4!A1:HM232)))))),0)"; 

mais cela ne

Excel.Worksheet ws_res = (Excel.Worksheet) 
        wb.Worksheets.Add(mis, mis, mis, mis); 
    Excel.Range range_res = (Excel.Range)ws_res.get_Range("A1","HM232"); 
    range_res.FormulaArray = 
    "=ROUND((IF(Sheet4!A1:HM232=1,0,IF(Sheet4!A1:HM232=0,1,Sheet4!A1:HM232))),0)"; 

= ============================================= ====

mais si je copie et collez les deux formules ci-dessus dans la barre de formule d'Excel 2007 et appuyez sur Ctrl + Maj + Entrée, les deux fonctionnent parfaitement!

============================================== =========

J'ai également changé dans les deux formules A1 ci-dessus: HM232 à R1C1: R232C221, encore une fois de C# le plus court fonctionne bien, mais le plus long génère toujours l'exception!

+0

Quelle est l'exception? – RBarryYoung

Répondre

0

Cela fonctionne pour moi. Je dois supposer soit que vous n'avez pas de Sheet4 (improbable, puisque la formule la plus courte fonctionne) soit que vous avez fait une faute de frappe lors de la suppression des Quotes, des "+" et des sauts de ligne. Voici ce que j'ai dans ma barre de formule maintenant:

=ROUND((IF((IF(Sheet4!A1:HM232=1,0,IF(Sheet4!A1:HM232=0,1,Sheet4!A1:HM232)))=1,0,IF((IF(Sheet4!A1:HM232=1,0,IF(Sheet4!A1:HM232=0,1,Sheet4!A1:HM232)))=0,1,(IF(Sheet4!A1:HM232=1,0,IF(Sheet4!A1:HM232=0,1,Sheet4!A1:HM232)))))),0) 
+0

si je copie et colle les deux formule ci-dessus directement dans la barre de formule Excel 2007, ils fonctionnent tous deux parfaitement! mais le problème se pose avec la formule plus longue lorsque j'essaie d'exécuter mon programme C# ... il n'y a pas d'erreur de syntaxe puisque les deux formules sont générées automatiquement ... –

0

En raison d'Excel a un problème pour exécuter FormulaArray si la chaîne est plus de 255 caractères. Ennuyeux. VBA a un chemin rond, C#, pas moyen!

Questions connexes