c# نطاق excel.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)
نصائح أخرى
بسبب التفوق لديه بعض المشاكل لتنفيذ FormulaArray إذا كانت السلسلة أكثر من 255 حرف.مزعج.VBA لديه جولة طريقة, C#, مستحيل!