2017-11-20 5 views
0

Array-Formeln sind solche, die in Excel mit Strg + Umschalt + Enter eingegeben werden.So geben Sie Array-Formeln ein

Mit Excel API, wenn ich eine Array-Formel lesen (Range.formulas Eigenschaft), bekomme ich etwas wie [["{=SUM(IF(A1:A10>50,1))}"]].

Wenn ich versuche, diese Formel in das Arbeitsblatt zurückzuschreiben, gibt sie eine konstante Zeichenfolge ein (wegen der Klammern). Wenn ich die Klammern lösche und die Formel eintrage, wird sie als normale Formel eingegeben, nicht als Array.

Wie kann ich eine Array-Formel eingeben?


Wenn Sie in VBA eine Matrixformel lesen, wird die Formel ohne die Klammern zurückgegeben. Wenn Sie eine Array-Formel eingeben möchten, schreiben Sie range.FormulaArray = =SUM(IF(A1:A10>50,1)) (wiederum ohne die Klammern).

Es wäre gut, beide plataforms zu halten (JS und VBA) konsistent und auch Eigenschaften bieten wie Range.FormulaArray, Range.HasArray und Range.CurrentArray.

+0

Schreiben Sie es wie '= Countif (a1: a10,"> 50 ")' – Jeeped

+0

Danke, aber ich habe diese Formel nur als Beispiel verwendet. Die eigentliche Frage ist, wie kann ich Array-Formeln mit der Excel JavaScript API eingeben. –

Antwort

1

Die Eigenschaft Range.formulas kann zum Lesen oder Festlegen von Formeln für einzelne Zellen innerhalb eines Bereichs verwendet werden. Das folgende Codefragment füllt den Bereich C3:D5 mit Werten (indem ein 2-dimensionales Array von Werten angegeben wird) und setzt die Eigenschaft Range.formulas (durch Angabe eines zweidimensionalen Arrays von Formeln) so, dass die Formel in Zelle D5 (dh die Zelle befindet in der 3. Zeile, 2. Spalte des angegebenen Bereichs) ist =SUM(D3,D4).

Excel.run(function (ctx) { 
    var sheetName = "Sheet1"; 
    var rangeAddress = "C3:D5"; 
    var values = [["First Number", 1000], ["Second Number", 200], ["Difference", null]]; 
    var formulas = [[null, null], [null, null], [null, "=SUM(D3,D4)"]]; 
    var range = ctx.workbook.worksheets.getItem(sheetName).getRange(rangeAddress); 
    range.values = values; 
    range.formulas = formulas; 
    range.load('text'); 

    return ctx.sync().then(function() { 
     console.log(range.text); 
     console.log(range.formulas); 
    }); 
}).catch(errorHandlerFunction); 

Re Hinzufügen von Unterstützung für die zusätzliche Eigenschaften, die Sie erwähnt haben, wenn Sie diesen Vorschlag Office Developer Platform UserVoice, andere Benutzer können auf es dort abstimmen hinzufügen mögen, das Office-PM-Team ermöglichen ein Gefühl zu bekommen für Gesamtpriorität/-nachfrage, wenn sie zukünftige Erweiterungen der API planen.


UPDATE

Mit Hilfe der Excel-JavaScript-API eine Matrixformel setzen (wie Sie Strg + Umschalt + Enter in der Benutzeroberfläche verwenden würde) wird derzeit nicht unterstützt. Die Office Developer Platform UserVoice ist der richtige Ort zum Verfolgen von this feature request.

+0

Danke Kim, aber Array-Formeln sind keine Formeln, die auf ein Worksheet-Array geschrieben sind, Array-Formeln sind Formeln, die mit 'Strg + Umschalt + Enter' eingegeben werden. Der Vorschlagslink für diese Funktion befindet sich unter https://officespdev.uservoice.com/forums/224641-feature-requests-and-feedback/suggestions/19008853-add-array-formula-support-to-the-excel-office-. füge hinzu und ich habe gerade geupdated. –

+0

Danke für die Erklärung, Felipe, und für das Upvoting der Feature-Anfrage in UserVoice. Ich habe diese Information der Antwort hinzugefügt, zum Vorteil für alle, die es hier in den Kommentaren nicht sehen können. Danke noch einmal. –

+0

Danke! Ich denke, du solltest deinen Update-Text auf (...) fixieren wird derzeit nicht unterstützt. (...) –

Verwandte Themen