Ciao,
soluzione estrema: perché no una macro?
Ammetto di non avere particolare familiarità con le macro di LibreOffice (usate molto raramente), mi pare di ricordare però che si possa programmare in ambiente python in modo abbastanza flessibile.
Ora, si potrebbe fare una macro associata alla pressione di un bottone che, posizionato il cursore su una certa colonna, chieda all'utente la formula, acquisisca il numero di righe occupate in A con un ciclo e replichi la formula sullo stesso numero di righe della colonna selezionata. Chiaramente la cosa è eventualmente da estendere se si richiede di gestire colonne diverse dalla A. Mi pare di ricordare che si possa anche aggiungere un event listener se i dati di una certa colonna vengono aggiornati, in modo eventualmente da aggiungere/togliere elementi in fondo (se arriva da un db probabilmente basta ascoltare l'ultima cella piena e la prima vuota).
A questo link ho visto degli esempi carini:
http://christopher5106.github.io/office/2015/12/06/openoffice-libreoffice-au...
Spero ci siano altre soluzioni meno drastiche.
Buona serata :)
Giacomo
On 30/11/2017 18:24, Chris Mair wrote:
Ciao,
chiedo per un amico... :)
LO Calc 5.3.7.2.
Supponiamo di avere dei dati nella colonna A. Questi dati sono stati inseriti tramite database range.
L'altezza del database range e` dinamica, nel senso che i valori vanno dalla cella A1 alla cella A<N> dove <N> varia a seconda dek conteggio di valori prodotto dalla query sottostante.
Ora vorrei - ehm - il mio amico vorrebbe - calcolare i valori della colonna B a partire da valori di A. Per esempio con una formula del tipo:
=A1 * 2 + $X$7
da entrare in B1 e da copiare (presumo?).
La domanda da 6 bitcoin e`: come faccio a fare eseguire questa formula da B1 a B<N> dove <N> e` la riga fino a dove arrivano il valori nella colonna A?
Googlando tutti dicono "no es problema, semplicemente copia la formula su *tutta* *la* *colonna*. Ora questo funziona pure - a quanto pare LO ha un fisso di 2^20 righe...
Solo che produce un documento gonfiato e lento. Sono 3 MB di ods che contiene 250 MB di xml zippato...
Dal mio punto di vista e` una soluzione completamente assurda e inaccettabile. E` come se in un linguaggio di programmazione tutti gli array fossere lunghi 2^20 elementi a prescindere dall'effettiva lunghezza e per ripetere un'operazione l'unico strumento fosse un ciclo da 1 a 2^20 senza possibilita` di avere un limite dinamica...
Mi pare che ci deve essere un modo piu` furbo.
Qualcuno ha un idea o e` proprio un limite intrinseco dello strumento foglio di calcolo?
F.A.Q.
Q: Ma perche` non aggiungi le colonne in SQL e fai il calcolo li`? A: Perche` la formula contiene (tanti) riferimenti a altre celle che non risiedono nel DB (tipo $X$7 nell'esempio sopra).
Q: Ma perche` non te ne freghi e` accetti il file grosso? I dischi costan poco! A: In realta` ho parecchie colonne, verrebbe un file enorme e lentissimo...
Q: Ma perche` non copi la formula solo tipo fino alle riga 1000? Non avrai tanti valori no? A: le mie colonne hanno altezze molte variabili da 100 a 100000, a farle tutte alte anche "solo" 100000 gia` porterebe a problemi di dimensione.
Q: Ma perche` non fai tutto in SQL? A: Il tutto dovrebbe essere semi-interattivo, e programmarci una GUI sopra rischia di essere molto laborioso.
Q: Ma perche` non aggreghi i dati via SQL prima di importarli? A: Eh... per alcune colonne sarebbe anche imaginabili, ma non per tutte :(
Bye, Chris.