Mein Problem ist, dass ich die WorksheetFunction
Methode CountIf
in C# für Excel verwenden möchte.Worksheet Function.CountIfs (...) in C# Rückgabewert ist ein 2 Dim Objekt Array
Und ich bin immer ein 2 dim Objekt Array aus dieser Funktion bekommen
double[,] zn1 = wsf.CountIfs(cSheet.Range[cSheet.Cells[13, 1],
cSheet.Cells[20, 1]], sName + sName);
(Es funktioniert nur mit double[,] zn1
oder var zn1
, sonst einen Fehler Ich erhalte, dass das Objekt Array obj[,]
nicht sein kann umgewandelt in eine double
oder double[]
, string[]
usw. ")
wo wsf
als
Excel.Application xl = new Excel.Application();
Excel.WorksheetFunction wsf = xl.WorksheetFunction;
Also, wenn ich es ausführe, bekomme ich ein 2-Dim-Objekt-Array, das die gleiche Länge wie der Range hat, die ich suche, und alle Einträge enthalten die gleiche Nummer "-2146826273".
Und wenn ich das Array in ein 1-DIM-Doppel-Array konvertieren, ist die Rückkehr System.Double[]
.
object[] to = zn1.Cast<object>().ToArray();
object[] res = to as object[];
double[] sRes;
sRes = res.OfType<double>().ToArray();
Alle anderen WorksheetFunction
Methoden funktionieren gut und ohne Fehler.
Also meine Frage ist, wie bekomme ich einen normalen Wert für die WorksheetFunction
Methode CountIfs(...)
?
Und ja, ich muss WorksheetFunction
Methoden verwenden und ich kann es nicht wie eine Formel mit einer Zeichenfolge eingeben.
Das Komische ist, wenn ich diese Formel in vba schreiben es gut funktioniert hat. Aber ich muss es tun in C# Ich habe die Formel für diesen Fehler überprüft und ich habe versucht, das Format für die Zellen zu ändern, aber es hilft nicht. Es sagt auch, dass ein geschlossenes Arbeitsbuch für dieses Problem sein könnte ("-2146826273") = #VALUE !, aber es ist immer offen. – Daniel
Wie Sie bereits erwähnt haben, funktionieren die anderen WorkssheetFunctions so, dass sie nicht das Problem der offenen Arbeitsmappe sein sollten. Ich denke, ich würde mit einem sehr einfachen CountIfs in der Formel beginnen, um zu überprüfen, ob dieser sehr einfache Fall durchkommt. –
Ich habe versucht, die Formel mit einfachen CountIs wie: "32", <32, einfache Wörter und auch mit leeren Zellen, aber der Fehler ("-2146826273") bleibt gleich. Ich habe auch CountIf versucht und es funktioniert nicht. Und wenn ich CountIf (s) wie folgt verwenden: 'Worksheet.Range [...] =" = COUNTIFS (Bereich Arg1, Objekt Arg2) ";' es funktioniert gut. – Daniel