proposte di nuove funzioni e miglioramenti per Calc
Inviato: domenica 2 gennaio 2011, 13:08
Buongiorno e buon anno a tutti! mio primo post (almeno con questo nuovo ID, -D:) su questo forum, per proporre un'estensione degli operatori ammessi nei DataPilot (tabelle pivot) di Open Office Calc.
Lascio inteso che tutte le proposte qui fatte e negli altri miei post sono sotto licenza creative commons zero, liberamente utilizzabili da chiunque anche per scopi commerciali, fermo restando per chiunque il diritto a modificarle, derivarne altre, utilizzarle e a creare codice gratuitamente senza citazione alcuna
L'unica indicazione è che su qualunque impiego o opera derivata, anche per scopi commerciali, non possa essere esteso il copyright per la sola possibilità di modifica, mentre resta per la distribuzione, copia o esecuzione dell'opera: non necessariamente il sorgente derivato deve restare aperto o essere distribuito gratuitamente, ma non si può impedire a terzi di imitare le stesse funzionalità=l'output visivo, e le stesse condizioni devono essere estese al codice derivato dalla specifica. Penso in particolare al nuovo LibreOffice, sotto licenza GPL e nato da pochi mesi, che potrebbe avere una crescita dalla copia e/o modifica dell'implementazione in Opne Office di nuove funzionalità, come potrebbero essere alcune di quelle di seguito riportate.
Suggerisco che siano rilasciati a queste condizioni tutti i contenuti di questo sito, e spero che ciò valga anche per il codice che potrebbe seguirne.
Al momento è consentita l'elaborazione dei dati nella tabella sorgente soltanto con operatori matematici (somma, prodotto, min, massimo) e statistici (media, deviazione e varianza standard o campionaria), escludendo quelli logici e di ricerca che sarebbero molto utili. Proposte:
1)inserire in Calc queste nuove funzioni:
1a) matematiche
soma dei reciproci es. f(a, b, c)= (1/a) + (1/b) + (1/c)
somma di numeri in base diversa da 10. Finora c'è la conversione da base 10 a 2,8o 16, non operazioni fra questi numeri. Nella funzione si seleziona la base desiderata e fino a 30 argomenti da elaborare, ritorna errore se uno degli argomenti ha un a cifra diversa da quella ammessa dalla base di selezione esempio argomenti 1=15, con base =2.
sommatoria e produttoria ad ad un solo indice con possibilità di applicare tutte le funzioni Excel fino ad un massimo di 10 variabili (1 campo per variabile) con selezione anche su intervalli non contigui, su celelc on costanti tipo numerico o valuta, eslcluse formule oper non creare dipendenze cicliche. Esempio: funzione sommatoria/produttoria con 30 campi x1, x2..x30, in ogni campo dichiaro fino a 30 intervalli di celle anche non contigui (separati con ";", abilitata anche la selezione con ctrl+shift)+1 campo editabile nel quale sono ammesse tutte le funzioni matematiche, finanziarie e statistiche Calc su variabili da x1 a x30 (non è ammesso il carattere "$"). Gli intervalli sono letti nell'ordine in cui sono stati selezionati, all'interno di ogni intervallo di celle dall'alto a sx fino in basso a dx.
La formula è editabile soltanto cliccando sul bottone corrispondente a ogni variabile con dei riferimenti cella, il bottone è attivabile soltanto quando nel campo a fianco sono state selezionate delle celle e il numero di record/celle è uguale a quello della variabile precedente, in modo ricorsivo (perchè la sommatoria/produttoria è introdotta a un solo indice).
La funzione ritorna se il numero di record numerici delle variabili è differente, per cui è impossibile eseguire sommatoria o produttoria; se la formula contiene riferimenti di cella o a variabili diverse da quelle dichiarate.
Se l'operatore somma/prodotto è per i=1..n, per ogni variabile si assegna un valore per i termini xi, yi mancanti ad arrivare ad n. Sono introdotti due campi numerici editabili, riferibili anche una cella, il valore di default è 0 per la sommatoria e 1 per la produttoria:
-Uno è riportato accanto allo spazio bianco (dove si inseriscono i riferimenti cella) per ogni variabile;
-un secondo campo per l'intera funzione è riportato alla fine della finestra, vicino al campo che mostra il risultato della funzione. Dopo questo spazio bianco editabile appare un bottone di conferma “applica a tutti”,. Cliccando applica a tutti, sono cancellati i valori per gli elementi mancanti di ogni variabile e viene settato per tutte quello indicato con “applica a tutti”
1b)statistiche
media quadratica. Sono presenti: media aritmetica, geometrica, armonica, troncata, solo quelle semplici.
media aritmetica, geometrica, armonica, quadratica ponderate (sulla frequenza dei dati); media aritmetica ponderata (ora è disponibile solo la media aritmetica semplice). Piuttosto che 4 nuove funzioni, meglio introdurre un flag nella scheda delle 4 disponbili, un campo booleano, settato di default su 0, per scegliere se si vuole la media semplice o la corrispondente in forma ponderata.
media lasche: moda e mediana
Inseriti tutti i tipi di media, è opportuno mettere tutte le misure di dispersione dei dati, le altre misure della teorie dell'errore, più accurate della deviazione standard:
mediana dei valori assoluti (MAD):
mediana dei valori assoluti in percentuale (MAPE):
symmetric mean absolute percentage error (SMAPE):
mean absolute error (MAE)L
per ognuna di default la media è calcolata come media aritmetica semplice. Nella scheda di ogni funzione per il calcolo della dispersione è possibile flaggare la misura del valore medio fra tutte quelle indicate: moda o mediana. media geometrica/aritmetica/quadratica/armonica semplice/ponderata.
Da inserire anche l'indice di concentrazione dei dati, utile per analisi tipo quello di Pareto;: la funzione ha due campi, per le variabili indipendenti 1 e 2, che possono contenere ciascuno intervalli non contigui di celle , separati da ";". Il terzo campo editabile è la % della variabile 1 che si desidera calcolare, in output esce la % della variabile 2 corrispondente.
La funzione ritorna errore se:
1)Almeno una delle due variabili x o y non è numerica;
2) almeno 1 della 2 variabili, quella numerica, non ha tutti valori di un unico tipo numerico. se c'è un valore charachter ritorna errore. La variabile è non numerica se i suoi intervalli hanno valori testo misti a numeri.
3)il valore della percentuale deve essere un numero positivo compreso fra 0 e 100,
Per la variabile non numerica la percentuale è calcolata con la funzione conta.valori, per quella/e numeriche con la funzione somma. in entrambe, come rapporto fra la funzione (somma/conta valori) cumulata fino al valore in oggetto e il valore totale, costante, della funzione su tutti i valori della variabile.
Esempio reddito (variabile 1, numerica) e redditieri (2, testo): l'abbinamento è posizionale, la prima cella del primo intervallo dichiarato per la variabile x è abbinata alla prima cella del primo intervallo dichiarato per la variabile y, intervalli esplorati dall'alto a sinistra in basso a destra, nell'ordine in cui sono registrati. Si ipotizza, di fatto che, il nome della persona, abbia nella cella accanto il reddito corrispondente.
Scegliendo 20%, la funzione ritorna il valore 80%, ossia che l'80% dei redditieri possiede il 20% del reddito. Per fare ciò, ordina la variabile numerica in modo crescente, e per ogni valore calcola la somma cumulata e la percentuale cumulata (rapporto fra somma cumulata e somma totale, valore costante, dei redditi) del reddito; l'ordinamento, è "allargato" all'altra variabile, i nomi dei redditieri,in base sempre a reddito crescente, e in corrispondenza si calcola la conta cumulata e la percentuale cumulata sul numero totale dei redditieri.
1c)finanziarie: tempo di pay-back per ripagare un investimento, fondamentale come il Valore Attuale Netto:
1d)matriciali:
-norma e traccia di una matrice. traccia e determinante identificano il polinomio caratteristico.
-matrice simmetrica e antisimmetrica (costruibili a partire da qualsiasi matrice), oltre a quella attuali di trasposta e inversa.
-prodotto di una matrice per uno scalare. finora è prevista il prodotto righe per colonne fra due matrici, e il prodotto scalare fra due matrici che ritorna un numero (il prodotto fra matrice un numero è un'altra matrice)
-matrice identità, con un argomento intero positivo fino alla dimensione massima consentita per le matrici. Utile per il calcolo di trasformazioni lineari, autovalori e autovettori di una matrice.
1e) una nuova categoria di funzioni insiemistiche: unione, intersezione, differenza fra insiemi, con opzione di visualizzare il risultato (come per le matrici) in più celle orizzontali/verticali unica area non modificabile, oppure in un'unica cella con un separatore editabile da 1 a 5 caratteri.
1f)completamento delle funzioni logiche, molto usate in elettronica e informatica. finora abbiamo AND (congiunzione), OR (disgiunzione alternativa o inclusiva), NOT (negazione). Mancano da inserire:
-IF..THEN (implicazione)
-IFF (IF AND ONLY IF)=coimplicazione
-XOR (disgiunzione esclusiva)
-NOR (negazione congiunta)
-NAND (negazione alternativa)
sempre in grado di elaborare fino a un massimo di 30 argomenti, come per le funzioni AND OR NOT ora disponibili.
Nella guida in linea sarebbe opportuno inserire la tavola di verità per ogni operatore logico, riferita al caso più semplice di due enunciati/proposizioni (2 argomenti) da verificare.
Introdotti tutti gli operatori, si dovrebbe inserire una funzione di verità: mostra una tastiera contenente parentesi tonde, quadre e graffe per ordinare gli operatori, e i simboli matematici di questi, e 2 flag esclusivi:
1) "mostra tutti i casi" : per mostrare la tavola di verità completa: La scheda della funzione di verità ha due campi precompilati che mostrano la dimensione della tabella in output: tabella di 2^n righe dove n è il numero di lettere enunciative/proposizioni (escluse le negazioni) da esaminare e m colonne (pari al numero di proposizioni e di operatori, inclusi quelli di negazione):
2) "calcola", limitandosi a una sola riga della tavola di verità, corrispondente ai valori vero/falso delle proposizioni che compongono la funzione di verità. Al termine del calcolo, la funzione di verità ritorna un valore unico vero/falso, se le proposizioni che la compongono sono univocamente verificabili con vero/falso, ad esempio se si tratta di espressioni matematiche (A AND B, con A:(3*2=6) e B:(5*6=28)).
La funzione di verità completa l'espressione con le parentesi sottointese, esegue gli operatori in base alla scala di priorità (in ordine: AND, OR, implica e coimplica) e ritorna errore se l'espressione non è ben formata. Esempio di funzione di verità: [(3*2=6)AND(5*5=25]XOR(6*9=25)].
La funzione di verità sarebbe l'unica formula ad ammettere al proprio interno la ripetizione per più di 2 volte del simbolo "=" (per 2 ripetizioni esiste la formula =a=a che ritorna il valore "vero").
La funzione di verità per la risoluzione incorpora e applica le proprietà degli operatori logici: idempotenza, commutativa e associativa della congiunzione e della disgiunzione; complementarietà della negazione; distributiva di congiunzione rispetto a disgiunzione e viceversa; leggi di De Morgan e la legge di assorbimento, due uguaglianze notevoli:
p IF THEN Q= (p AND q) OR ([NOT(p)] AND [NOT(q)])
p IFF q = [(NOT(p)) OR q]
La negazione non è definibile su numeri, tuttavia in elettronica e informatica si usano operatori logici non solo su uguaglianze, ma anche su altri oggetti.
1g) finzione logica "concatena", funzioni matematiche "coefficiente binomiale" e "modulo", vedi sotto.
2)inserire nei DataPilot fra le funzioni ammesse per i campi dati:
1.matematiche:
1.differenza
2.somma dei reciproci: vedi sopra
statistiche: tutte quelle elencate al punto precedente
a completamento di quelle matematiche e statistiche esistenti (moda e mediana sono meno utilizzate, ma non meno utili nell'analisi dei dati, da confrontare con la media)
3)inserire l'operatore logico "Concatena" utile per estendere l'uso dei Datapilot a tabelle sorgenti di informazioni testuali e non solo numeriche, le uniche finora elaborabili, avendo operatori di tipo matematico e statistico (“Conta” era l'unica funzione in gradi elaborare campi dati testuali).
La funzione concatena ha questi argomenti:
- campo riga, campo colonna, campo dati della tabella sorgente
- un separatore=campo editabile, non obbligatorio, tipo stringa (max 5 caratteri per via della dimensione max della cella), di default il carattere pipe“|”, include il carattere spazio “blank (da 0 a 5 spazi inseribili) e l'opzione NULL di nessun separatore inserito
- due argomenti tipo booleano con valori “S'ì/no”, “0/1”, non esclusivi:
1.uno per scegliere se eliminare gli elementi multipli
2.il secondo, per contare le occorrenze, dal nome “mostra conteggio elementi multipli”, attivando se flaggato un campo editabile di nome “maggiore o uguale a” tipo intero positivo, di default impostato sul valore 2.
Scelta la funzione “concatena” appare una seconda finestra, con queste due opzioni selezionabili “elimina gli elementi multipli” e “mostra le occorrenze”, di default non flaggate (valore 0), i bottoni “OK” (attivabile con un semplice invio) e “ANNULLA”, e una opzione in basso non flaggata “non mostrare più questa finestra in futuro”.
E' creata nelle impostazioni personalizzate una scheda dedicata alla funzione “concatena” che consente di cambiare i valori predefiniti, e far apparire o meno alla scelta di tale funzione queste due opzioni. La finestra con le due opzioni è anche richiamabile da tastiera, con un comando di scelta rapida, tipo il tasto “F3”.
Esempio: tabella sorgente che abbina 3 entità in relazione molti-a molti: nome studente, nome corso, nome docente nell'area dati, per semplicità senza item ripetuti per i campi colonna NOME_CORSO. La funzione concatena(nome_studente, nome_corso, nome_docente, separatore="|";0;0), ritorna una DataPilot che mostra, senza valori riga o colonna ripetuti,per ogni NOME_STUDENTE e NOME_CORSO, tutti i nome_docente separati da un carattere “|”.
Se si elimina il campo colonna NOME_CORSO, per vedere per ogni NOME_STUDENTE tutti i NOMI_DOCENTE, relativi a tutti i corsi da questo frequentati,m potrei avere delle ripetizioni, avendo un professo che insegna in più corsi frequentati dallo stesso studente. Le ripetizioni nel campo dati del DataPilot si possono gestire eliminando gli elementi ripetuti, per cui un NOMe_docente deve apparire una sola volta anche se è impegnato in più corsi frequentati dallo studente, e/o mostrando il numero di occorrenze=numero di corsi in cui il docente è impegnato in relazione allo studente, es. “2-Mario Rossi” dove “2-” è il numero di occorrenze.
4)Introdurre le funzioni coefficiente binomiale e modulo (non il valore assoluto, il modulo definito in aritmetica modulare), anche nei campi dati delle tabelle pivot . Al momento Calc contiene soltanto la funzione fattoriale che è alla base delle due dette prima.
4a) L'aritmetica modulare ha vaste applicazioni nella crittografia e nella matematica discreta. sarebbe la prima funzioni Calc ad ammettere in output più di una soluzione possibile, funzione da R^n a R^n. Per la definizione riportata, abbiamo 4 argomenti:
-i parametri interi a, b numeri reali, anche negativi o nulli, tali che a-b sia intero, dovendo essere multiplo di n che è intero positivo. Quindi, la funzione ritorna errore se la differenza a-b oppure n, non sono numeri positivi.
-un booleano che dice se vogliamo fermare il calcolo alla prima e minore soluzione trovata, oppure fare una ricerca esaustiva di tutte le soluzioni possibili
-un campo editabile obbligatorio come separatore delle varie soluzioni possibili (solito: tipo stringa, max 5 caratteri, di default "|", include gli spazi blank). Se si sceglie di fermare il calcolo alla prima soluzione e d è settato un separatore, la funzione ritorna il risultato senza tenerne conto; se invece, è flaggata l'opzione di tutti i risultati possibili, la funzione ritorna un msg di errore finchè non si è scelto un separatore.
Non esistono algoritmi efficienti per risolvere in tempi polinomiali i moduli, tuttavia l'argomento è limitato alla dimensione massima di una cella, 255 cifre. I tempi di calcolo richiesti sono gli stessi della funzione fattoriale, che è già in elenco.
4b)il coefficiente binomiale si può ricavare dal fattoriale con formule Calc. Ma è comodo avere anche una funzione apposita, con due argomenti n e k, che ritorna errore se almeno uno dei due non è diverso da zero, se sono uguali oppure se entrambi non sono interi positivi. Di default, la funzione interpreta come k il minore dei due interi.
5)Personalizzare la scelta delle funzioni proposte per i campi dati, all'avvio di un DataPilot. Creare nelle impostazioni del programma "Strumenti/opzioni/open office calc/" una scheda "Datapilot"/"Funzioni del DataPilot" che contiene una scelta multipla degli operatori che si intende visualizzare all'avvio di un Data Pilot, avendo come valori non predefiniti le funzioni attuali, e come scelte possibili, non di default, le nuove funzioni (moda e mediana, errori vari, differenza e somma dei reciproci)
6) inserire fra le opzioni extra all'avvio del DataPilot un flag per rendere l'elaborazione non case-sensitive, in modo da trattare come un unico valore ripetuto due valori che differiscono per l'iniziale o l'intera string ain carattere maiuscolo /minuscolo:
6a) una primo flag per tutte le variabili della tabella sorgente, inserito fra le opzioni extra all'avvio del DataPilot;
6b) un secondo flag per ogni campo riga, colonna, dati, disponibile nel dettaglio impostazione del campo, cliccando due volte sull'etichetta corrispondente. L'opzione case-sensitive può essere attivata anche escludendo singoli valori della variabile.
Questa opzione "Maiuscola/Minuscola" è disponibile in Calc 3.1 nel filtro della tabella pivot, ma non permette di avere nel campo dati i totali esattamente come se record della tabella sorgente differenti solo per il carattere maiuscolo/minuscolo, siano trattati come celle identiche.
Questa opzione è utile per qualsiasi funzione, trattando il case-sensitive fra le variabili di riga e colonna, e per le variabili dell'ara dati per le funzioni con argomenti tipo testo (funzioni "concatena" e "conta").
7)abilitare tutte le funzioni matematiche, statistiche e finanziarie (tutte le funzioni con argomenti numerici) di Calc per l'inserimento di elementi calcolati e di campi calcolati nel DataPilot. In Excel e Calc sono attualmente disponibili solo quelle previste per i dati del DataPilot (somma, prodotto, conta, max.min, dev e varianza std e campionaria).
Elementi e campi Calcolati sono elaborazioni del datapilot che non ha valori ripetuti nelle variabili di riga e colonna, e non presenta problemi di aggregazione dei dati, ogni cella dell'area dati è identificabile da una coppia di valori (appunto non ripetuti) delle etichette di riga e colonna, per cui le formule possono utilizzare tutte le funzioni, purchè siano senza riferimenti a celle della tabella sorgente.
8)abilitare l'analisi dettagliata direttamente sul foglio sorgente, con queste opzioni:
-creare un'opzione di scelta per la modalità di selezione della cella nel DataPilot, dedicata e volendo differente (di default uguale a quella impostata per il foglio Excel) dalla modalità di selezione delle altre celle del foglio Excel: sempre, con click singolo, doppio o al passaggio del mouse,
-selezione multipla delle celle sul Datapilot con Ctrl, Shift, Ctrl+Shift, selezione di tutte le celle con un dato valore (come in Excel, posizionando il cursore nella parte sinistra della cella prende la forma di “freccia” e sono evidenziate tutte le celle del Data Pilot che hanno lo stesso valore)
anziché visualizzare un nuovo foglio Excel che mostra l'area della tabella sorgente la cui elaborazione ha creato la cella nel pivot, le celle (o meglio l'area di celle ) oggetto dell'elaborazione sono evidenziate direttamente nella tabella sorgente con un'impostazione di visualizzazione come quella già disponibile per qualsiasi cella: scelta del tipo carattere (Arial, Times New Roman; grassetto e/o corsivo; con sottolineatura singola, doppia, ombreggiato, ecc) e scelta dei bordi delle celle. Colore dello sfondo della cella e colore del carattere non sono a libera scelta per evidenziare e mantenere distinti nella tabella sorgente il dettaglio di più celle selezionate nel DataPilot.
Si utilizza colore dello sfondo e del carattere piuttosto che altre impostazioni di visualizzazione, come sottolineatura e tipo del carattere, e bordo delle celle, perchè oltre a non essere altrettanto immediate da riconoscere come con l'uso di colori diversi, i pochi valori disponibili (es. 3 per sottolineatura: singola, doppia, ombreggiata) permetterebbero di evidenziare separatamente due/tre aree della tabella sorgente, non sufficienti quando si selezionano 4 o più celle nel DataPilot.
Cambiando cella nel DataPilot, cambia l'area della tabella sorgente che è evidenziata.
Selezionando più di una cella del Data Pilot, sono evidenziate nella tabella sorgente con colore del carattere e/o colore dello sfondo differenti le aree di interesse di ciascuna, e con un altro colore (di carattere e/o sfondo) l'intersezione tra le aree= le celle comuni che sono oggetto dell'elaborazione di due o più celle selezionate nel DataPilot,
L'impostazione è utile se tabella sorgente e DataPilot sono salvati nello stesso foglio Calc. Questa impostazione supera la consuetudine per cui il DataPilot non può comportare nessuna modifica alla tabella sorgente, cosa che è possibile con una distinzione fra foglio di stile e informazioni, lasciando soltanto le ultime non modificabili per non creare dipendenze (il DataPilot è funzione della tabella sorgente, che non può quindi essere modificata a sua volta dalle informazioni del DataPilot).
9)funzioni matriciali: inserire la norma e la traccia di una matrice. Con il determinante, la traccia della matrice è l'altra proprietà che permette di arrivare al polinomio caratteristico, autovettori e autovalori.
10)abilitare nei DataPilot l'analisi dettagliata per una selezione multipla di celle, finora funziona cliccando su una cella singola, estensione simile al copia/incolla da più intervalli che è stato introdotto nell'ultima versione. esempio si clicca sulle celle a1 e b1 del DataPilot, si apre un altro foglio Calc che mostra le due selezioni di celle che hanno generato a1 e b1,
L'utente può scegliere:
10a) "mantieni selezioni separate" e visualizza la semplice unione con valori ripetuti della parti di tabella sorgente che puntano ad a1 e b1.-Le parti di tabella sorgente sono separate da una riga bianca o dal bordo della tabella, e ordinate separatamente. Se una cella della tabella sorgente ha contribuito al calcolo di a1 e b1, è ripetuta due volte nelle due selezioni.;
10b)"valori univoci": è mostrato un unico intervallo.
In entrambi i casi, l'utente può scegliere un impostazione di carattere o sfondo cella per vedere comunque valori ripetuti della tabella sorgente che hanno generato entrambe le celle a1 e b1 della tabella Pivot.
11) abilitare la formattazione automatica: per singole celle, righe, colonne, selezioni multiple di celle, come formati base: numero, testo, data, valuta. La formattazione automatica è richiamabile dalla finestra per il DataPilot e non è alternativa a quella condizionale, che è una formattazione di carattere e sfondo cella, non del tipo di dato.
con la formattazione automatica si analizzano le celle selezionate.
Se sono solo numeri (nessun carattere alfabetico e la virgola mobile che compare al massimo una volta) si assegna il formato numerico con due decimali e decine separate dal ".", impostazione modificabile dall'utente.
Se è presente il simbolo di lira, euro, dollaro o altra valuta, soltanto se è primo carattere della cella diverso da blank, il formato è tipo valuta: una cella tipo "3$45" non è formato valuta, mentre lo è " $ 345".
Se è presente il simbolo "*", "-", "_", oppure "/" come separatore degli elementi di data, parte una verifica sugli elementi numerici che devono essere almeno 2 dei quali: uno compreso fra 00 e 12 oppure testo esteso o abbreviato "gen, feb", uno compreso fra 01 e 31, l'ultimo di tipo "aaaa", "aa", o anche con apostrofo "'aa".
Quando non è riconosciuto uno di questi 3 tipi, è assegnato il tipo testo.
Se è selezionata una riga o una colonna, la formattazione è estesa automaticamente se tutte le celle scritte sono di un unico tipo di formato. se una sola è testo, o due sono di formati differenti, l'utente sceglie:
-di default, l'intera riga o colonna è riformattata come testo;
-è però possibile settare che almeno le celle contenenti valori o formule mantengano la loro formattazione, mentre il resto della colonna è testo, e che l'opzione sia dinamica, ovvero che compilando con una formula o un carattere di una cella vuota nella riga/colonna, dopo aver fatto la formattazione automatica, la cella che si è modificata non resti tipo testo e sia formattata a seguito della stessa analisi fatta sulle altre.
La formattazione è estesa anche alle celle contenenti formule, in base al valore ritornato al momento della formattazione automatica.
E' mostrata un'opzione "aggiorna automaticamente", che ripete la formattazione ogni volta che è modificata la cella, perchè interviene l'utente oppure cambia il valore ritornato dalla formula.
Lascio inteso che tutte le proposte qui fatte e negli altri miei post sono sotto licenza creative commons zero, liberamente utilizzabili da chiunque anche per scopi commerciali, fermo restando per chiunque il diritto a modificarle, derivarne altre, utilizzarle e a creare codice gratuitamente senza citazione alcuna
L'unica indicazione è che su qualunque impiego o opera derivata, anche per scopi commerciali, non possa essere esteso il copyright per la sola possibilità di modifica, mentre resta per la distribuzione, copia o esecuzione dell'opera: non necessariamente il sorgente derivato deve restare aperto o essere distribuito gratuitamente, ma non si può impedire a terzi di imitare le stesse funzionalità=l'output visivo, e le stesse condizioni devono essere estese al codice derivato dalla specifica. Penso in particolare al nuovo LibreOffice, sotto licenza GPL e nato da pochi mesi, che potrebbe avere una crescita dalla copia e/o modifica dell'implementazione in Opne Office di nuove funzionalità, come potrebbero essere alcune di quelle di seguito riportate.
Suggerisco che siano rilasciati a queste condizioni tutti i contenuti di questo sito, e spero che ciò valga anche per il codice che potrebbe seguirne.
Al momento è consentita l'elaborazione dei dati nella tabella sorgente soltanto con operatori matematici (somma, prodotto, min, massimo) e statistici (media, deviazione e varianza standard o campionaria), escludendo quelli logici e di ricerca che sarebbero molto utili. Proposte:
1)inserire in Calc queste nuove funzioni:
1a) matematiche
soma dei reciproci es. f(a, b, c)= (1/a) + (1/b) + (1/c)
somma di numeri in base diversa da 10. Finora c'è la conversione da base 10 a 2,8o 16, non operazioni fra questi numeri. Nella funzione si seleziona la base desiderata e fino a 30 argomenti da elaborare, ritorna errore se uno degli argomenti ha un a cifra diversa da quella ammessa dalla base di selezione esempio argomenti 1=15, con base =2.
sommatoria e produttoria ad ad un solo indice con possibilità di applicare tutte le funzioni Excel fino ad un massimo di 10 variabili (1 campo per variabile) con selezione anche su intervalli non contigui, su celelc on costanti tipo numerico o valuta, eslcluse formule oper non creare dipendenze cicliche. Esempio: funzione sommatoria/produttoria con 30 campi x1, x2..x30, in ogni campo dichiaro fino a 30 intervalli di celle anche non contigui (separati con ";", abilitata anche la selezione con ctrl+shift)+1 campo editabile nel quale sono ammesse tutte le funzioni matematiche, finanziarie e statistiche Calc su variabili da x1 a x30 (non è ammesso il carattere "$"). Gli intervalli sono letti nell'ordine in cui sono stati selezionati, all'interno di ogni intervallo di celle dall'alto a sx fino in basso a dx.
La formula è editabile soltanto cliccando sul bottone corrispondente a ogni variabile con dei riferimenti cella, il bottone è attivabile soltanto quando nel campo a fianco sono state selezionate delle celle e il numero di record/celle è uguale a quello della variabile precedente, in modo ricorsivo (perchè la sommatoria/produttoria è introdotta a un solo indice).
La funzione ritorna se il numero di record numerici delle variabili è differente, per cui è impossibile eseguire sommatoria o produttoria; se la formula contiene riferimenti di cella o a variabili diverse da quelle dichiarate.
Se l'operatore somma/prodotto è per i=1..n, per ogni variabile si assegna un valore per i termini xi, yi mancanti ad arrivare ad n. Sono introdotti due campi numerici editabili, riferibili anche una cella, il valore di default è 0 per la sommatoria e 1 per la produttoria:
-Uno è riportato accanto allo spazio bianco (dove si inseriscono i riferimenti cella) per ogni variabile;
-un secondo campo per l'intera funzione è riportato alla fine della finestra, vicino al campo che mostra il risultato della funzione. Dopo questo spazio bianco editabile appare un bottone di conferma “applica a tutti”,. Cliccando applica a tutti, sono cancellati i valori per gli elementi mancanti di ogni variabile e viene settato per tutte quello indicato con “applica a tutti”
1b)statistiche
media quadratica. Sono presenti: media aritmetica, geometrica, armonica, troncata, solo quelle semplici.
media aritmetica, geometrica, armonica, quadratica ponderate (sulla frequenza dei dati); media aritmetica ponderata (ora è disponibile solo la media aritmetica semplice). Piuttosto che 4 nuove funzioni, meglio introdurre un flag nella scheda delle 4 disponbili, un campo booleano, settato di default su 0, per scegliere se si vuole la media semplice o la corrispondente in forma ponderata.
media lasche: moda e mediana
Inseriti tutti i tipi di media, è opportuno mettere tutte le misure di dispersione dei dati, le altre misure della teorie dell'errore, più accurate della deviazione standard:
mediana dei valori assoluti (MAD):
mediana dei valori assoluti in percentuale (MAPE):
symmetric mean absolute percentage error (SMAPE):
mean absolute error (MAE)L
per ognuna di default la media è calcolata come media aritmetica semplice. Nella scheda di ogni funzione per il calcolo della dispersione è possibile flaggare la misura del valore medio fra tutte quelle indicate: moda o mediana. media geometrica/aritmetica/quadratica/armonica semplice/ponderata.
Da inserire anche l'indice di concentrazione dei dati, utile per analisi tipo quello di Pareto;: la funzione ha due campi, per le variabili indipendenti 1 e 2, che possono contenere ciascuno intervalli non contigui di celle , separati da ";". Il terzo campo editabile è la % della variabile 1 che si desidera calcolare, in output esce la % della variabile 2 corrispondente.
La funzione ritorna errore se:
1)Almeno una delle due variabili x o y non è numerica;
2) almeno 1 della 2 variabili, quella numerica, non ha tutti valori di un unico tipo numerico. se c'è un valore charachter ritorna errore. La variabile è non numerica se i suoi intervalli hanno valori testo misti a numeri.
3)il valore della percentuale deve essere un numero positivo compreso fra 0 e 100,
Per la variabile non numerica la percentuale è calcolata con la funzione conta.valori, per quella/e numeriche con la funzione somma. in entrambe, come rapporto fra la funzione (somma/conta valori) cumulata fino al valore in oggetto e il valore totale, costante, della funzione su tutti i valori della variabile.
Esempio reddito (variabile 1, numerica) e redditieri (2, testo): l'abbinamento è posizionale, la prima cella del primo intervallo dichiarato per la variabile x è abbinata alla prima cella del primo intervallo dichiarato per la variabile y, intervalli esplorati dall'alto a sinistra in basso a destra, nell'ordine in cui sono registrati. Si ipotizza, di fatto che, il nome della persona, abbia nella cella accanto il reddito corrispondente.
Scegliendo 20%, la funzione ritorna il valore 80%, ossia che l'80% dei redditieri possiede il 20% del reddito. Per fare ciò, ordina la variabile numerica in modo crescente, e per ogni valore calcola la somma cumulata e la percentuale cumulata (rapporto fra somma cumulata e somma totale, valore costante, dei redditi) del reddito; l'ordinamento, è "allargato" all'altra variabile, i nomi dei redditieri,in base sempre a reddito crescente, e in corrispondenza si calcola la conta cumulata e la percentuale cumulata sul numero totale dei redditieri.
1c)finanziarie: tempo di pay-back per ripagare un investimento, fondamentale come il Valore Attuale Netto:
1d)matriciali:
-norma e traccia di una matrice. traccia e determinante identificano il polinomio caratteristico.
-matrice simmetrica e antisimmetrica (costruibili a partire da qualsiasi matrice), oltre a quella attuali di trasposta e inversa.
-prodotto di una matrice per uno scalare. finora è prevista il prodotto righe per colonne fra due matrici, e il prodotto scalare fra due matrici che ritorna un numero (il prodotto fra matrice un numero è un'altra matrice)
-matrice identità, con un argomento intero positivo fino alla dimensione massima consentita per le matrici. Utile per il calcolo di trasformazioni lineari, autovalori e autovettori di una matrice.
1e) una nuova categoria di funzioni insiemistiche: unione, intersezione, differenza fra insiemi, con opzione di visualizzare il risultato (come per le matrici) in più celle orizzontali/verticali unica area non modificabile, oppure in un'unica cella con un separatore editabile da 1 a 5 caratteri.
1f)completamento delle funzioni logiche, molto usate in elettronica e informatica. finora abbiamo AND (congiunzione), OR (disgiunzione alternativa o inclusiva), NOT (negazione). Mancano da inserire:
-IF..THEN (implicazione)
-IFF (IF AND ONLY IF)=coimplicazione
-XOR (disgiunzione esclusiva)
-NOR (negazione congiunta)
-NAND (negazione alternativa)
sempre in grado di elaborare fino a un massimo di 30 argomenti, come per le funzioni AND OR NOT ora disponibili.
Nella guida in linea sarebbe opportuno inserire la tavola di verità per ogni operatore logico, riferita al caso più semplice di due enunciati/proposizioni (2 argomenti) da verificare.
Introdotti tutti gli operatori, si dovrebbe inserire una funzione di verità: mostra una tastiera contenente parentesi tonde, quadre e graffe per ordinare gli operatori, e i simboli matematici di questi, e 2 flag esclusivi:
1) "mostra tutti i casi" : per mostrare la tavola di verità completa: La scheda della funzione di verità ha due campi precompilati che mostrano la dimensione della tabella in output: tabella di 2^n righe dove n è il numero di lettere enunciative/proposizioni (escluse le negazioni) da esaminare e m colonne (pari al numero di proposizioni e di operatori, inclusi quelli di negazione):
2) "calcola", limitandosi a una sola riga della tavola di verità, corrispondente ai valori vero/falso delle proposizioni che compongono la funzione di verità. Al termine del calcolo, la funzione di verità ritorna un valore unico vero/falso, se le proposizioni che la compongono sono univocamente verificabili con vero/falso, ad esempio se si tratta di espressioni matematiche (A AND B, con A:(3*2=6) e B:(5*6=28)).
La funzione di verità completa l'espressione con le parentesi sottointese, esegue gli operatori in base alla scala di priorità (in ordine: AND, OR, implica e coimplica) e ritorna errore se l'espressione non è ben formata. Esempio di funzione di verità: [(3*2=6)AND(5*5=25]XOR(6*9=25)].
La funzione di verità sarebbe l'unica formula ad ammettere al proprio interno la ripetizione per più di 2 volte del simbolo "=" (per 2 ripetizioni esiste la formula =a=a che ritorna il valore "vero").
La funzione di verità per la risoluzione incorpora e applica le proprietà degli operatori logici: idempotenza, commutativa e associativa della congiunzione e della disgiunzione; complementarietà della negazione; distributiva di congiunzione rispetto a disgiunzione e viceversa; leggi di De Morgan e la legge di assorbimento, due uguaglianze notevoli:
p IF THEN Q= (p AND q) OR ([NOT(p)] AND [NOT(q)])
p IFF q = [(NOT(p)) OR q]
La negazione non è definibile su numeri, tuttavia in elettronica e informatica si usano operatori logici non solo su uguaglianze, ma anche su altri oggetti.
1g) finzione logica "concatena", funzioni matematiche "coefficiente binomiale" e "modulo", vedi sotto.
2)inserire nei DataPilot fra le funzioni ammesse per i campi dati:
1.matematiche:
1.differenza
2.somma dei reciproci: vedi sopra
statistiche: tutte quelle elencate al punto precedente
a completamento di quelle matematiche e statistiche esistenti (moda e mediana sono meno utilizzate, ma non meno utili nell'analisi dei dati, da confrontare con la media)
3)inserire l'operatore logico "Concatena" utile per estendere l'uso dei Datapilot a tabelle sorgenti di informazioni testuali e non solo numeriche, le uniche finora elaborabili, avendo operatori di tipo matematico e statistico (“Conta” era l'unica funzione in gradi elaborare campi dati testuali).
La funzione concatena ha questi argomenti:
- campo riga, campo colonna, campo dati della tabella sorgente
- un separatore=campo editabile, non obbligatorio, tipo stringa (max 5 caratteri per via della dimensione max della cella), di default il carattere pipe“|”, include il carattere spazio “blank (da 0 a 5 spazi inseribili) e l'opzione NULL di nessun separatore inserito
- due argomenti tipo booleano con valori “S'ì/no”, “0/1”, non esclusivi:
1.uno per scegliere se eliminare gli elementi multipli
2.il secondo, per contare le occorrenze, dal nome “mostra conteggio elementi multipli”, attivando se flaggato un campo editabile di nome “maggiore o uguale a” tipo intero positivo, di default impostato sul valore 2.
Scelta la funzione “concatena” appare una seconda finestra, con queste due opzioni selezionabili “elimina gli elementi multipli” e “mostra le occorrenze”, di default non flaggate (valore 0), i bottoni “OK” (attivabile con un semplice invio) e “ANNULLA”, e una opzione in basso non flaggata “non mostrare più questa finestra in futuro”.
E' creata nelle impostazioni personalizzate una scheda dedicata alla funzione “concatena” che consente di cambiare i valori predefiniti, e far apparire o meno alla scelta di tale funzione queste due opzioni. La finestra con le due opzioni è anche richiamabile da tastiera, con un comando di scelta rapida, tipo il tasto “F3”.
Esempio: tabella sorgente che abbina 3 entità in relazione molti-a molti: nome studente, nome corso, nome docente nell'area dati, per semplicità senza item ripetuti per i campi colonna NOME_CORSO. La funzione concatena(nome_studente, nome_corso, nome_docente, separatore="|";0;0), ritorna una DataPilot che mostra, senza valori riga o colonna ripetuti,per ogni NOME_STUDENTE e NOME_CORSO, tutti i nome_docente separati da un carattere “|”.
Se si elimina il campo colonna NOME_CORSO, per vedere per ogni NOME_STUDENTE tutti i NOMI_DOCENTE, relativi a tutti i corsi da questo frequentati,m potrei avere delle ripetizioni, avendo un professo che insegna in più corsi frequentati dallo stesso studente. Le ripetizioni nel campo dati del DataPilot si possono gestire eliminando gli elementi ripetuti, per cui un NOMe_docente deve apparire una sola volta anche se è impegnato in più corsi frequentati dallo studente, e/o mostrando il numero di occorrenze=numero di corsi in cui il docente è impegnato in relazione allo studente, es. “2-Mario Rossi” dove “2-” è il numero di occorrenze.
4)Introdurre le funzioni coefficiente binomiale e modulo (non il valore assoluto, il modulo definito in aritmetica modulare), anche nei campi dati delle tabelle pivot . Al momento Calc contiene soltanto la funzione fattoriale che è alla base delle due dette prima.
4a) L'aritmetica modulare ha vaste applicazioni nella crittografia e nella matematica discreta. sarebbe la prima funzioni Calc ad ammettere in output più di una soluzione possibile, funzione da R^n a R^n. Per la definizione riportata, abbiamo 4 argomenti:
-i parametri interi a, b numeri reali, anche negativi o nulli, tali che a-b sia intero, dovendo essere multiplo di n che è intero positivo. Quindi, la funzione ritorna errore se la differenza a-b oppure n, non sono numeri positivi.
-un booleano che dice se vogliamo fermare il calcolo alla prima e minore soluzione trovata, oppure fare una ricerca esaustiva di tutte le soluzioni possibili
-un campo editabile obbligatorio come separatore delle varie soluzioni possibili (solito: tipo stringa, max 5 caratteri, di default "|", include gli spazi blank). Se si sceglie di fermare il calcolo alla prima soluzione e d è settato un separatore, la funzione ritorna il risultato senza tenerne conto; se invece, è flaggata l'opzione di tutti i risultati possibili, la funzione ritorna un msg di errore finchè non si è scelto un separatore.
Non esistono algoritmi efficienti per risolvere in tempi polinomiali i moduli, tuttavia l'argomento è limitato alla dimensione massima di una cella, 255 cifre. I tempi di calcolo richiesti sono gli stessi della funzione fattoriale, che è già in elenco.
4b)il coefficiente binomiale si può ricavare dal fattoriale con formule Calc. Ma è comodo avere anche una funzione apposita, con due argomenti n e k, che ritorna errore se almeno uno dei due non è diverso da zero, se sono uguali oppure se entrambi non sono interi positivi. Di default, la funzione interpreta come k il minore dei due interi.
5)Personalizzare la scelta delle funzioni proposte per i campi dati, all'avvio di un DataPilot. Creare nelle impostazioni del programma "Strumenti/opzioni/open office calc/" una scheda "Datapilot"/"Funzioni del DataPilot" che contiene una scelta multipla degli operatori che si intende visualizzare all'avvio di un Data Pilot, avendo come valori non predefiniti le funzioni attuali, e come scelte possibili, non di default, le nuove funzioni (moda e mediana, errori vari, differenza e somma dei reciproci)
6) inserire fra le opzioni extra all'avvio del DataPilot un flag per rendere l'elaborazione non case-sensitive, in modo da trattare come un unico valore ripetuto due valori che differiscono per l'iniziale o l'intera string ain carattere maiuscolo /minuscolo:
6a) una primo flag per tutte le variabili della tabella sorgente, inserito fra le opzioni extra all'avvio del DataPilot;
6b) un secondo flag per ogni campo riga, colonna, dati, disponibile nel dettaglio impostazione del campo, cliccando due volte sull'etichetta corrispondente. L'opzione case-sensitive può essere attivata anche escludendo singoli valori della variabile.
Questa opzione "Maiuscola/Minuscola" è disponibile in Calc 3.1 nel filtro della tabella pivot, ma non permette di avere nel campo dati i totali esattamente come se record della tabella sorgente differenti solo per il carattere maiuscolo/minuscolo, siano trattati come celle identiche.
Questa opzione è utile per qualsiasi funzione, trattando il case-sensitive fra le variabili di riga e colonna, e per le variabili dell'ara dati per le funzioni con argomenti tipo testo (funzioni "concatena" e "conta").
7)abilitare tutte le funzioni matematiche, statistiche e finanziarie (tutte le funzioni con argomenti numerici) di Calc per l'inserimento di elementi calcolati e di campi calcolati nel DataPilot. In Excel e Calc sono attualmente disponibili solo quelle previste per i dati del DataPilot (somma, prodotto, conta, max.min, dev e varianza std e campionaria).
Elementi e campi Calcolati sono elaborazioni del datapilot che non ha valori ripetuti nelle variabili di riga e colonna, e non presenta problemi di aggregazione dei dati, ogni cella dell'area dati è identificabile da una coppia di valori (appunto non ripetuti) delle etichette di riga e colonna, per cui le formule possono utilizzare tutte le funzioni, purchè siano senza riferimenti a celle della tabella sorgente.
8)abilitare l'analisi dettagliata direttamente sul foglio sorgente, con queste opzioni:
-creare un'opzione di scelta per la modalità di selezione della cella nel DataPilot, dedicata e volendo differente (di default uguale a quella impostata per il foglio Excel) dalla modalità di selezione delle altre celle del foglio Excel: sempre, con click singolo, doppio o al passaggio del mouse,
-selezione multipla delle celle sul Datapilot con Ctrl, Shift, Ctrl+Shift, selezione di tutte le celle con un dato valore (come in Excel, posizionando il cursore nella parte sinistra della cella prende la forma di “freccia” e sono evidenziate tutte le celle del Data Pilot che hanno lo stesso valore)
anziché visualizzare un nuovo foglio Excel che mostra l'area della tabella sorgente la cui elaborazione ha creato la cella nel pivot, le celle (o meglio l'area di celle ) oggetto dell'elaborazione sono evidenziate direttamente nella tabella sorgente con un'impostazione di visualizzazione come quella già disponibile per qualsiasi cella: scelta del tipo carattere (Arial, Times New Roman; grassetto e/o corsivo; con sottolineatura singola, doppia, ombreggiato, ecc) e scelta dei bordi delle celle. Colore dello sfondo della cella e colore del carattere non sono a libera scelta per evidenziare e mantenere distinti nella tabella sorgente il dettaglio di più celle selezionate nel DataPilot.
Si utilizza colore dello sfondo e del carattere piuttosto che altre impostazioni di visualizzazione, come sottolineatura e tipo del carattere, e bordo delle celle, perchè oltre a non essere altrettanto immediate da riconoscere come con l'uso di colori diversi, i pochi valori disponibili (es. 3 per sottolineatura: singola, doppia, ombreggiata) permetterebbero di evidenziare separatamente due/tre aree della tabella sorgente, non sufficienti quando si selezionano 4 o più celle nel DataPilot.
Cambiando cella nel DataPilot, cambia l'area della tabella sorgente che è evidenziata.
Selezionando più di una cella del Data Pilot, sono evidenziate nella tabella sorgente con colore del carattere e/o colore dello sfondo differenti le aree di interesse di ciascuna, e con un altro colore (di carattere e/o sfondo) l'intersezione tra le aree= le celle comuni che sono oggetto dell'elaborazione di due o più celle selezionate nel DataPilot,
L'impostazione è utile se tabella sorgente e DataPilot sono salvati nello stesso foglio Calc. Questa impostazione supera la consuetudine per cui il DataPilot non può comportare nessuna modifica alla tabella sorgente, cosa che è possibile con una distinzione fra foglio di stile e informazioni, lasciando soltanto le ultime non modificabili per non creare dipendenze (il DataPilot è funzione della tabella sorgente, che non può quindi essere modificata a sua volta dalle informazioni del DataPilot).
9)funzioni matriciali: inserire la norma e la traccia di una matrice. Con il determinante, la traccia della matrice è l'altra proprietà che permette di arrivare al polinomio caratteristico, autovettori e autovalori.
10)abilitare nei DataPilot l'analisi dettagliata per una selezione multipla di celle, finora funziona cliccando su una cella singola, estensione simile al copia/incolla da più intervalli che è stato introdotto nell'ultima versione. esempio si clicca sulle celle a1 e b1 del DataPilot, si apre un altro foglio Calc che mostra le due selezioni di celle che hanno generato a1 e b1,
L'utente può scegliere:
10a) "mantieni selezioni separate" e visualizza la semplice unione con valori ripetuti della parti di tabella sorgente che puntano ad a1 e b1.-Le parti di tabella sorgente sono separate da una riga bianca o dal bordo della tabella, e ordinate separatamente. Se una cella della tabella sorgente ha contribuito al calcolo di a1 e b1, è ripetuta due volte nelle due selezioni.;
10b)"valori univoci": è mostrato un unico intervallo.
In entrambi i casi, l'utente può scegliere un impostazione di carattere o sfondo cella per vedere comunque valori ripetuti della tabella sorgente che hanno generato entrambe le celle a1 e b1 della tabella Pivot.
11) abilitare la formattazione automatica: per singole celle, righe, colonne, selezioni multiple di celle, come formati base: numero, testo, data, valuta. La formattazione automatica è richiamabile dalla finestra per il DataPilot e non è alternativa a quella condizionale, che è una formattazione di carattere e sfondo cella, non del tipo di dato.
con la formattazione automatica si analizzano le celle selezionate.
Se sono solo numeri (nessun carattere alfabetico e la virgola mobile che compare al massimo una volta) si assegna il formato numerico con due decimali e decine separate dal ".", impostazione modificabile dall'utente.
Se è presente il simbolo di lira, euro, dollaro o altra valuta, soltanto se è primo carattere della cella diverso da blank, il formato è tipo valuta: una cella tipo "3$45" non è formato valuta, mentre lo è " $ 345".
Se è presente il simbolo "*", "-", "_", oppure "/" come separatore degli elementi di data, parte una verifica sugli elementi numerici che devono essere almeno 2 dei quali: uno compreso fra 00 e 12 oppure testo esteso o abbreviato "gen, feb", uno compreso fra 01 e 31, l'ultimo di tipo "aaaa", "aa", o anche con apostrofo "'aa".
Quando non è riconosciuto uno di questi 3 tipi, è assegnato il tipo testo.
Se è selezionata una riga o una colonna, la formattazione è estesa automaticamente se tutte le celle scritte sono di un unico tipo di formato. se una sola è testo, o due sono di formati differenti, l'utente sceglie:
-di default, l'intera riga o colonna è riformattata come testo;
-è però possibile settare che almeno le celle contenenti valori o formule mantengano la loro formattazione, mentre il resto della colonna è testo, e che l'opzione sia dinamica, ovvero che compilando con una formula o un carattere di una cella vuota nella riga/colonna, dopo aver fatto la formattazione automatica, la cella che si è modificata non resti tipo testo e sia formattata a seguito della stessa analisi fatta sulle altre.
La formattazione è estesa anche alle celle contenenti formule, in base al valore ritornato al momento della formattazione automatica.
E' mostrata un'opzione "aggiorna automaticamente", che ripete la formattazione ogni volta che è modificata la cella, perchè interviene l'utente oppure cambia il valore ritornato dalla formula.