C#返回值中的工作表Function.CountIfs(…)是一个2 dim对象数组

我的问题是,我想在Excel中使用C#中的WorksheetFunction方法CountIf

而且我总是从那个函数中得到一个2个暗淡的对象数组

 double[,] zn1 = wsf.CountIfs(cSheet.Range[cSheet.Cells[13, 1], cSheet.Cells[20, 1]], sName + sName); 

(它只适用于double[,] zn1var zn1 ,否则我会收到一个对象数组obj[,]不能转换为doubledouble[]string[]等的错误。

其中wsf被定义为

 Excel.Application xl = new Excel.Application(); Excel.WorksheetFunction wsf = xl.WorksheetFunction; 

所以当我运行它时,我得到一个2个暗淡的对象数组,它和Range有相同的长度,我正在寻找,所有的条目都包含相同的数字“-2146826273”。

如果我将数组转换为1 dim double数组,返回值为System.Double[]

 object[] to = zn1.Cast<object>().ToArray(); object[] res = to as object[]; double[] sRes; sRes = res.OfType<double>().ToArray(); 

所有其他WorksheetFunction方法运行良好,没有错误。

所以我的问题是,我如何得到WorksheetFunction方法CountIfs(...)

是的,我必须使用WorksheetFunction方法,我不能像string公式一样input。

嗯…我发现了这个问题。

它必须是这样的:

 var xl = Globals.ThisAddIn.Application; Excel.WorksheetFunction wsf = xl.WorksheetFunction; 

并不是这样的:

 Excel.Application xl = new Excel.Application(); Excel.WorksheetFunction wsf = xl.WorksheetFunction; 

试着检查你的公式,错误号(“-2146826273”)表示问题在公式内。

公式错误检查和特定的错误 。