C#中脱颖而出range.FormulaArray,如果你有时间,你可以试试下面的C#程序有两个不同的FormulaArrays

StackOverflow https://stackoverflow.com/questions/1045819

  •  20-08-2019
  •  | 
  •  

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

 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#中较短的工作正常,但较长的一个静止产生例外

有帮助吗?

解决方案

这对我的作品。我必须假设要么你没有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)

其他提示

由于的Excel有一些问题以执行FormulaArray如果字符串是超过255个字符。烦人。 VBA有一个全面,C#,没办法!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top