Pagina 1 di 1

proposte di nuove funzioni e miglioramenti per Calc

Inviato: domenica 2 gennaio 2011, 13:08
da marocdea
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.

Re: funzioni per Calc: concatena testo e detaglio su sorgent

Inviato: mercoledì 5 gennaio 2011, 18:52
da marocdea
-estendere la registrazione alle modifica di stile, e ai valori vecchi associati a una certa formula.
Quando si sceglie di ripristinare una formula precedente, l'utente può scegliere al posto della formula di avere il valore calcolato al momento della registrazione, che può essere diverso da quello attuale se sono cambiati i valori delle celle associate alla formula.

-creare un menù Modifica/Modifiche/Opzioni di Registrazione, sotto a “registra”. Appare una finestra con la scritta “Registra” e le opzioni di default non flaggate “valori delle formule”, “noti” e “formattazione”. Se selezionata quest'ultima apre 3 opzioni di secondo livello: “Carattere”, “Bordo”, “sfondo”.

-modifiche alla tabella “accetta/rifiuta modifiche”: nel registro modifiche sono aggiunti questi campi:
-un campo “Oggetto” della modifica (noto, contenuto=valore/funzione; per quelle di stile: carattere, sfondo, bordi)
-un campo “storico valori”, che si può compilare se il campo oggetto per la riga di modifica è settato su “Funzione” e nelle impostazioni di registrazione si è scelto “valori delle formule”. Permette di scegliere se ripristinare una formula oppure il valore da questa calcolato al momento della registrazione.

-funzione modifica//confronta documenti
nella tabella “Accetta e annulla modifiche”che appare da Modifica/Confronta documento
-abilitare il copia/incolla;
-inserire il comando “Stampa” e “Salva con nome” per rendere esportabile il registro modifiche (almeno nei formati xls, xml, ODF, txt, data interchange format);
-iinserire un comando “Classifica” che mostra in due menù a tendina diversi operazioni su stile (formattazione carattere o cella) o su contenuto della cella (funzione/valore, noto);
-rendere le azioni “copia/incolla”, “Stampa”, “Salva con nome”, “Classifica”, “Vai a celle selezionate”, “rilevabili” dal registratore di macro;
-aggiungere un bottone in basso “Vai a celle selezionate”. Al momento la finestra “accetta o annulla modifiche”, comanda sulla selezione delle celle nel foglio Excel: cliccando sulla riga relativa a una modifica, sono selezionate nel foglio Excel le celle da questa impattate. Non è consentito il contrario, di ottenere a partire da una selezione di celle la selezione delle modifiche corrispondenti nel registro. Una delle due selezioni deve essere prevalente ed è più corretto che sia, come adesso accade, quella delle righe di registro rispetto alla selezione delle celle direttamente nel foglio Calc. Con un bottone aggiuntivo, si ottiene la selezione delle ultime modifiche apportate in ordine di tempo alla selezione di celle corrente nel foglio Calc. L''utente può accettare o annullare le ultime modifiche effettuate in ordine di tempo nelle celle che si sta selezionando, senza dover scorrere il registro delle modifiche fino ad annullare quella della cella/e in questione. Resta che Ctrl+Z annulla l'ultima modifica effettuata nel foglio Excel.

-accetta/rifiuta modifiche. Si introducono altre 2 modalità alternative: oltre a quella da registro modifiche, 1 tramite flag e una nella cella. La 3 modalità sono equivalenti, richiamabili:
con una combinazione di tasti, per essere riferite alla selezione corrente di celle
dal menù Modifica/Modifiche/Accetta o Annulla, creano le 3 opzioni: Da tabella/tramite flag/nelle celle
le altre 2 modalità sono richiamabili, dalla finestra attuale di Modifiche/Accetta o Annulla oppure da quella per la scelta tramite flag (il passaggio alla altre 2 modalità non è fattibile per la scelta direttamente nelle celle).
Dalla modalità attuale, la tabella con la descrizione delle modifiche, sono generate le informazioni per le altre 2. La modalità attuale tramite tabella=registro modifiche, e le nuove tramite flag delle modifiche o loro scelta nelle celle possono interessare sono una selezione corrente di celle, anziché l'itero registro.
Tramite flag alla scelta nel registro delle modifiche.
-combinazione di tasti personalizzabile, di default ctrl+o:.per le celle selezionate, a partire dal registro delle modifiche si genera una finestra come segue:
con 3 tipi modifiche selezionabili:
-cella,: mostra modifiche di contenuto (valori, oppure formule con valori al momento della registrazione)
-note (commento associato alla cella): solo contenuto;
-formattazione: modifiche a bordi, carattere, sfondo, tutte insieme, relative alla cella, e, se flaggato, alle note.

di default è flaggato solo “cella”.
Per ogni modifica è mostrato un flag e il risultato visivo che apparirebbe nella cella salvando la modifica, con relativa formattazione (carattere, sfondo e bordo cella), a seconda delle impostazioni di registrazione. Di default l'ordine è per: posizione crescente (riferimento cella, intervalli di celle, riga o colonna), e/poi per tipo modifica al contenuto (formula/valore) oppure, per una singola cella, alle note. Le modifiche per cella e/tipo oggetto sono ordinate dalla più recente alla meno recente:

es. cella A1
-contenuto:
-30
-=A1-A2; 3 (formula con valore al momento della registrazione modifica, e 2 flag esclusivi nella stressa riga per il ripristino di formula o del valore)
-noto:
-Prova
-Prova 2

In fondo alla finestra di Ctrl+o, sono presenti 4 bottoni per l'ordinamento dei dati, crescente di default, decrescente se si clicca sul bottone corrispondente: 2 per la classificazione delle modifiche (posizione impattata e tipo modifica a contenuto/noto) e 2 per i dati (ordine cronologico o alfabetico). Per modifiche che differiscono solo per la formattazione, come -Prova e -Prova 2, non applicandosi un ordine alfabetico, si usa quello cronologico impostato.

Per ogni posizione è selezionabile solo una modifica al contenuto e una alle note..

Direttamente nelle celle, per via grafica: nella cella sono mostrate separate da “;” i valori e le formule con relativa formattazione del carattere al momento della registrazione modifica (sempre in base alle impostazioni di registrazione e poi di visualizzazione delle modifiche). Per le formule è mostrato tra parentesi tonde il valore alfanumerico al momento del salvataggio, scelta alternativa alla formula (in quanto quello attuale calcolabile dalla formula potrebbe essere diverso da quello salvato).
Al passaggio del cursore, la modifica viene sottolineata come un link, la scelta si conferma premendo “Invio”.
Finchè non è premuto Invio, nelle altre celle selezionate restano visibili lo storico di valori e funzioni che si possono scegliere.
Per via grafica si perde la possibilità di scegliere le formattazioni alla cella (es. modifiche allo sfondo o al bordo), che appunto sono proprietà della cella e non del singolo carattere. Non è possibile nella stessa cella rappresentare graficamente due sfondi cella o due bordi oggetti di modifiche.

Macro:
-mostrare il modulo in cui è registrato il sorgente in una barra laterale del foglio Calc per:
-introdurre una barra di esecuzione, con pulsanti play, ferma/riprendi, avanti veloce e una barra di regolazione per la velocità del motore Calc delle macro, in modo da avere un'esecuzione rallentata e da vedere senza difficoltà gli effetti della macro sul file in oggetto.
-durante l'esecuzione di una macro, attivare automaticamente il registro delle modifiche (con tutte le opzioni, anche formattazione note), ripercorribile all'indietro, per quanto riguarda le modifiche ai fogli attivi (escluso quindi l'apertura di fileesterni oppure l'eliminazione di interi fogli Calc).
-durante l'esecuzione della macro, sono evidenziati, in carattere e colore sfondo a scelta, l'area di foglio Excel modificata (salvo che già si tratti di una selezione) e la parte di sorgente in esecuzione;
-consentire, durante la registrazione di macro, di visualizzare nella barra il codice sorgente mentre viene generato, in modo da vedere ogni azione sulle celle o sul mouse quali parti del codice impatta.

-introdurre per le macro una procedura di ottimizzazione del codice, richiamabile nell'ambiente di programmazione o dalla finestra di lancio delle macro. Registrata la macro elabora il codice come testo e ne restituisce un altro modificato che si può in automatico, dopo validazione dell'utente, sostituire all'eseguibile della macro di partenza. L'ottimizzazione:
-1) elimina le istruzioni:
-1a)“scroll column” che si creano col movimento della rotellina del mouse senza modifiche al foglio Calc;
-1b)istruzioni consecutive con effetti contrari riferiti alla stessa area di celle/riga/colonna. Si applica anche se la prima istruzione è riferita ad un'area di celle e la seconda a una riga o colonna che le include :

-la riga di undo ((ctrl+z quando si registra) e l'istruzione immediatamente precedente cui è riferita.
Due o più istruzioni consecutive di insert e poi delete rifertite alla stessa area di celle/riga/colonna (non il contrario delete e po insert). Vale anche per istruzioni come insert cells a1:a12 e poi delete column A, vale a dire se l'area di celle inserita è interamente poi ricompresa nella riga o colonna oggetto dell'istruzione successiva di segno opposto;
-due o più istruzioni consecutive di taglia/incolla o copia/incolla riferite alla stessa riga/colonna/area di celle;
-due o più istruzioni consecutive di inserisci valori o funzioni, oppure di modifica/sostituisci con, riferite alla stessa area di celle/riga/colonna, salvando solo l'ultima.
Se ci sono n istruzioni consecutive di formattazione della cella, elimina tutte le istruzioni alternative (ossia relative a valori dello stesso attributo come”tipo carattere” o “sfondo cella”) e per ognuna salva l'ultima.
Esempi: istruzione 1= set carattere times new roman- con sottolineatura; istruzione 2= set sfondo cella colore giallo, istruzione 3 = set carattere “arial”; istruzione 4 set sfondo cella =nero-->la funzione elimina “sfondo cella”=giallo, elimina l'istruzione 1 nella parte set carattere Times New Roman lasciando set carattere con sottolineatura e salva l'istruzione 4 set carattere“Arial”

2) unisce in un'unica istruzione e riga di codice, riferita a intervalli multipli di celle, singole istruzioni dello stesso tipo ripetute di seguito (select, insert, delete, modifica/sostituisci con, formatta) con riferimento a celle diverse (con riferimento alla stessa cella sono eliminate e ne resta1 per non avere istruzioni uguali ripetute di seguito), senza istruzioni differenti in mezzo: esempio 100 select/delete/create di seguito, e le unisce in un'unica riga di codice per la selezione/cancellazione/reazione di celle/righe o colonne.

3) riconosce dei cicli for: con una combinazione di n istruzioni consecutive del tipo select, cut, copy, paste, insert, delete, formatta e//o modifica/sostituisci purchè alternate nello stesso modo, il programma:
1. dichiara n indici tipo intero positivo x1,x2,x3... in base al numero dei tipi di istruzioni alternate;
2. dimensiona gli indici da 1 al valore massimo in base a quante iterazioni per ogni tipo di istruzione select, delete ecc. si devono effettuare (tutti gli xi hanno la stessa dimensione=stesso numero di iterazioni per tipo di istruzione, in quanto per ipotesi devono essere alternate nello stesso modo)
3. popola i vettori, assegnando a ogni indice i valori di ogni istruzione mantenendo la corrispondenza con i valori delle altre istruzioni
4. crea un ciclo for che esegue e incrementa gli indici nell'ordine in cui erano eseguite le istruzioni nella macro di partenza.

Esempio: select a1, cut a1:a20, paste c1, insert c2, delete d4
select a3:20; d4:d18, cut b1:b20, paste d1, insert d2, delete d9

il programma crea gli indici x1=select=1..2, x2=cut=1..2,x3=paste, x4=insert=1..2, x5=delete=1..3.
Poi assegna i valori in ordine: a1 e a3:a20,d4:d18 all'indice x1, i valori a1:a20 e poi b1:b20 all'indice x2...
Alla fine, crea un ciclo for con le le istruzioni select x1 e x1++, cut x2 e x2++..
La condizione di terminazione è un qualunque indice uguale alla dimensione massima.

Il riconoscimento dei cicli for è fatto soltanto dopo avere eliminato istruzioni consecutive identiche o contrarie, come previsto ai punti precedenti.

-abilitare in tutti gli argomenti testo o numerici riferibili a celle per tutte le funzioni Calc il riferimento alla selezione da intervalli multipli, a intervalli di celle non contigui, selezionabili con ctrl+shift, separati da “;. La funzione al solito è eseguita nei vari intervalli in modo posizionale, nell'ordine in cui sono stati selezionati, e all'interno degli intervalli selezionati da sx in alto a dx in basso. E' ora possibile con la somma, non con altre funzioni come il conta valori o il prodotto e quelle statistiche.

-introdurre una funzione di completamento automatico del nome funzione nelle formule, come quella di Wikipedia o di Google. La funzione si attiva quando l'utente scrive “=” come primo carattere della cella, via via che l'utente digita il nome della funzione, in modo dinamico dopo la parte scritta verso il basso si apre una tendina selezionabile, ordinata per nome crescente, con le possibili funzioni che può selezionare col mouse, o con le frecce da tastiera.
L'opzione è disponibile solo per la funzione somma, e mostra in una barra dei commenti in alto a destra il nome della funzione selezionabile con “Invio”, non in un menu a tendina gestibile col mouse.
La stessa funzione di completamento automatico è introdotta anche nella finestra del menu “Inserisci/Funzione”, con un'apposita barra di ricerca.

-introdurre una procedura di richiamo delle funzioni direttamente da una cella. Con un tasto esempio F8, oppure clic col tasto destro del mouse nella cella selezionata e un'opzione “richiama funzione”, appare a destra della cella una freccia selezionabile che richiama la finestra del menu “inserisci/funzione”.
La formula nella cella non viene cancellata e la funzione proposta ha i campi già compilati (vale per gli argomenti riferibili a celle), uguali a quelli della funzione che si stà sovrascrivendo nella cella.
Elaborare 1 argomento di n intervalli equivale alla tessa funzione con n argomenti di un solo intervallo. Perciò, se la nuova funzione selezionata non ammette la selezione di più intervalli (separati da “;”) nello stesso argomento, o peggio ammette un solo valore per argomento (il riferimento a una singola cella), gli argomenti della funzione di partenza sono “scalati” di conseguenza: la selezione multipla (b1:b8 ; d2:d10) diventerà due campi-argomenti 1=(b1:b8) e 2=(d2:10); mentre l'intervallo (b1:b8), se non è ammessa la selezione multipla di celle, nemmeno contigue, sarà scomposto in 9 argomenti di una sola cella. Il tutto fino ad esaurimento del numero massimo di argomenti ammessi per la nuova funzione.

Esempio: cella a1 con formula =somma(b1:b8; d2:d10), seleziono la cella e col tasto dx “richiama funzione” +invio o clic del mouse per espandere la freccia, seleziono la funzione “conta.se” che non prevede ancora la selezione da intervalli non contigui. Appare conta.se.argomento 1= “b1:b8”, conta.se.argomento2= “d2:d10”

Re: proposte di nuove funzioni e miglioramenti per Calc

Inviato: sabato 8 gennaio 2011, 21:57
da pescetti
Queste richieste non vanno inserite nel forum. Mi sembra che le tue richieste si dividano in due gruppi: applicazione (nuove funzioni del programma, diverse dal linguaggio di formule usato) e linguaggio (cioè nuove formule).

La parte sull'applicazione va segnalata in Issue Tracker di OpenOffice.org (una issue per ciascuna richiesta!): prima ti devi registrare al sito su http://www.openoffice.org/servlets/Join e poi puoi inserire un bug (che classificherai, al momento opportuno, come "Issue type: Enhancement") da http://qa.openoffice.org/ . Servirà tempo e può essere frustrante.

La parte di linguaggio (estensione delle funzioni) va segnalata invece come commento ad OpenFormula. Trova le specifiche (il documento che ti interessa e' la "part 2") nei file indicati in http://lists.oasis-open.org/archives/tc ... 00004.html
guarda se qualcosa non va e segnala le tue estensioni tramite questa mailing list: http://www.oasis-open.org/committees/co ... rev=office

Alla fine, puoi inserire qui i link a Issue Tracker e eventualmente ai tuoi messaggi nella mailing list di ODF/OpenFormula, così possiamo seguire gli sviluppi.

Re: proposte di nuove funzioni e miglioramenti per Calc

Inviato: domenica 9 gennaio 2011, 11:43
da marocdea
Buongiorno a tutti,
ho provato con la nuova versione Calc 3.2.1 il nuovo copia/incolla da intervalli multipli che ha però dell limitazioni, che forse si potrebbero eliminare, perchè è consentito soltanto se tutti gli intervalli iniziano e finiscono con la stesa riga, esempio:
A1:A20; D1:G20

se provate una serie di intervalli, anche con lo stesso numero di righe, ma riga iniziale differenti, esempio: A1:A20, D2:G21, vi ritornerà un msg di errore, .,.per non parlare poi se il numero di righe è differente.

Un problema come quello di copiare A1:A20 / D2:G21, si può facilmente risolvere con un ulteriore finestra con due opzioni alternative: allinea intervalli/mantieni disallineamento, di default impostata su "allinea intervalli", con l'opzione "non mostrare più questa finestra in futuro", comunque recuperabile dalle impostazioni personalizzate utente.

Nel primo caso A1:A20 / D2:G21, sarà copiato in un'unico intervallo di 5 colonne (A,D,E,F,G) e 21 righe. Nel secondo caso avremmo una selezione di 5 colonne e 22 righe, delle quali la prima riga ha solo la colonna A e i record delle altre colonne vuoti, e l'ultima riga avrà il record A22 vuoto e quelli delle altre 4 eventualmente con valori (se li aveva la tabella di origine).

Stessa estensione si può fare a questo punto per intervalli con differente numero di righe, come A1:A20, D1:G4. La funzione dimensiona una tabella m*n, che avrà il massimo fra il numero di righe e il massimo fra il numero di colonne degli intervalli, se si sceglie di allinearli. Se invece, si sceglie di mantenere il disallineamento, la tabella avrà il riferimento di riga in alto e colonna a dx più basso, e diriga in basso e colonna a sx più alti di tutti gli intervalli selezionati.

Il numero di intervalli selezionabili è a piacere.

"Mantieni disallineamento" è opzioni disponibile solo per tutti gli intervalli insieme, volendo si può complicare ancora rendendola disponibile per singoli intervalli.

2)approffitterei anche per questo post http://user.services.openoffice.org/it/ ... f=9&t=1136, per dire che per le sole funzioni matematiche-finanziarie e statistiche l'opzione per visualizzare il valore zero nelle formule al posto del msg di errore dovrebbe essere settata di default, mentre dovrebbe esserci l'opzioni opposta di ottenere un msg di errore al posto del valore zero.

Re: proposte di nuove funzioni e miglioramenti per Calc

Inviato: martedì 11 aprile 2023, 20:50
da Francesco4892
ciao io proporei di rivedere delle eventuali funzioni e aggiungere/raggruppare dentro una funzione archivio che ti permetta con un sistema simile alla funzione cerca.vert o cerca.orizz di effettuare delle operazioni riga per colonna, esempio =ARCHIVIO(area di celle; funzione colonne; righe interessate)
=ARCHIVIO(A1:L10;(A+B)*C;1:10)

altra funzione che secondo me andrebbe aggiunta è una funzione che serializza una serie di numeri esempio =SOMMA(SERIE10) ottenendo il calcolo logico SOMMA(1+2+3+4+5+6+7+8+9+10), se non ricordo male in excel più aggiornato si chiama SERIE

Re: proposte di nuove funzioni e miglioramenti per Calc

Inviato: martedì 11 aprile 2023, 21:05
da charlie
È già stato detto: il forum non è il luogo adatto per proposte riguardanti il software. Sicuramente non viene letto dagli sviluppatori. Chiudo per sempre l'argomento.