c # excel range.FormulaArray, если у вас есть время, вы можете попробовать программу c # ниже с двумя разными FormulaArrays - PullRequest
0 голосов
/ 25 июня 2009

Может кто-нибудь сказать мне, почему это не работает

 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 #, более короткая работает нормально, но чем дольше все еще генерирует исключение!

Ответы [ 2 ]

0 голосов
/ 12 августа 2017

Из-за Excel возникает проблема с выполнением FormulaArray, если строка содержит более 255 символов. Раздражает. У VBA круглая дорога, C #, ни за что!

0 голосов
/ 26 июня 2009

Это работает для меня. Я должен предположить, что либо у вас нет 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)
...