c# excel range.formulaarray, 시간이 있다면 두 가지 다른 포뮬러 array로 아래 C# 프로그램을 시도해 볼 수 있습니다.
-
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!
제휴하지 않습니다 StackOverflow