Compartilhar via


Como trabalhar com fórmulas

Este tópico aborda a classe Open XML SDK CellFormula e como se relaciona com o esquema Open XML File Format SpreadsheetML. Para obter mais informações sobre a estrutura geral das partes e elementos que compõem um documento de Folha de CálculoML, veja Estrutura de um documento de Folha de CálculoML (Open XML SDK).


Fórmulas na Folha de CálculoML

Pode utilizar fórmulas para criar modelos computacionais. As fórmulas permitem o cálculo automático de valores com base em dados dentro e fora da folha de cálculo ou na saída de outras células calculadas na folha de cálculo.

As fórmulas são armazenadas dentro de cada célula que utiliza uma fórmula, no ficheiro XML da folha de cálculo. Utilize o CellFormula elemento (<f/>>) para definir o texto da fórmula. As fórmulas podem conter expressões matemáticas que incluem uma vasta gama de funções predefinidas.

O CellValue elemento (<v/>>), armazena o valor da fórmula em cache com base na última vez que a fórmula foi calculada. Isto permite ao utilizador adiar o cálculo dos valores da fórmula quando a folha de cálculo é aberta, o que poupa tempo ao abrir uma folha de cálculo. Não tem de especificar o valor e, se omitir, é da responsabilidade do leitor Open XML calcular o valor com base na definição da fórmula quando a folha de cálculo é aberta. Para obter mais informações sobre a CellValue classe, consulte CellValue.

As seguintes informações da especificação ISO/IEC 29500 introduzem o cellFormula elemento (<f/>>).

Uma fórmula de Folha de CálculoML é a representação sintactica de uma série de cálculos analisados ou interpretados pela aplicação de folha de cálculo numa função que calcula um valor ou matriz de valores com base em entradas zero-para-muitos.

Uma fórmula é uma expressão que pode conter o seguinte: constantes, operadores, referências de células, chamadas para funções e nomes.

Example: Considere a fórmula PI()*(A2^2). Neste caso,

  • PI() resulta numa chamada para o PI da função, que devolve o valor de π. - A referência de célula A2 devolve o valor nessa célula. - 2 é uma constante numérica. - O operador de acento circunflexo (^) eleva o operando esquerdo ao poder do operando direito. - Os parênteses, ( e ), são utilizados para agrupamento. - O operador asterisco (*) executa a multiplicação dos dois operandos.

Um operador é um símbolo que especifica o tipo de operação a executar num ou mais operandos. Existem operadores aritméticos, de comparação, de texto e de referência.

Cada conjunto de células horizontais numa folha de cálculo é uma linha e cada conjunto de células verticais é uma coluna. A combinação de linhas e colunas de uma célula designa a localização dessa célula.

Uma referência de célula designa uma ou mais células na mesma folha de cálculo. Com referências, pode-se: - Utilizar dados contidos em diferentes partes da mesma folha de cálculo numa única fórmula. - Utilize o valor de uma única célula em várias fórmulas. - Consulte células noutras folhas no mesmo livro e até mesmo noutros livros. (As referências a células noutros livros são denominadas ligações.)

Uma função é uma fórmula com nome que utiliza zero ou mais argumentos, executa uma operação e, opcionalmente, devolve um resultado. Alguns exemplos de chamadas de função são: PI(), POWER(A1;B3) e SUM(C6:C10).

Existem mais de 300 funções predefinidas definidas por esta especificação do Office Open XML. As funções definidas pelo utilizador também são permitidas.

Um nome é um alias para uma constante, uma referência de célula ou uma fórmula. Um nome numa fórmula pode facilitar a compreensão do objetivo dessa fórmula. Por exemplo, a fórmula SUM(FirstQuarterSales) é mais fácil de identificar do que SOMA(C20:C30).

Cada expressão tem um tipo. As fórmulas spreadsheetML suportam os seguintes tipos: matriz, erro, lógico, número e texto.

Um valor de matriz ou constante representa uma coleção de um ou mais elementos, cujos valores podem ter qualquer tipo (ou seja, os elementos de uma matriz não precisam de ter todos o mesmo tipo).

© ISO/IEC 29500: 2016

Para obter mais informações sobre a sintaxe da fórmula, consulte a especificação ISO/IEC 29500.

Exemplo de Folha de CálculoML

Este exemplo mostra o XML de um ficheiro que contém uma fórmula, a função SOMA, na célula A6 na Folha1. O XML seguinte define a folha de cálculo e está contida no ficheiro "sheet1.xml".

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://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>