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

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

しかし、上記の 2 つの数式をコピーして Excel-2007 の数式バーに貼り付け、Ctrl+Shift+Enter を押すと、両方とも完全に機能します。

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

上記の 2 つの式 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

Excel では、文字列が 255 文字を超える場合に FormulaArray を実行する際に問題が発生します。迷惑。VBAには回り道がある、C#、まさか!

于 2017-08-12T20:50:51.780 に答える