Questo è un testo estratto da qui . L'ho pubblicato qui come un uomo di paglia. Se qualcuno che sa in che modo differisce dalle formule di Google Spreadsheets potrebbe fare un commento, allora forse possiamo finire con una buona risposta.
formule
Le formule consentono di eseguire calcoli all'interno delle celle della tabella. Ogni formula può iniziare con un prefisso dello spazio dei nomi che specifica la sintassi e la semantica utilizzate all'interno della formula. Quando non è presente alcun prefisso, vengono utilizzate la sintassi della formula predefinita e la semantica come descritto di seguito. Questo è seguito da un segno di uguale e quindi dalla formula stessa. Le implementazioni possono accettare più sintassi della formula e possono accettare varie estensioni alla sintassi della formula predefinita. Tuttavia, tutte le implementazioni che accettano le formule DEVONO accettare la sintassi e la semantica delle formule predefinite come descritto qui. Possono anche accettare estensioni ad esso.
Un documento che implementa lo schema rigoroso NON PU use utilizzare un prefisso dello spazio dei nomi della formula (poiché non esiste alcuna garanzia che altri sistemi di ricezione siano in grado di elaborarlo) e NON PU use utilizzare alcuna estensione della semantica e della sintassi descritte di seguito .: Nella formula predefinita sintassi, dopo il segno di uguale iniziale una formula deve essere un'espressione. Un'espressione può essere un numero, una stringa costante, un intervallo denominato, una coppia di espressioni collegate da un operatore binario, un'espressione preceduta da un operatore unario, un operatore logico, una chiamata di funzione, un indirizzo di cella o un'espressione circondata da parentesi. Una chiamata di funzione e un operatore logico possono avere zero o più parametri separati da punto e virgola e ogni parametro DEVE essere un'espressione. La sintassi per ciascuno di questi è la seguente:
Numeri. I numeri vengono scritti e letti in questo formato usando la locale "C" (usando il separatore decimale "." E nessun separatore delle migliaia), usando setlocale (LC_NUMERIC, "C") o equivalente. I numeri possono terminare in%, il che divide quel numero per 100. Il “%” non cambia il significato di altri operatori, quindi il 2 + 10% è 2.1 (non 2.2). Si noti che i segni iniziali - e + sono consentiti come operatori unari, descritti di seguito. Gli scrittori DEVONO scrivere numeri che corrispondono allo schema (si noti che deve iniziare con una cifra): [0-9] + (. [0-9] +)? ([EE] [+ -]? [0-9] + )?%? I lettori DEVONO essere in grado di leggere questi numeri, nonché accettare numeri che iniziano con un "." Iniziale, quindi devono essere in grado di leggere i numeri nel modulo: ((. [0-9] +) | ([0- 9] + (. [0-9] +)? ([EE] [+ -]? [0-9] +)?))%? Stringhe costanti. Le stringhe costanti sono racchiuse tra virgolette doppie; per incorporare una doppia citazione, il carattere a virgoletta doppia viene utilizzato due volte. Le stringhe sono memorizzate nel formato UTF-8. Si noti che poiché tutto il contenuto viene archiviato come XML, tutte le doppie virgolette nella formula vengono effettivamente archiviate come "nell'XML. Le stringhe costanti corrispondono al modello: \" ([^ "] | \" \ ") * \"
Intervalli / campi nominati. Intervalli / campi denominati si riferiscono a un valore definito definito o a un insieme di valori (in un foglio di calcolo, in genere riferito a un indirizzo di cella o a un insieme di indirizzi). I nomi non fanno distinzione tra maiuscole e minuscole, quindi "a" e "A" si riferiscono allo stesso intervallo. Le implementazioni devono accettare almeno intervalli denominati che corrispondono al seguente modello: [A-Za-z] [A-Za-z0-9 _] *
Operatori. Sono accettati operatori ordinari di infissi e prefissi. Questi hanno la seguente associatività e precedenza (dalla priorità più bassa alla più alta):
Commenti degli operatori associativi
left <, =,>, <=,> =, <> Minore di, uguale a, maggiore di,
minore o uguale a, maggiore o uguale a,
non uguale a.
sinistra +, -, & Aggiungi, sottrai, concatenazione di stringhe. Nota che
unario (prefisso) + e - ha una priorità diversa.
sinistra *, / Moltiplica, dividi. La divisione non si tronca, quindi
1/2 è uguale a 0,5.
destra ^ Potenza (2 ^ 3 è 8). I lettori DOVREBBERO anche accettare "**".
nessuno +, - Prefisso operatori unari, ad es. -5 o - [. A1].
Si noti che questi hanno una differenza di precedenza rispetto a
aggiungere e sottrarre.
La precedenza può essere ignorata usando le parentesi, quindi “= 2 + 3 * 4” calcola 14 mentre “= (2 + 3) * 4” calcola 20. Nota che +, -, *, /, ^ converte qualsiasi stringa o valore binario usano in numeri prima dell'elaborazione; notare che & (concatenazione di stringhe) converte qualsiasi valore in stringhe prima di concatenarle. Operatori logici. Gli operatori logici hanno la stessa sintassi delle chiamate di funzione; i loro nomi non fanno distinzione tra maiuscole e minuscole, i parametri sono separati da punti e virgola e il loro nome DEVE essere seguito da parentesi. Gli operatori logici sono:
Conteggio parametri operatore Commento
TRUE () 0 Questa è una costante booleana, sebbene la sua sintassi la faccia apparire come una funzione
FALSE () 0 Questa è una costante booleana
NOT (espressione) 1 Se expression è TRUE () restituisce FALSE (), else restituisce TRUE ()
AND (e1; e2 [; e] *) 2 o più Se tutte le espressioni sono TRUE () restituisce TRUE (), altrimenti restituisce FALSE ()
OR (e1; e2 [; e] *) 2 o più Se tutte le espressioni sono FALSE () restituisce FALSE (), else restituisce TRUE ()
IF (condizione; true_exp; false_exp)
3 Valuta le condizioni. Se è vero, restituisce true_exp, altrimenti restituisce false_exp
Le implementazioni di AND (), OR () e IF () devono cortocircuitare, cioè devono valutare da sinistra a destra a turno e valutare solo le espressioni che devono valutare per calcolare il risultato. Un'implementazione può scegliere di valutare di più, ma solo quando le espressioni non hanno effetti collaterali. Le implementazioni di AND () e OR () DOVREBBERO accettare un numero arbitrario di parametri, ma DEVONO accettare almeno 30 in ciascun utilizzo. Le operazioni NOT (), AND () e OR (), nonché la condizione in IF (), sono intese per valori booleani; se vengono utilizzate espressioni di altri tipi, un'implementazione NON DOVREBBE considerare 0 come falso e qualsiasi altro valore numerico come vero e NON DOVREBBE considerare una stringa di lunghezza zero come falsa e qualsiasi altro valore di stringa come vero. Se viene calcolato un valore di errore per un'espressione, quel primo errore è il risultato dell'operazione logica.
Chiamate di funzione.Una chiamata di funzione ha un nome di funzione corrispondente al modello [A-za-z] [A-Za-z0-9 _] * seguito da una parentesi aperta, zero o più parametri e una parentesi chiusa. I parametri sono separati da un punto e virgola (non una virgola), anche se i lettori POSSONO accettare facoltativamente chiamate di funzione usando anche virgole come separatori. I nomi delle funzioni non fanno distinzione tra maiuscole e minuscole, quindi "sum" e "SUM" sono la stessa funzione. Se ci sono parametri, ognuno deve essere un'espressione e nessuno può essere vuoto, quindi X (;) non è una chiamata di funzione legale mentre RAND () è perfettamente legale. Se un parametro è facoltativo, PUO 'essere omesso, ma se omesso anche il suo separatore DEVE essere omesso (le specifiche delle funzioni dovrebbero indicare quali parametri sono opzionali e cosa significa ometterli). Le implementazioni tipiche avranno molte funzioni integrate, e la maggior parte delle implementazioni supporta anche uno o più modi per creare funzioni definite dall'utente. Le funzioni comuni includono:
- SOMMA ( elenco ): somma tutti i numeri negli intervalli dell'elenco .
- COUNT ( elenco ): conta il numero di numeri negli intervalli dell'elenco
- MEDIA ( elenco ): calcola la media, uguale a SOMMA ( elenco ) / COUNT ( elenco )
- MIN ( elenco ) - valore numerico minimo dell'elenco
- MAX ( elenco ) - valore massimo dell'elenco
- ROUND ( n , count ) - arrotondare n per contare le cifre (se count omesso, count = 0)
- INT ( n ) - arrotondare n verso il basso all'intero più vicino.
- ISEVEN ( n ) - restituisce TRUE () se n è pari, altrimenti restituisce FALSE ().
- SUBSTITUTE ( testo ; Testo di ricerca ; newText ; occorrenza ) - sostituti newText per Testo di ricerca nel testo , occorrenza numero di volte (se occorrenza omesso, tutte volte).
Indirizzi di celle che contengono numeri . Gli indirizzi possono essere relativi o assoluti. Un indirizzo relativo è costituito da una lettera di colonna e un numero di riga. Il prefisso della lettera o del numero di colonna con a $
rende assoluta la riga o la colonna.
Lo spazio bianco (spazio, tabulazione, ritorno a capo e ritorno a capo) viene ignorato nella sintassi delle formule predefinite, tranne nel contenuto delle costanti di stringa e come separatore per più indirizzi di intervallo di celle in un elenco di indirizzi di intervallo di celle.
Le interfacce utente delle implementazioni POSSONO scegliere di accettare e visualizzare formule in modo diverso da come vengono scambiate in questo formato di dati. Ad esempio, POSSONO accettare e visualizzare i numeri utilizzando il formato della locale corrente, POTREBBE usare sempre una locale specifica per i formati numerici, POTREBBERO utilizzare virgole anziché punti e virgola per i separatori di parametri e POTREBBE accettare e visualizzare gli indirizzi di cella senza richiedere il uso di parentesi quadre. Ma le interfacce utente di implementazione DOVREBBERO accettare anche il formato predefinito come input, laddove possibile, ad esempio, le implementazioni DOVREBBERO accettare numeri che soddisfano i requisiti delle impostazioni locali “C” (così come le impostazioni internazionali correnti) e DOVREBBE accettare indirizzi di cella tra parentesi. Inoltre, le interfacce utente di implementazione DOVREBBERO correggere errori probabili, possibilmente con un dialogo. Per esempio,
Di seguito è riportato un esempio di una formula semplice:
=sum(A1:A5)
Questa formula calcola la somma dei valori di tutte le celle nell'intervallo ".A1: .A5". La funzione è "somma". I parametri sono contrassegnati da un “(“ all'inizio e un “)” alla fine. Se una funzione contiene più di un parametro, i parametri sono separati da un “;”. Di seguito è una variante della formula mostrata sopra:
=sum(A1;A2;A3;A4;A5)
Il risultato di questa formula è lo stesso. I componenti utilizzati nella formula dipendono dall'applicazione che si sta utilizzando.