c# excel range.formulaarray, 시간이 있다면 두 가지 다른 포뮬러 array로 아래 C# 프로그램을 시도해 볼 수 있습니다.

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#에서 다시 짧은 작품은 잘 작동하지만 더 긴 예외는 여전히 예외를 생성합니다!

도움이 되었습니까?

해결책

그것은 나를 위해 작동합니다. 나는 당신이 시트 4가 없거나 (짧은 공식이 작동하기 때문에 가능하지 않음), "+"s 및 라인이 나눌 때 인용문을 제거 할 때 오타를 만들었다고 가정해야합니다. 이제 제가 공식 바에있는 내용은 다음과 같습니다.

=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 때문에 문자열이 255 숯을 초과하면 FormulaArray를 실행하는 데 문제가 있습니다. 성가신. VBA는 둥근 길을 가지고 있습니다. C#, No Way!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top