Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Formule in calc con operatori logici

1,060 views
Skip to first unread message

WildEagle

unread,
Feb 17, 2009, 1:39:43 PM2/17/09
to
Salve a tutti,
ho scritto alcune formule in calc del tipo:

A1=5
B1=6
C1=se((a1=5 e b1=6);"VERO";"FALSO");

Le formule funzionano bene ma una volta salvato il file in .ods e riaperto
le formule diventano cosě:

C1=SE((A1=5 AND B1=6);"VERO";"FALSO");

con Err:508 nella cella.

Ho risolto banalmente il problema cambiando tutti gli "E" con la
moltiplicazione "*" ma č un comportamento davvero strano. Tra l'altro il
problema non č riproducibile sempre, alcune volte lo fa, altre no.
Uso OpenOffice 3.0.1 su Vista 32 HP SP1.
Sembrerebbe un problema di traduzione degli operatori in italiano ma visto
che non lo fa sempre volevo sapere se stavo facendo io qualcosa di non
corretto.

Saluti
WildEagle

VitT

unread,
Feb 17, 2009, 3:02:16 PM2/17/09
to
>
> C1=SE((A1=5 AND B1=6);"VERO";"FALSO");
>
> con Err:508 nella cella.

Prova cosě:

=SE(E(A1=5; B1=6);"VERO";"FALSO")

Ciao VitT


martello

unread,
Feb 18, 2009, 2:55:34 AM2/18/09
to

> A1=5
> B1=6
> C1=se((a1=5 e b1=6);"VERO";"FALSO");

Io avevo già notato che la sintassi corretta prevede l'uso delle parentesi:

C1=se(((a1=5) e (b1=6));"VERO";"FALSO");

WildEagle

unread,
Feb 18, 2009, 1:39:03 PM2/18/09
to

"VitT" <vbagnara...@racine.ra.it> ha scritto nel messaggio
news:gnf546$r56$1...@nnrp.ngi.it...

>
> Prova cosě:
>
> =SE(E(A1=5; B1=6);"VERO";"FALSO")
>
> Ciao VitT
>
>

Si, la sintassi corretta del comando č quella con le parentesi. Tuttavia il
mio problema era un altro (ora non lo sta facendo piů dopo un riavvio) e
consisteva nel fatto che mi cambiava la E con AND. Misteri.

Grazie dei consigli (questo e gli altri di quando lurko)
WildEagle

VITRIOL

unread,
Feb 18, 2009, 1:41:06 PM2/18/09
to
WildEagle ha scritto:

> Tuttavia il
> mio problema era un altro (ora non lo sta facendo piů dopo un riavvio) e
> consisteva nel fatto che mi cambiava la E con AND. Misteri.

A me la tua prima sintassi proprio non funziona in nessun caso.

--
news:it-alt.comp.software.openoffice : Il newsgroup dedicato a
OpenOffice.org, la suite open source di applicazioni per ufficio.
Scarica "OpenOffice.org 3.0 Soluzioni a raccolta", molto piů di semplici
FAQ! http://it.openoffice.org/doc/manuali/

martello

unread,
Feb 18, 2009, 2:42:38 PM2/18/09
to
martello ha scritto:

Come già detto la sintassi 'da manuale' in realtà è:

=SE(E(A1=5; B1=6);"VERO";"FALSO")

ma notare che funziona anche questa:

C1=se((a1=5 e (b1=6));"VERO";"FALSO")

(notare la mancanza di parentesi nel primo operatore)

Mentre non funziona togliendo le parentesi che seguono l'operatore 'e'.

Si direbbe stranamente che l'analizzatore sintattico non faccia
distinzioni tra operatore AND e funzione AND.
Infatti si aspetta sempre la parentesi aperta.
La cosa strana è che funziona anche come operatore ...

Mi piacerebbe capire come è gestita la cosa perché la logica mi sfugge
in parte.
Sembra quasi che la funzione AND oltre a calcolare il risultato sulla
base dei parametri esegua l'AND logico sul risultato che lo precede e
questo ne giustificherebbe la parziale possibilità di uso come operatore.

Vabbuò ... non ho capito.

martello

unread,
Feb 18, 2009, 2:50:35 PM2/18/09
to

> (notare la mancanza di parentesi nel primo operatore)

Operando ... ovviamente.

L'altra ipotesi č che l'analizzatore sintattico sia stato pensato per
distinguere operatore dalla funzione ma per un bug viene segnalato un
errore di sintassi a causa della mancanza di parentesi dopo una presunta
funzione.

Nessuno ha excel sotto mano per vedere come si comporta?

Luca

unread,
Feb 18, 2009, 2:53:59 PM2/18/09
to
martello wrote:

> ((a1=5 e (b1=6))
Così non si crea ambiguità per l' operatore AND, invece se togli la
parentesi dopo la e (AND) si crea una ambiguità perchè AND tenta di
valutare 5 AND b1

Cordiali saluti. Luca


--
Per una verifica sui post da me scritti: postal...@katamail.com

martello

unread,
Feb 18, 2009, 2:56:44 PM2/18/09
to
Luca ha scritto:

> martello wrote:
>
>> ((a1=5 e (b1=6))
> Così non si crea ambiguità per l' operatore AND, invece se togli la
> parentesi dopo la e (AND) si crea una ambiguità perchè AND tenta di
> valutare 5 AND b1
>

Normalmente l'operatore logico ha priorità minore di quello di confronto.

martello

unread,
Feb 18, 2009, 2:59:11 PM2/18/09
to

> L'altra ipotesi č che l'analizzatore sintattico sia stato pensato per
> distinguere operatore dalla funzione ma per un bug viene segnalato un
> errore di sintassi a causa della mancanza di parentesi dopo una presunta
> funzione.

probabilmente č giusta quest'ultima ipotesi perchč questa da errore

=SE(( A1=0 E (B1=6;5=5));"VERO";"FALSO")

quindi l'improbabile prima ipotesi č sicuramente falsa

Luca

unread,
Feb 18, 2009, 2:59:20 PM2/18/09
to
martello wrote:

Perchè di confronto, b1 Assegna 6 (b1=6)

martello

unread,
Feb 18, 2009, 3:04:35 PM2/18/09
to

> Perchè di confronto, b1 Assegna 6 (b1=6)

Prego?

Luca

unread,
Feb 18, 2009, 3:05:20 PM2/18/09
to
martello wrote:

>
>> Perchᅵ di confronto, b1 Assegna 6 (b1=6)
>
> Prego?

Non ho capito perchᅵ di di confronto. Luca

martello

unread,
Feb 18, 2009, 3:15:45 PM2/18/09
to
Luca ha scritto:
> martello wrote:
>
>>> Perchè di confronto, b1 Assegna 6 (b1=6)
>> Prego?
>
> Non ho capito perchè di di confronto. Luca

In una espressione il simbolo di '=' è un operatore di confronto.
Solo il primo uguale della cella viene interpretato come assegnazione
della formula alla cella.
Vale così anche in molti linguaggi di programmazione quando non usano
simboli diversi per l'assegnazione ed il confronto.

Comunque tutto ciò mi crea un po' di confusione ...

Luca

unread,
Feb 18, 2009, 3:21:01 PM2/18/09
to
martello wrote:

Io di Calc e formule non ne so niente, dato il mio astio per i fogli di
calcolo, sta all' evidenza dei fatti che AND togliendo la parentesi -->(bi
ritorna un errore.

Luca

unread,
Feb 18, 2009, 3:40:11 PM2/18/09
to
martello wrote:

Tanto per chiarire, non vorrei sembrasse una presa di posizione contro di
te , quello che voglio dire è che secondo me il comportamento di OOo
rientra nella norma, meglio se con una parentesi in più, cioe' per me non è
un bug.


Cordiali saluti. Luca

martello

unread,
Feb 19, 2009, 10:10:04 AM2/19/09
to

> Tanto per chiarire, non vorrei sembrasse una presa di posizione contro di
> te

Si parla ... ognuno dice la sua ...

> quello che voglio dire è che secondo me il comportamento di OOo
> rientra nella norma, meglio se con una parentesi in più, cioe' per me non è
> un bug.

Ho provato su un excel 2000.
L'unica sintassi ammessa usa le funzioni.
Gli operatori AND e OR non sembrano esistere.

Luca

unread,
Feb 22, 2009, 4:30:56 AM2/22/09
to
martello wrote:

>
>> Tanto per chiarire, non vorrei sembrasse una presa di posizione contro di
>> te
>
> Si parla ... ognuno dice la sua ...

Si, ma siccome ero gia intervenuto in un altro tuo post ho preferito
chiarire, altrimenti và a finire che sembra che aspetto un tuo intervento
per trovare il 'pelo nell' uovo', perchè così _non è_ .

Cordiali saluti Luca

caresia

unread,
Feb 23, 2009, 6:12:08 AM2/23/09
to
>
> L'unica sintassi ammessa usa le funzioni.
>

No, sia in Calc che in Excel si possono usare gli operatori
aritmetici. Il "*" per l'AND e il "+" per l'OR che danno come
risultato 1 se Vero, 0 se Falso (e funziona dentro la funzione SE).
Ovviamente occorre mettere le parentesi perché se no hanno la priorità
sull' "=".

Ciao,
--
MC

martello

unread,
Feb 23, 2009, 6:40:27 AM2/23/09
to

> No, sia in Calc che in Excel si possono usare gli operatori
> aritmetici. Il "*" per l'AND e il "+" per l'OR che danno come
> risultato 1 se Vero, 0 se Falso (e funziona dentro la funzione SE).
> Ovviamente occorre mettere le parentesi perch� se no hanno la priorit�
> sull' "=".

Grazie per la precisazione.
Per� come tu hai gi� specificato gli operatori sono a tutti gli effetti
aritmetici anche se (assumendo che un un numero maggiore di zero � vero)
possono svolgere le funzioni di operatore logico.
Se scriviamo in una cella:

= (2=2)O(1=1)

Otteniamo un effetto diverso da:

= (2=2)+(1=1)

Io comunque mi riferivo agli operatore logici in senso stretto (scritti
come E ed O) che in OOo sembrano esistere pur con la limitazione della
parentesi mentre in excel danno un errore di sintassi.

La questione della parentesi a me puzza di bug ... come se ci fosse una
sovrapposizione, durante l'analisi sintattica, dell'uso del simbolo come
operatore e (contemporaneamente) come funzione logica.

WildEagle

unread,
Feb 23, 2009, 6:59:21 PM2/23/09
to

"martello" <"martelozzo1(martello)"@tin.it> ha scritto nel messaggio
news:49a28b2b$0$1111$4faf...@reader3.news.tin.it...


>
>> No, sia in Calc che in Excel si possono usare gli operatori
>> aritmetici. Il "*" per l'AND e il "+" per l'OR che danno come
>> risultato 1 se Vero, 0 se Falso (e funziona dentro la funzione SE).

>> Ovviamente occorre mettere le parentesi perché se no hanno la priorità
>> sull' "=".
>

Si ho ricontrollato e in origine in calc avevo messo le parentesi
correttamente ma alla chiusura e alla successiva riapertura del documento
calc mi sostituiva le E con AND dando errore. Ho risolto proprio con il * al
posto dell'AND.

> Grazie per la precisazione.
> Però come tu hai già specificato gli operatori sono a tutti gli effetti
> aritmetici anche se (assumendo che un un numero maggiore di zero è vero)

> possono svolgere le funzioni di operatore logico.
> Se scriviamo in una cella:
>
> = (2=2)O(1=1)
>
> Otteniamo un effetto diverso da:
>
> = (2=2)+(1=1)
>

L'effetto è sempre quello di dare valore logico "VERO" in quanto il valore
che ottieni è diverso da 0. Con il * hai 0 se una delle due condizioni non è
verificata mentre ottieni diverso da 0 (1 credo) quando sono verificate
entrambe. L'importante è che il valore sia diverso da 0 per essere "VERO".
Tralasciamo che ci sono linguaggi per cui 0=TRUE e !=0 FALSE :-)


> Io comunque mi riferivo agli operatore logici in senso stretto (scritti
> come E ed O) che in OOo sembrano esistere pur con la limitazione della
> parentesi mentre in excel danno un errore di sintassi.
>

Stranamente sulla versione italiana di OOo se uso AND al posto di E in una
formula mi da errore.


> La questione della parentesi a me puzza di bug ... come se ci fosse una
> sovrapposizione, durante l'analisi sintattica, dell'uso del simbolo come
> operatore e (contemporaneamente) come funzione logica.

Qualche bug potrà pure esserci, ma io ho forzato un po' la mano a OOo perché
ho 7 SE innestati uno nell'altro...

Ciao
WildEagle

0 new messages