You are viewing a plain text version of this content. The canonical link for it is here.
Posted to utenti-it@openoffice.apache.org by "ndlsas1@inwind.it" <nd...@inwind.it> on 2012/04/18 19:17:06 UTC

[utenti] far agire il SE su un'altra cella

Posto di qua dato che in ML Libò l'argomento è fermo ma credo possa interessare
sia come soluzione che come eventuale stimolo :-)

Avevo postato questo:
%
Ci deve essere sicuramente una soluzione semplice ma proprio non mi viene...
E' possibile utilizzare un SE per riempire o una terza o una quarta cella?
In pratica, SBAGLIANDO la sintassi ma seguendo la logica mi occorrerebbe avere
una formula del tipo:
SE(A1>5; C1="XXXX";D1="XXXX") [leggendola: se a1 è maggiore di 5 allora metti 
in c1 le x, se no metti in d1 le x] (ovviamente il tutto, celle valori segni e 
compreso la formula SE, sono per pura indicazione del processo logico e non 
materialmente dei vincoli)
Esempio per spiegare cosa vorrei ottenere:
A1 è la cella discriminante (dove immettere il carattere che fa da 
spartiacque)
B1 continene il SE che deve spostare l'eventuale segno di spunta tra C1 e D1
C1 cella di destinazione
D1 cella di destinazione

Ovviamente le celle C1 e D1 non possono contenere ne formule ne altro dato che 
quella delle due non contenente le XXX dell'esempio dovrà essere scritta in 
seguito, con dati successivi.
Piccola altra complicazione: non posso usare la formattazione condizionata 
dato che questa diviene attiva DOPO che si è inserito qualcosa nella cella, 
mentre mi occorre che una delle due celle contenga il segno di eliminazione 
PRIMA di qualsivoglia digitazione. (Ovvero se ad esempio uso formattazione 
condizionata rosso e doppio barrato i caratteri del dato diverranno rossi e 
doppiobarrati DOPO che nella cella C1 sono stati scritti e si sia premuto invio 
ma a me occorre che quella cella sia interdetta o bloccata in qualche modo o 
già riempita con delle XXX PRIMA che perdano tempo a scriverci per poi 
accorgersi di aver sbagliato, cancellare e riscrivere nelle celle giuste)

Il SE computa il risultato nella sua cella, ovvero restituisce il risultato 
nella cella dov'è inserita la formula, come si fa a fargli puntare ad un'altra
casella, ovvero a fargli inserire i risultati in una casella terza?? 
% 

unica risposta
%
>Io farei così:
>In A1 metti il valore che vuoi, purché sia un numero.
>In C1 scrivi SE(A1>5;"x";"")
>In D1 scrivi SE(A1<=5;"x";"")
>Non userei B1.
>La doppia virgoletta ti lascia la cella vuota.

No, è già fatto a questa maniera e non va bene, le celle c1 e d1 DEVONO 
restare vuote dato che chi compilerà il modulo altrimenti sovrascriverà i SE 
che contengono!
Ho usato l'escamotage di fare il modulo originale in OTS (modello) in modo che 
aprano dei nuovi moduli di volta in volta, quindi riproducendo ogni volta la 
situazione originale, senza caselle con le formule sovrascritte ma non c'è 
verso, le ragazze
mi creano casini compilando i moduli successivi utilizzando il precedente già 
fatto anzichè aprendone uno nuovo e quindi nelle celle che contenevano il SE 
alla volta successiva non c'è piùla formula dato che sonos tati inseriti i dati 
e si scombina tutto il resto dei dati....

In pratica devo far compilare un elenco complesso e a seconda di cosa viene 
scritto in alcune determinate celle una serie di altre devono essere 
immediatamente riempite con delle X o interdette in modo da risultare A VISTA 
non scrivibili, mentre delle altre resteranno vuote quindi riempibili con i 
dati necessari. In questo modo prevengo gli errori e sopratutto non devo 
andarmi a ricontrollare tutti i sacrosanti dati uno per uno visto che sono una 
sfliza di valori e li sbagliano praticamente sempre...

Nel caso non se ne venga a capo con semplici formule proverò a farmi una macro 
ad hoc... anche se volevo evitare macro e sopratutto pensavo esistesse la 
possibilità di andare a modificare un valore in una cella terza anzichè per 
forza limitarsi alla combinazione cellaorigineformula=cellarisultatofinale:
tutte le formule restituiscono il controvalore nelle celle in cui sono 
scritte...
%

Ho risolto (per modo di dire) così: ho creato una serie di campi formattati 
con la barra formulario associando ad ognuno di questi la serie di macro 
necessarie a riempire o meno le celle finali.
Ma è un pasticcio e non mi piace come soluzione.
Quindi pongo un ulteriore questione: è possibile bloccare una cella 
nascondendola o comunque impedendone la scrittura se in una determinata altra 
avviene qualcosa?
Esempio:
A1 vuota
A2 vuota
A3 vuota
Scrivo 1 in A1 ed alla pressione del tasto invio il cursore si porta in A2
Scrivo 3 in A1 ed alla pressione del tasto invio il cursore si porta in A3 
saltando A2 dato che 3 è il numero scelto come discriminante.

Lo so che propongo cose di non semplice soluzione ma vedetela così: è un 
pungolo a sbirciare da nuovi punti di vista :-)

Grazie per la pazienza di aver letto sta lunghissima mail 
Angelo

---------------------------------------------------------------------
Per cancellarsi: ooo-utenti-it-unsubscribe@incubator.apache.org
Per informazioni: http://www.openoffice.org/it/
Per avviare una nuova discussione: ooo-utenti-it@incubator.apache.org
Archivi: http://mail-archives.apache.org/mod_mbox/incubator-ooo-utenti-it


Re: [utenti] far agire il SE su un'altra cella

Posted by Cesare Spaziani <ce...@gmail.com>.
Il 18/04/2012 19:17, ndlsas1@inwind.it ha scritto:
> Posto di qua dato che in ML Libò l'argomento è fermo ma credo possa interessare
> sia come soluzione che come eventuale stimolo :-)
> 
> Avevo postato questo:
> %
> Ci deve essere sicuramente una soluzione semplice ma proprio non mi viene...
> E' possibile utilizzare un SE per riempire o una terza o una quarta cella?
> In pratica, SBAGLIANDO la sintassi ma seguendo la logica mi occorrerebbe avere
> una formula del tipo:
> SE(A1>5; C1="XXXX";D1="XXXX") [leggendola: se a1 è maggiore di 5 allora metti 
> in c1 le x, se no metti in d1 le x] (ovviamente il tutto, celle valori segni e 
> compreso la formula SE, sono per pura indicazione del processo logico e non 
> materialmente dei vincoli)
> Esempio per spiegare cosa vorrei ottenere:
> A1 è la cella discriminante (dove immettere il carattere che fa da 
> spartiacque)
> B1 continene il SE che deve spostare l'eventuale segno di spunta tra C1 e D1
> C1 cella di destinazione
> D1 cella di destinazione
> 
> Ovviamente le celle C1 e D1 non possono contenere ne formule ne altro dato che 
> quella delle due non contenente le XXX dell'esempio dovrà essere scritta in 
> seguito, con dati successivi.
> Piccola altra complicazione: non posso usare la formattazione condizionata 
> dato che questa diviene attiva DOPO che si è inserito qualcosa nella cella, 
> mentre mi occorre che una delle due celle contenga il segno di eliminazione 
> PRIMA di qualsivoglia digitazione. (Ovvero se ad esempio uso formattazione 
> condizionata rosso e doppio barrato i caratteri del dato diverranno rossi e 
> doppiobarrati DOPO che nella cella C1 sono stati scritti e si sia premuto invio 
> ma a me occorre che quella cella sia interdetta o bloccata in qualche modo o 
> già riempita con delle XXX PRIMA che perdano tempo a scriverci per poi 
> accorgersi di aver sbagliato, cancellare e riscrivere nelle celle giuste)
> 
> Il SE computa il risultato nella sua cella, ovvero restituisce il risultato 
> nella cella dov'è inserita la formula, come si fa a fargli puntare ad un'altra
> casella, ovvero a fargli inserire i risultati in una casella terza?? 
> % 
> 
> unica risposta
> %
>> Io farei così:
>> In A1 metti il valore che vuoi, purché sia un numero.
>> In C1 scrivi SE(A1>5;"x";"")
>> In D1 scrivi SE(A1<=5;"x";"")
>> Non userei B1.
>> La doppia virgoletta ti lascia la cella vuota.
> 
> No, è già fatto a questa maniera e non va bene, le celle c1 e d1 DEVONO 
> restare vuote dato che chi compilerà il modulo altrimenti sovrascriverà i SE 
> che contengono!
> Ho usato l'escamotage di fare il modulo originale in OTS (modello) in modo che 
> aprano dei nuovi moduli di volta in volta, quindi riproducendo ogni volta la 
> situazione originale, senza caselle con le formule sovrascritte ma non c'è 
> verso, le ragazze
> mi creano casini compilando i moduli successivi utilizzando il precedente già 
> fatto anzichè aprendone uno nuovo e quindi nelle celle che contenevano il SE 
> alla volta successiva non c'è piùla formula dato che sonos tati inseriti i dati 
> e si scombina tutto il resto dei dati....
> 
> In pratica devo far compilare un elenco complesso e a seconda di cosa viene 
> scritto in alcune determinate celle una serie di altre devono essere 
> immediatamente riempite con delle X o interdette in modo da risultare A VISTA 
> non scrivibili, mentre delle altre resteranno vuote quindi riempibili con i 
> dati necessari. In questo modo prevengo gli errori e sopratutto non devo 
> andarmi a ricontrollare tutti i sacrosanti dati uno per uno visto che sono una 
> sfliza di valori e li sbagliano praticamente sempre...
> 
> Nel caso non se ne venga a capo con semplici formule proverò a farmi una macro 
> ad hoc... anche se volevo evitare macro e sopratutto pensavo esistesse la 
> possibilità di andare a modificare un valore in una cella terza anzichè per 
> forza limitarsi alla combinazione cellaorigineformula=cellarisultatofinale:
> tutte le formule restituiscono il controvalore nelle celle in cui sono 
> scritte...
> %
> 
> Ho risolto (per modo di dire) così: ho creato una serie di campi formattati 
> con la barra formulario associando ad ognuno di questi la serie di macro 
> necessarie a riempire o meno le celle finali.
> Ma è un pasticcio e non mi piace come soluzione.
> Quindi pongo un ulteriore questione: è possibile bloccare una cella 
> nascondendola o comunque impedendone la scrittura se in una determinata altra 
> avviene qualcosa?
> Esempio:
> A1 vuota
> A2 vuota
> A3 vuota
> Scrivo 1 in A1 ed alla pressione del tasto invio il cursore si porta in A2
> Scrivo 3 in A1 ed alla pressione del tasto invio il cursore si porta in A3 
> saltando A2 dato che 3 è il numero scelto come discriminante.
> 
> Lo so che propongo cose di non semplice soluzione ma vedetela così: è un 
> pungolo a sbirciare da nuovi punti di vista :-)
> 
> Grazie per la pazienza di aver letto sta lunghissima mail 
> Angelo
> 
> ---------------------------------------------------------------------
> Per cancellarsi: ooo-utenti-it-unsubscribe@incubator.apache.org
> Per informazioni: http://www.openoffice.org/it/
> Per avviare una nuova discussione: ooo-utenti-it@incubator.apache.org
> Archivi: http://mail-archives.apache.org/mod_mbox/incubator-ooo-utenti-it
> 
Ciao,
se decidi di abbandonare le formule (te lo consiglio!) puoi provare con
le macro!
Ti mando un esempio che utilizza un event listner.
Vedi se fa al caso tuo:

Attenzione alle righe di codice spezzate x motivi di spazio!

Global oListener, oSheet, oCell

Sub AddListenerA1
	oSheet = ThisComponent.getSheets().getByName("Foglio1")
	oCell = oSheet.getCellRangeByName("A1")
	oListener = CreateUnoListener("OOO_",
"com.sun.star.chart.XChartDataChangeEventListener")
	oCell.addChartDataChangeEventListener(oListener)
End Sub

Sub OOO_chartDataChanged
Dim aCellProtection As New com.sun.star.util.CellProtection
	oCellToLock = oSheet.getCellRangeByName("F1") 'La cella da proteggere è F1
	If oCell.getValue() > 5 Then
		oSheet.getCellRangeByName("C1").String = "XXXX"
		aCellProtection.IsLocked = true
		oCellToLock.CellProtection = aCellProtection
	Else	
		oSheet.getCellRangeByName("D1").String = "XXXX"
	End If
End Sub

Sub RemoveListnerA1
	oCell.removeChartDataChangeEventListener(oListener)
End Sub

Il funzionamento è semplice, esegui AddListnerA1 e poi prova a inserire
un valore in A1.
Se il valore inserito è maggiore di 5 scrive in C1 e blocca F1,
altrimenti scrive in D1.
Dovrebbe essere più o meno quello che ti serviva...

---------------------------------------------------------------------
Per cancellarsi: ooo-utenti-it-unsubscribe@incubator.apache.org
Per informazioni: http://www.openoffice.org/it/
Per avviare una nuova discussione: ooo-utenti-it@incubator.apache.org
Archivi: http://mail-archives.apache.org/mod_mbox/incubator-ooo-utenti-it


Re: [utenti] far agire il SE su un'altra cella

Posted by Oscar <os...@keysbabo.com>.
> Piccola altra complicazione: non posso usare la formattazione condizionata
> dato che questa diviene attiva DOPO che si è inserito qualcosa nella cella,

ciao, non so se ho compreso bene il problema, ma perché non risolverlo 
in questo modo?

1) creo uno stile di cella che lo chiamo "ERRORE" e come sfondo gli 
metto il colore rosso (così compare anche senza dover digitare e battere 
INVIO nella cella)

2) seleziono le colonne C e D e in formattazione condizionata metto: se 
la FORMULA è $A1>5 MODELLO DI CELLA "ERRORE"

che dici?

---------------------------------------------------------------------
Per cancellarsi: ooo-utenti-it-unsubscribe@incubator.apache.org
Per informazioni: http://www.openoffice.org/it/
Per avviare una nuova discussione: ooo-utenti-it@incubator.apache.org
Archivi: http://mail-archives.apache.org/mod_mbox/incubator-ooo-utenti-it


Re: [utenti] far agire il SE su un'altra cella

Posted by Paolo Pedaletti <pa...@openlabs.it>.
Ciao,
personalissima opinione:
stai sbagliando.

a meno di complicarsi la vita con macro, le formule (che io sappia) non
"iniettano" valori in celle diverse da quelle che le contengono.

Io tengo tracciate le telefonate che faccio, scaricando periodicamente
il file log dal gestore del contratto del cellulare.
Il formato del file non e' come lo voglio io, e poi con quei dati faccio
delle statistiche, quindi lo devo manipolare profondamente.

Ho fatto cosi'
All'interno di un file, ho 4 fogli
nel primo importo il file di log CSV
nel secondo ho le formule nelle celle corrispondenti che mi mettono i
dati nel formato che dico io
(foglio2.A1 contiene la formula o la formattazione della cella foglio1.A1)
nel terzo ho lo storico, che aggiorno copiando e accodando i dati presi
dal secondo foglio, e con il quale aggiorno le statistiche (pivot) nel
quarto foglio

in pratica uso il secondo foglio come filtro (che non modifico quasi mai)

il flusso di lavoro consiste in:
1) importo il file csv
2) vado sul secondo foglio e copio le celle che mi interessano
3) incollo i valori nel terzo foglio, aggiungendoli a quelli esistenti
4) aggiorno la tabella pivot

tu potresti fermarti al secondo passaggio.

Le celle del 2 e 3 foglio potrebbero essere bloccate
i fogli potrebbero chiamarsi in modo esplicito, per rendere evidente
dove andare a scrivere i dati e dove andare a leggerli

Piu' di cosi' non so...

ciao

-- 
Paolo Pedaletti
www.openlabs.it
http://www.ecis.eu/documents/Finalversion_Consumerchoicepaper.pdf
http://linguistico.sourceforge.net/pages/traduzioni/ms_illegal.html


---------------------------------------------------------------------
Per cancellarsi: ooo-utenti-it-unsubscribe@incubator.apache.org
Per informazioni: http://www.openoffice.org/it/
Per avviare una nuova discussione: ooo-utenti-it@incubator.apache.org
Archivi: http://mail-archives.apache.org/mod_mbox/incubator-ooo-utenti-it