PDA

View Full Version : Problema con la funzione O di excel


+Benito+
31-03-2009, 12:01
Mi trovo incasinato con l'uso di O, in pratica, per poter fare quel che voglio fare, non posso più usare SE perchè ce ne sono troppi concatenati, quindi ho pensato di confrontare due condizioni con un O, in modo che se solo una delle due è verificata, il risultato debba essere VERO.

Il problema è che le due soluzioni sono collegate (non in un riferimento circolare ovviamente), ma la seconda dipende dalla prima. Quando la prima è vera, la seconda è #VALORE, quando la prima è falsa, la seconda è VERO.
Il problema è che quando si verifica la prima condizione VERO, la funzione O mi restituisce #VALORE perchè la seconda condizione è #VALORE.
C'è modo di far sì che anche se una delle due condizioni è #VALORE, la funzione O operi "correttamente", quindi restituendo VERO?

Potrei anche pubblicare l'esempio ma mi ci vorrebbero 4 pagine per spiegare come leggere il foglio di calcolo.

EnricoHU
31-03-2009, 14:29
se ho capito bene, basta che usi la funzione VAL.LOGICO
che restituisce FALSO se la cella contiene #VALORE

+Benito+
31-03-2009, 15:42
se ho capito bene, basta che usi la funzione VAL.LOGICO
che restituisce FALSO se la cella contiene #VALORE

umh....in realtà no perchè la funzione O dovrebbe restituirmi VERO in quel caso, non FALSO, perchè la prima condizione è FALSO. Però, tu dici, se metto la condizione VAL.LOGICO() fuori dalla condizione che può generare #VALORE!, in caso lo faccia mi troverei con la funzione O con il primo risultato VERO ed il secondo non più #VALORE! bensì FALSO e la cosa funzionerebbe.
Il problema è che VAL.LOGICO() non mi permette di avere mai VERO essendo il risultato della formula in esso racchiusa un numero oppure #VALORE!.
Nel caso A quindi mi trovo O(VERO;FALSO) e nel caso B mi trovo O(FALSO;FALSO) quando dovrei avere invece un responso di O pari a VERO.

EnricoHU
31-03-2009, 16:09
in effetti pensavo di usare la funzione se per unire le due condizioni

A1 B1 C1 D1
1 1 1 a

prima se - F1
=SE(A1/B1>0;VERO;FALSO)

seconda se - E1
=SE(C1/D1>0;VERO;FALSO)

unione
=SE(VAL.LOGICO(F1)=VERO;VERO;SE(VAL.LOGICO(E1)=VERO;VERO;FALSO))

+Benito+
31-03-2009, 16:59
potessi usare il SE avrei risolto, purtroppo ne anniderei troppi

EnricoHU
31-03-2009, 17:24
allora ho capito male,
pensavo che avessi diviso un SE "grosso" in due SE "piccoli" e poi uniti con un O

io ho fatto la stessa cosa usando un terzo SE

+Benito+
31-03-2009, 17:42
se ti può essere utile per darmi una mano ti passo il file, ma in privato perchè è proprietà dello studio (anche se l'ho fatto io) ;)

EnricoHU
31-03-2009, 17:46
manda pure
... comunque dovrebbero bastarmi le formule

EnricoHU
01-04-2009, 10:53
ho dato un'occhiata al file

innanzitutto credo ci sia un errore nella formula CERCA_ORIZZ: tu ad ogni riga hai dato un numero, mentre la formula cerca il numero riga progressivo

poi, credo che tu possa risolvere impostando due celle nascoste con il risultato delle formule di ricerca e impostando il SE nella cella finale

potresti anche risolvere se riuscissi ad impostare la tabella_matrice con un nome dinamico, riducendo così il numero di SE, ma, francamente, non credo di averlo mai fatto

attendo notizie ...

ciao

+Benito+
01-04-2009, 13:47
l'errore nel CERCA.ORIZ è quello di cui ti parlavo nell'email, me n'ero già accorto.
Per la prima soluzione, la più ovvia, non vorrei farlo perchè, per tenere le cose "compatte", non volevo fare riferimento a risultati in altre celle, ma fare tutta la formula lì dentro.
La versione precedente aveva nella scheda aux proprio i due spezzoni della formula di cui parli, ma non era elegante.
Dimmi un po' invece la storia della tabella dinamica, non so nemmeno cosa sia!

EnricoHU
01-04-2009, 14:18
nel foglio hai definito una tabella con nome: colonna

la funzione CERCA.ORIZZ non accetta il riferimento ad una cella nel campo tabella_matrice

se si trovasse il modo, si eviterebbero i SE(A1="colonna";colonna;.....

+Benito+
01-04-2009, 15:56
già, sarebbe la fine dei problemi e la formula verrebbe corta e leggibilissima, ma non capisco perchè non l'accetta.

Se qualcun altro passasse di qui, sapete perchè excel non accetta come matrice_tabella in cui eseguire un CERCA.ORIZZ le coordinate di una cella (ad esempio A1) in cui è contenuto un testo esattamente corrispondente al NOME (nel senso Nome-->Definisci) della matrice_tabella in cui cercare??

EnricoHU
01-04-2009, 17:07
prova con questo, in un test senza i SE ha funzionato !

=CERCA.ORIZZ(cella_rif_riga;INDIRETTO(cella_rif_tabella);cella_rif_colonna;VERO)

+Benito+
01-04-2009, 17:22
Grazie!

Non sapevo nemmeno esistesse questa funzione INDIRETTO :D

EnricoHU
01-04-2009, 17:29
nemmeno io ! :)

per problemi simili ricordavo di aver usato la funzione CELLA, ma in questo caso non funziona :mc: