Documentação de referência completa para fórmulas do Google Spreadsheets?

21

Como programador, fico um pouco frustrado ao tentar usar as Planilhas do Google, porque parece não haver uma descrição definitiva da sintaxe que posso usar para fórmulas. Por exemplo, eu li que posso usar F3:Fpara me referir à Fcoluna da linha 3 para baixo, mas não consigo encontrar onde ela menciona isso na documentação de referência do Google e nem sempre parece funcionar. Provavelmente estou fazendo errado, mas esse é o ponto desta pergunta.

Não quero percorrer cinco tutoriais diferentes para tentar adivinhar as regras! Existe uma descrição concisa da gramática e semântica disponível em algum lugar? Caso contrário, talvez alguém possa resumir aqui.

rog
fonte
docs.google.com/support/bin/... Não sei se isso vai ser de alguma ajuda em tudo (que é por isso que a sua jsut um comentário :))
Matt
1
obrigado, é uma parte útil da imagem, mas por que eles não podem documentar a coisa toda ?!
Roger27
Não tem problema, não tem idéia do porquê, mas é bastante semelhante ao execl e há apenas algumas alterações de sintaxe. Se sua sempre preso você sempre pode perguntar aqui :)
Matt

Respostas:

11

Este é um texto extraído daqui . Eu publiquei aqui como um homem de palha. Se alguém que sabe como isso difere das fórmulas nas planilhas do Google pode fazer um comentário, talvez possamos terminar com uma boa resposta.

Fórmulas

As fórmulas permitem realizar cálculos nas células da tabela. Toda fórmula PODE começar com um prefixo de espaço para nome, especificando a sintaxe e a semântica usadas na fórmula. Quando não há prefixo, são utilizadas a sintaxe e a semântica padrão da fórmula, conforme descrito abaixo. Isto é seguido por um sinal de igual e depois pela própria fórmula. Implementações podem aceitar várias sintaxes da fórmula, e eles podem aceitar várias extensões para a sintaxe da fórmula padrão. No entanto, todas as implementações que aceitam fórmulas DEVEM aceitar a sintaxe padrão da fórmula e a semântica, conforme descrito aqui. Eles também podem aceitar extensões para ele.

Um documento que implementa o esquema estrito NÃO PODE usar um prefixo de espaço para nome da fórmula (já que não há garantia de que outros sistemas receptores possam processá-lo) e NÃO PODE usar nenhuma extensão para a semântica e sintaxe descritas abaixo: Na fórmula padrão sintaxe, após o sinal de igual inicial, uma fórmula deve ser uma expressão. Uma expressão pode ser um número, uma cadeia constante, um intervalo nomeado, um par de expressões conectadas por um operador binário, uma expressão prefixada por um operador unário, um operador lógico, uma chamada de função, um endereço de célula ou uma expressão cercada por parênteses. Uma chamada de função e um operador lógico podem ter zero ou mais parâmetros separados por ponto e vírgula, e cada parâmetro DEVE ser uma expressão. A sintaxe para cada um deles é a seguinte:

  • Números. Os números são gravados e lidos nesse formato usando o código de idioma "C" (usando o separador decimal "." E sem separador de milhares), usando setlocale (LC_NUMERIC, "C") ou equivalente. Os números podem terminar em%, que divide esse número por 100. O "%" não altera o significado de outros operadores, portanto 2 + 10% é 2,1 (não 2,2). Observe que os sinais - e + iniciais são permitidos como operadores unários, descritos abaixo. Os escritores DEVEM escrever números que correspondam ao padrão (observe que ele deve começar com um dígito): [0-9] + (. [0-9] +)? ([EE] [+ -]? [0-9] + )?%? Os leitores DEVEM poder ler esses números, bem como aceitar números que começam com um “.” Inicial, para que possam ler números na forma: ((. [0-9] +) | ([0- 9] + (. [0-9] +)? ([EE] [+ -]? [0-9] +)?))%? Cadeias constantes .. As cadeias constantes são cercadas por aspas duplas; para incorporar aspas duplas, o caractere de aspas duplas é usado duas vezes. As strings são armazenadas no formato UTF-8. Observe que, como todo o conteúdo é armazenado como XML, todas as aspas duplas na fórmula são realmente armazenadas como "no XML. As cadeias constantes correspondem ao padrão: \" ([^ "] | \" \ ") * \"

  • Intervalos / campos nomeados. Intervalos / campos nomeados referem-se a um valor definido separado ou conjunto de valores (em uma planilha, normalmente referente a um endereço de célula ou conjunto de endereços). Os nomes não diferenciam maiúsculas de minúsculas; portanto, "a" e "A" se referem ao mesmo intervalo. As implementações devem aceitar pelo menos intervalos nomeados que correspondam ao seguinte padrão: [A-Za-z] [A-Za-z0-9 _] *

  • Operadores. Operadores comuns de prefixo e prefixo são aceitos. Eles têm a seguinte associatividade e precedência (da prioridade mais baixa à mais alta):

Operador (es) de associatividade Comentários
esquerda <, =,>, <=,> =, <> Menor que, igual a, maior que,
                                     menor que ou igual a, maior que ou igual a,
                                     não é igual a.
esquerda +, -, & Adicionar, subtrair, concatenação de string. Observe que
                                     unário (prefixo) + e - tem uma prioridade diferente.
esquerda *, / Multiplicar, dividir. Divisão não trunca, então
                                     1/2 é igual a 0,5.
poder ^ à direita (2 ^ 3 é 8). Os leitores também devem aceitar "**".
nenhum +, - Prefixa operadores unários, por exemplo, -5 ou - [. A1].
                                     Observe que estes têm uma precedência diferente do que
                                     adicione e subtraia.

A precedência pode ser substituída usando parênteses, então "= 2 + 3 * 4" calcula 14 enquanto "= (2 + 3) * 4" calcula 20. Observe que +, -, *, /, ^ converte qualquer string ou valores binários eles usam números antes de computar; Observe que & (concatenação de string) converte quaisquer valores em strings antes de concatená-los. Operadores lógicos. Operadores lógicos têm a mesma sintaxe que as chamadas de função; seus nomes não diferenciam maiúsculas de minúsculas, os parâmetros são separados por ponto e vírgula e seu nome DEVE ser seguido por parênteses. Os operadores lógicos são:


Contador de parâmetros do operador Comentário
TRUE () 0 Esta é uma constante booleana, embora sua sintaxe faça com que pareça uma função
FALSE () 0 Esta é uma constante booleana
NOT (expressão) 1 Se a expressão for TRUE () retorna FALSE (), então retorna TRUE ()
AND (e1; e2 [; e] *) 2 ou mais Se todas as expressões forem TRUE () retornam TRUE (), caso contrário, retorna FALSE ()
OR (e1; e2 [; e] *) 2 ou mais Se todas as expressões forem FALSE () retornam FALSE (), caso contrário, retorna TRUE ()
IF (condição; true_exp; false_exp)
                   3 Avalia a condição. Se for verdade, retorne true_exp, caso contrário, retorne false_exp

As implementações de AND (), OR () e IF () devem entrar em curto-circuito, ou seja, devem avaliar da esquerda para a direita e avaliar apenas as expressões que devem ser avaliadas para calcular o resultado. Uma implementação pode optar por avaliar mais, mas somente quando as expressões não têm efeitos colaterais. Implementações de AND () e OR () DEVEM aceitar um número arbitrário de parâmetros, mas DEVEM aceitar pelo menos 30 em cada uso. As operações NOT (), AND () e OR (), bem como a condição em IF (), destinam-se a valores booleanos; se expressões de outros tipos são usadas, uma implementação NÃO DEVE considerar 0 como falso e qualquer outro valor numérico como true, e NÃO DEVE considerar uma string de comprimento zero como false e qualquer outro valor de string como true. Se um valor de erro for calculado para uma expressão, esse primeiro erro será o resultado da operação lógica.


Chamadas de função.Uma chamada de função possui um nome de função que corresponde ao padrão [A-za-z] [A-Za-z0-9 _] * seguido por um parêntese de abertura, zero ou mais parâmetros e um parêntese de fechamento. Os parâmetros são separados por ponto e vírgula (não vírgula), embora os leitores PODEM opcionalmente aceitar chamadas de função usando vírgulas como separadores também. Os nomes das funções não diferenciam maiúsculas de minúsculas; portanto, "sum" e "SUM" são a mesma função. Se houver parâmetros, cada um deve ser uma expressão e nenhum pode estar vazio; portanto, X (;) não é uma chamada de função legal enquanto RAND () é perfeitamente legal. Se um parâmetro é opcional, PODE ser omitido, mas se omitido, seu separador DEVE ser omitido também (as especificações das funções devem indicar quais parâmetros são opcionais e o que significa omitir). As implementações típicas terão muitas funções internas, e a maioria das implementações também oferece suporte a uma ou mais maneiras de criar funções definidas pelo usuário. Funções comuns incluem:

  • SUM ( lista ) - resume todos os números no (s) intervalo (s) da lista .
  • COUNT ( lista ) - conta o número de números no (s) intervalo (s) da lista
  • MÉDIA ( lista ) - Calcula a média, igual a SUM ( lista ) / COUNT ( lista )
  • MIN ( lista ) - valor numérico mínimo da lista
  • MAX ( lista ) - valor máximo da lista
  • ROUND ( n , count ) - arredonda n para contar dígitos (se o contador for omitido, count = 0)
  • INT ( n ) - arredonde n para baixo para o número inteiro mais próximo.
  • ISEVEN ( n ) - retorna TRUE () se n for par; caso contrário, retorna FALSE ().
  • Substituto ( texto ; searchText ; newtext ; ocorrência ) - substitutos newText para searchText no texto , ocorrência número de vezes (se ocorrência omitido, todas as vezes).

Endereços de células que contêm números . Os endereços podem ser relativos ou absolutos. Um endereço relativo consiste em uma letra da coluna e um número de linha. Prefixar a letra da linha ou o número da coluna com a $torna a linha ou coluna absoluta.

O espaço em branco (espaço, tabulação, nova linha e retorno de carro) é ignorado na sintaxe das fórmulas padrão, exceto no conteúdo das constantes de sequência e como um separador para vários endereços de intervalo de células em uma lista de endereços de intervalo de células.

As interfaces de usuário das implementações PODEM optar por aceitar e exibir fórmulas de maneira diferente de como elas são trocadas nesse formato de dados. Por exemplo, eles PODEM aceitar e exibir números usando o formato do local atual, PODEM sempre usar um local específico para formatos numéricos, PODEM usar vírgulas em vez de ponto-e-vírgula para separadores de parâmetros, PODE aceitar e exibir endereços de células sem exigir o uso de colchetes. Mas as interfaces de usuário de implementação DEVEM aceitar o formato padrão como entrada, bem como sempre que possível, por exemplo, implementações DEVEM aceitar números que atendam aos requisitos de localidade "C" (assim como a localidade atual) e DEVEM aceitar endereços de célula entre colchetes. Além disso, interfaces de usuário de implementação DEVE corrigir erros prováveis, possivelmente com um diálogo. Por exemplo,

A seguir, é apresentado um exemplo de uma fórmula simples:

=sum(A1:A5)

Esta fórmula calcula a soma dos valores de todas as células no intervalo ".A1: .A5". A função é "soma". Os parâmetros são marcados com um "(" no início e um ")" no final. Se uma função contiver mais de um parâmetro, os parâmetros serão separados por um ";". A seguir, é apresentada uma variação da fórmula mostrada acima:

=sum(A1;A2;A3;A4;A5)

O resultado desta fórmula é o mesmo. Os componentes que você usa na fórmula dependem do aplicativo que você está usando.

rog
fonte
Ótima resposta, @rog. Você tem alguma idéia de por que a documentação da função do Google usa vírgulas em vez de ponto e vírgula para separar parâmetros? Eles não funcionam em nenhum dos meus testes.
Jpsy
@Jpsy: O separador de parâmetros depende das configurações da planilha. O ponto e vírgula é usado quando vírgula é o separador de casas decimais.
Rubén
"As implementações de AND (), OR () e IF () devem entrar em curto-circuito" --- infelizmente não recebo isso nas planilhas do Google no momento da redação deste documento. Tentei "AND (FALSE, uma expressão com incompatibilidade de tipo)" e, em vez de ignorar a segunda parte, o resultado é um erro do segundo operando. Felizmente, há uma solução alternativa em stackoverflow: stackoverflow.com/a/16926642/2184166
ob-ivan
6

Depois de pesquisar um pouco mais, acho que

  1. As fórmulas de planilhas do Google implementam um padrão de fato , seguindo o Microsoft Excel e outros.
  2. O padrão parece nunca ter sido definido corretamente .

O mais próximo que encontrei de uma definição abrangente foi nesta postagem antiga da lista de discussão: http://lists.oasis-open.org/archives/office-comment/200411/msg00000.html , que contém uma gramática yacc, um tokenizador lex, e uma breve descrição da semântica.

Não está claro até que ponto isso corresponde à implementação da planilha do Google - vários exemplos não funcionam nas planilhas do Google.

Este parece um triste estado de coisas. Qualquer avanço nessas informações seria muito apreciado.

rog
fonte
Houve muito progresso desde o post acima. Em relação ao OpenDocument, veja os anúncios em oasis-open.org/committees/tc_home.php?wg_abbrev=office
Rubén
-2

https://repository.tudelft.nl/islandora/object/uuid:d9d802af-9ebf-4524-9dbc-e7657d67921e/datastream/OBJ/download

A tese de mestrado de David Hoepelman, "refatoração e análise de planilhas assistidas por ferramentas" (Delft University of Technology) é de longe a melhor descrição da sintaxe da fórmula de planilha que eu já vi. BNFs, validação empírica e todos os adornos. No entanto, simples o suficiente para ser um bom guia para projetos codificados manualmente. XLParser é o projeto de código aberto associado ao GitHub mencionado na tese.

Infelizmente, é para o Excel não planilhas, mas, na medida em que as fórmulas das planilhas são compatíveis com o Excel, é um ótimo lugar para começar.

Humbertcopperfield
fonte