Freigeben über


Arbeiten mit Formeln

In diesem Thema wird die CellFormula-Klasse des Open XML SDK und ihre Beziehung zum SpreadsheetML-Schema des Open XML-Dateiformats erläutert. Weitere Informationen zur Gesamtstruktur der Teile und Elemente eines SpreadsheetML-Dokuments finden Sie unter Struktur eines SpreadsheetML-Dokuments (Open XML SDK).


Formeln in SpreadsheetML

Sie können mithilfe von Formeln Berechnungsmodelle erstellen. Formeln ermöglichen die automatische Berechnung von Werten basierend auf Daten innerhalb und außerhalb der Tabellenkalkulation oder auf der Ausgabe anderer berechneter Zellen der Tabelle.

Formeln werden in jeder Zelle, in der eine Formel verwendet wird, in der XML-Datei des Arbeitsblatts gespeichert. Verwenden Sie das CellFormula (<f>)-Element, um den Formeltext zu definieren. Formeln können mathematische Ausdrücke mit zahlreichen vordefinierten Funktionen enthalten.

Das CellValue (<v>)-Element speichert den zwischengespeicherten Formelwert basierend auf dem Zeitpunkt, zu dem die Formel zuletzt berechnet wurde. Auf diese Weise kann der Benutzer die Berechnung der Formelwerte beim Öffnen der Tabellenkalkulation aufschieben und so Zeit sparen. Sie müssen den Wert nicht angeben, und wenn Sie ihn weglassen, muss der Open XML-Leser den Wert basierend auf der Formeldefinition berechnen, wenn das Arbeitsblatt geöffnet wird. Weitere Informationen zur CellValue-Klasse finden Sie unter CellValue.

Die folgenden Informationen aus der SPEZIFIKATION ISO/IEC 29500 stellen das cellFormula (<f>)-Element vor.

Eine SpreadsheetML-Formel ist die syntaktische Darstellung einer Folge von Berechnungen, die von der Tabellenkalkulationsanwendung in eine Funktion analysiert oder interpretiert wird, die einen Wert oder ein Array von Werten aus 0 bis n Eingaben berechnet.

Eine Formel ist ein Ausdruck, der Folgendes enthalten kann: Konstanten, Operatoren, Zellbezüge, Funktionsaufrufe und Namen.

Beispiel: Betrachten Sie die Formel PI()*(A2^2). In diesem Fall gilt:

  • PI() bewirkt einen Aufruf der Funktion PI, die den Wert π zurückgibt. – Der Zellbezug A2 gibt den Wert in dieser Zelle zurück. - 2 ist eine numerische Konstante. - Der Caretoperator (^) löst seinen linken Operanden auf die Kraft seines rechten Operanden aus. – Die Klammern ( und ) werden zum Gruppieren verwendet. - Der Sternchen (*)-Operator führt die Multiplikation seiner beiden Operanden aus.

Ein Operator ist ein Symbol, das den Typ der Operation angibt, die mit einem oder mehreren Operanden ausgeführt werden soll. Es gibt arithmetische Operatoren, Vergleichsoperatoren, Text- und Verweisoperatoren.

Jede horizontale Gruppe von Zellen auf einem Arbeitsblatt stellt eine Zeile und jede vertikale Gruppe von Zellen eine Spalte dar. Die Kombination aus Zeile und Spalte einer Zelle bezeichnet die Position dieser Zelle.

Ein Zellbezug bezeichnet eine oder mehrere Zellen auf demselben Arbeitsblatt. Mithilfe von Verweisen kann folgendes verwendet werden: – Daten, die in verschiedenen Teilen desselben Arbeitsblatts enthalten sind, in einer einzelnen Formel verwenden. – Verwenden Sie den Wert aus einer einzelnen Zelle in mehreren Formeln. – Verweisen Sie auf Zellen auf anderen Blättern in derselben Arbeitsmappe und sogar auf andere Arbeitsmappen. (Verweise auf Zellen in anderen Arbeitsmappen werden als Links bezeichnet.)

Eine Funktion ist eine benannte Formel, die null oder mehr Argumente übernimmt, eine Operation ausführt und optional ein Ergebnis zurückgibt. Beispiele für Funktionsaufrufe sind PI(), POWER(A1,B3) und SUM(C6:C10).

Mehr als 300 Funktionen sind in dieser Office Open XML-Spezifikation definiert. Benutzerdefinierte Funktionen sind ebenfalls zulässig.

Ein Name ist ein Alias für eine Konstante, einen Zellbezug oder eine Formel. Ein Name in einer Formel kann die Lesbarkeit der Formel erleichtern. Beispielsweise ist die Formel SUM(UmsatzErstesQuartal) leichter zu verstehen als SUM(C20:C30).

Jeder Ausdruck verfügt über einen Typ. In SpreadsheetML-Formeln werden folgende Typen unterstützt: array, error, logical, number und text.

Ein Arraywert oder eine Matrixkonstante stellt eine Auflistung von einem oder mehreren Elementen dar, deren Werte von beliebigem Typ sein können (d. h. die Elemente eines Arrays müssen nicht vom gleichen Typ sein).

© ISO/IEC29500: 2008.

Weitere Informationen zur Formelsyntax finden Sie in der Spezifikation ISO/IEC 29500.

SpreadsheetML-Beispiel

Dieses Beispiel zeigt den XML-Code für eine Datei, die eine Formel enthält, die SUM-Funktion, in Zelle A6 in Sheet1. The following XML defines the worksheet and is contained in the "sheet1.xml" file.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="https://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:mc="https://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac" xmlns:x14ac="https://schemas.microsoft.com/office/spreadsheetml/2009/9/ac">
        <dimension ref="A1:A6"/>
        <sheetViews>
            <sheetView tabSelected="1" workbookViewId="0">
                <selection activeCell="A7" sqref="A7"/>
            </sheetView>
        </sheetViews>
        <sheetFormatPr defaultRowHeight="15" x14ac:dyDescent="0.25"/>
        <sheetData>
            <row r="1" spans="1:1" x14ac:dyDescent="0.25">
                <c r="A1">
                    <v>1</v>
                </c>
            </row>
            <row r="2" spans="1:1" x14ac:dyDescent="0.25">
                <c r="A2">
                    <v>2</v>
                </c>
            </row>
            <row r="3" spans="1:1" x14ac:dyDescent="0.25">
                <c r="A3">
                    <v>3</v>
                </c>
            </row>
            <row r="4" spans="1:1" x14ac:dyDescent="0.25">
                <c r="A4">
                    <v>4</v>
                </c>
            </row>
            <row r="5" spans="1:1" x14ac:dyDescent="0.25">
                <c r="A5">
                    <v>5</v>
                </c>
            </row>
            <row r="6" spans="1:1" x14ac:dyDescent="0.25">
                <c r="A6">
                    <f>SUM(A1:A5)</f>
                    <v>15</v>
                </c>
            </row>
        </sheetData>
        <pageMargins left="0.7" right="0.7" top="0.75" bottom="0.75" header="0.3" footer="0.3"/>
    </worksheet>