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

本文关键字:一个 数组 对象 函数 CountIfs 返回值 工作 | 更新日期: 2023-09-27 17:56:25

我的问题是我想在 C# for Excel 中使用 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 dim 对象数组,它与我正在寻找的 Range 长度相同,并且所有条目都包含相同的数字"-2146826273"。

如果我将数组转换为 1 暗淡的双精度数组,则返回为 System.Double[] .

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

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

所以我的问题是,我如何获得WorksheetFunction方法CountIfs(...)的正常值?

是的,我必须使用WorksheetFunction方法,而且我不能像带有字符串的公式那样输入它。

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

嗯...我发现了问题。

它必须是这样的:

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

而不是那样:

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

尝试检查公式,错误号("-2146826273")表示问题出在公式中。

有关公式错误检查和特定错误,请参阅此处。

尝试使用以下代码进行计数 - 这是有效的

using Excel = Microsoft.Office.Interop.Excel;
Excel.Application excelapp = new Excel.Application();
double count = excelApp.WorksheetFunction.CountIf(range, Criteria);

返回带有计数的双精度