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[,] zn1
或var zn1
,否则我会收到一个错误,即对象数组obj[,]
无法转换为double
或double[]
,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
方法,而且我不能像带有字符串的公式那样输入它。
嗯...我发现了问题。
它必须是这样的:
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);
返回带有计数的双精度