0

谁能告诉我为什么这不起作用

 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)";

但这确实

   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)";

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

但是如果我将上述两个公式复制并粘贴到 excel-2007 的公式栏中,然后按 Ctrl+Shift+Enter,两者都可以正常工作!

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

我也将上述两个公式 A1:HM232 更改为 R1C1:R232C221,再次从 c# 开始,较短的公式可以正常工作,但较长的公式仍然会产生异常!

4

2 回答 2

0

这个对我有用。我必须假设您没有 Sheet4(不太可能,因为较短的公式有效),或者您在删除引号、“+”和换行符时打错了字。这是我现在的公式栏中的内容:

=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)
于 2009-06-25T21:42:44.157 回答
0

因为如果字符串超过 255 个字符,Excel 在执行 FormulaArray 时会出现问题。恼人的。VBA有一个圆的办法,C#,没办法!

于 2017-08-12T20:50:51.780 回答