C#中脱颖而出range.FormulaArray,如果你有时间,你可以试试下面的C#程序有两个不同的FormulaArrays
-
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#,没办法!
不隶属于 StackOverflow