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