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

excel problema con equazione ad una incognita e riferimento circolare

368 views
Skip to first unread message

Giovanni

unread,
May 15, 2010, 4:35:25 AM5/15/10
to
ad una cella (esempio A1) gli devo assegnare il risultato di una equazione
di questo tipo:

A1 = b + f(A1)
con "b" termine noto
e con f(A1) una "funzione di A1"
Ovviamente ottengo un errore di riferimento circolare.

Per chi si volesse interessare al mio problema indico qualitativamente cosa
dovrebbe fare f(A1):
calcolare il 10% di A1 e restituirlo: tale risultato deve essere
obbligatoriamente nel range di valori 2 e 20 (ovvero se il 10% di A1 �
inferiore a 2 deve restituire risultato "2" se � superiore a 20 deve
restituire sempre risultato "20")

Grazie

Message has been deleted

xyz xyz2

unread,
May 15, 2010, 5:16:41 AM5/15/10
to
On 15 Mag, 10:35, "Giovanni" <aldof...@gmail.com> wrote:
> ad una cella (esempio A1) gli devo assegnare il risultato di una equazione
> di questo tipo:
>
> A1 = b + f(A1)
> con "b" termine noto
> e con f(A1) una "funzione di A1"
> Ovviamente ottengo un errore di riferimento circolare.
>
> Per chi si volesse interessare al mio problema indico qualitativamente cosa
> dovrebbe fare f(A1):
> calcolare il 10% di A1 e restituirlo: tale risultato deve essere
> obbligatoriamente nel range di valori 2 e 20 (ovvero se il 10% di A1 è
> inferiore a 2 deve restituire risultato "2" se è superiore a 20 deve

> restituire sempre risultato "20")
>
> Grazie

Non puoi fare così, come tentativo? (magari non ho capito bene nè..)

Nella cella A1 inserisci GIA' il valore di A1+b precalcolato da te
Nella cella A2 inserisci il valore termine noto b (non usarlo nella
cella A1)
Nella cella A3 -> =SE(A1*0,1<2;2;SE(A1*0,1>20;20;A1*0,1))
Nella cella A4 -> =A2+A3

Ciao

Giovanni

unread,
May 15, 2010, 5:40:11 AM5/15/10
to
Grazie mille del suggerimento penso di aver risolto attivando il calcolo
iterattivo come descritto qui per eliminare i riferimenti circolari
http://office.microsoft.com/it-it/excel/HP100662431040.aspx
in pratica ho fatto similmente come indicato da te utilizzando una cella
"temporanea" che intanto mi calcola la % di A1 (tenendo conto delle
condizioni SE)
In realt� A1 � una incognita nel senso che il problema che ho riportato
potrebbe essere "parafrasato":
trovare quel valore di A1 che sottratto al 10% di A1 (percentuale soggetta
alle condizioni SE) mi da "b".

Detto cos� direi ci deve essere un modo per risolverlo senza i riferimenti
circolari, ma al momento non mi viene, in realt� il mio problema � pi�
complesso nel senso che "b" non � cos� "pulito" � una insieme di termini
noti, va a dividere anche f(A1)... insomma non � facile raggruppare tutti i
termini noti da una parte della equazione.
Magari per sfizio provo a risolvere il problema anche senza riferimenti
circolari

Giovanni

unread,
May 15, 2010, 5:56:57 AM5/15/10
to

"Giovanni" <aldo...@gmail.com> wrote in message
news:uvfFfKB9...@TK2MSFTNGP05.phx.gbl...

> In realt� A1 � una incognita nel senso che il problema che ho riportato
> potrebbe essere "parafrasato":
> trovare quel valore di A1 che sottratto al 10% di A1 (percentuale soggetta
> alle condizioni SE) mi da "b".
>
> Detto cos� direi ci deve essere un modo per risolverlo senza i riferimenti
> circolari, .....

Magari dico una cavolata ma pensandoci un po' meglio a causa di questo fatto
delle condizioni sulla percentuale mi obbliga al riferimento circolare, nel
senso riprendo l'esempio della problematica:


A1 = b + f(A1)

ovvero A1-f(A1) = b
se f(A1) fosse ad esempio semplicemente il 10% di A1 il problema si
risolverebbe senza i riferimenti circolari:
A1-A1/10 = b si risolve facilmente
Ma il fatto che devo anche calcolare quelle due condizioni SE (se minore di
2 metti risultato "2", se maggiore di 20 metti risultato "20") questa
valutazione mi obbliga al riferimento circolare, bohhhhhhhhhhhh


Scossa

unread,
May 15, 2010, 6:04:18 AM5/15/10
to
On 15 Mag, 11:56, "Giovanni" <aldof...@gmail.com> wrote:
<cut>

> A1-A1/10 = b si risolve facilmente
> Ma il fatto che devo anche calcolare quelle due condizioni SE (se minore di
> 2 metti risultato "2", se maggiore di 20 metti risultato "20") questa
> valutazione mi obbliga al riferimento circolare, bohhhhhhhhhhhh

Premesso che non ho capito molto (colpa mia), ma una volta che ai A1
un semplice

Max(2,Min(A1;20))

non risolverebbe?

Bye!
Scossa

Scossa

unread,
May 15, 2010, 6:05:59 AM5/15/10
to
On 15 Mag, 12:04, Scossa <scossa...@gmail.com> wrote:
>
> .. ma una volta che *ai* A1

*HAI* *HAI* *HAI* *HAI*


Bye!
Scossa

Giovanni

unread,
May 15, 2010, 6:17:08 AM5/15/10
to

"Scossa" <scos...@gmail.com> wrote in message
news:c18f5ffe-efa6-414c-b2d8-

> Premesso che non ho capito molto (colpa mia), ma una volta che ai A1
> un semplice
>
> Max(2,Min(A1;20))
>
> non risolverebbe?
>
> Bye!
> Scossa

No, il problema non � quello della condizione sulla percentuale, A1 �
l'incognita e anche il risultato, capisco che non si capisca :-), per
questo credo sia obbligatorio il riferimento circolare.

Per chi fosse interessato al problema me lo faccia presente che metto
maggiori dettagli, ma sinceramente non ve lo consiglio! :D

Scossa

unread,
May 15, 2010, 6:31:46 AM5/15/10
to
On 15 Mag, 12:17, "Giovanni" <aldof...@gmail.com> wrote:

> Per chi fosse interessato al problema me lo faccia presente che metto
> maggiori dettagli, ma sinceramente non ve lo consiglio! :D

Meglio e più chiaramente spieghi il problema, più facilmente potrai
trovare qualcuno interessato e disposto a contribuire alla sua
soluzione.
Se poi posti il tuo file in modo da avere davanti agli occhi lo stesso
"dipinto" ci si può intendere meglio.

Bye!
Scossa

Giovanni

unread,
May 15, 2010, 7:11:31 AM5/15/10
to
Contesto problema:
-compravendita di titoli azionari
-la banca applica una commissione sia per l'acquisto (1,9 per mille del
totale controvalore della operazione)
-la banca applica una commissione sia per la vendita (1,9 per mille del
totale controvalore della operazione)
-le commissioni di cui sopra hano un minimo e un massimo (minimo 2?, massimo
20?)

Problema: acquisto un certo numero di azioni a un certo prezzo, qual'� il
prezzo di vendita oltre il quale inizio a guadagnare? (Ovvero al netto delle
commissioni, perch� ad esempio se compero 100 azioni a 5? ciascuna e le
stesse 100 azioni le rivendo sempre a 5? ciascuna NON sono in pareggio ma in
negativo per via delle commissioni)

Dati:
Pa = Prezzo di acquisto
Q = Quantit� di azioni acquistate
Sa = Spese per l'acquisto
Sv = Spese di vendita, che come dico sotto sono in qualche modo correlate
con il Pv

Incognita:
Pv = Prezzo di vendita, corrisponde alla mia incognita ma sul quale per�
devo calcolare anche le spese di vendita! Quindi direi iterazione
obbligatoria.

La formula che ho trovato per il "punto di equilibrio" �: la differenza tra
Pv e Pa moltiplicata per la Q deve essere uguale alla somma delle spese

(Pv-Pa)*Q=Sa+Sv
isolando l'incognita Pv diventa:
Pv=Pa+(Sa+Sv)/Q

Per Pa e Q sono a posto, sono semplici termini noti e sono gli unici 2 dati
che desidero avere come input;

Per Sa ho
=SE(Pa*Q*1,9/1000>20;20;SE(Pa*Q*1,9/1000<2;2;Pa*Q*1,9/1000)) quindi sono a
posto

Per la cella che calcola Pv ci metto
=Pa+(Sa+Sv)/Q
ho il problema che Sv referenzia la stessa cella Pv, quindi per suddividere
meglio il problema uso una cella per il calcolo di Sv

Per Sv similmente a Sa ho
=SE(Pv*Q*1,9/1000>20;20;SE(Pv*Q*1,9/1000<2;2;Pa*Q*1,9/1000))

problema: la cella per il calcolo di Pv e quella per il calcolo di Sv hanno
un riferimento circolare, ho abilitato il calcolo iterativo e il problema
sembra essere risolto

Bruno Campanini

unread,
May 15, 2010, 7:29:53 AM5/15/10
to
"Scossa" <scos...@gmail.com> wrote in message
news:25a19b71-28dd-4b4e...@a16g2000vbr.googlegroups.com...

> On 15 Mag, 12:04, Scossa <scossa...@gmail.com> wrote:
>>
>> .. ma una volta che *ai* A1
>
> *HAI* *HAI* *HAI* *HAI*

Ti *anno* pestato un callo?

Bruno

Bruno Campanini

unread,
May 15, 2010, 8:19:17 AM5/15/10
to
"Giovanni" <aldo...@gmail.com> wrote in message
news:e0M9h9B9...@TK2MSFTNGP02.phx.gbl...

> Contesto problema:
> -compravendita di titoli azionari
> -la banca applica una commissione sia per l'acquisto (1,9 per mille del
> totale controvalore della operazione)
> -la banca applica una commissione sia per la vendita (1,9 per mille del
> totale controvalore della operazione)
> -le commissioni di cui sopra hano un minimo e un massimo (minimo 2?,
> massimo 20?)
[...]

Se ho capito bene:

B1 = Pua (prezzo unitario di acquisto)
B2 = Qa (quantit� acquistate)
B3 = IF(B1*B2*19/10000<2,2,IF(B1*B2*19/10000>20,20,B1*B2*19/10000))
(commissioni totali di acquisto)
B4 = B1 + B3/B2 (Cma = Costo medio di acquisto)


B6 = Puv (prezzo unitario di vendita)
B7 = Qv (quantit� in vendita)
B8 = IF(B6*B7*19/10000<2,2,IF(B6*B7*19/10000>20,20,B6*B7*19/10000))
(commissioni totali di vendita)
B9 = B6-B8/B7 (Rmv = Ricavo medio di vendita)

Ci guadagni, ci fai una patta o ci perdi B7 * (B9 - B4)
a seconda che sia B9 >=< B4

Bruno


Bruno

Giovanni

unread,
May 15, 2010, 9:10:58 AM5/15/10
to
Ciao, grazie per la risposta,
Ho seguito attentamente la tua proposta di soluzione e non fa una piega,
solamente che il mio quesito � leggermente pi� restrittivo cio� non si
conosce il prezzo di vendita, anzi sar� quello che voglio trovare.

Ho solo DUE dati in ingresso, descrivendo a parole il mio problema:
-dato il "prezzo di acquisto" e la "quantit� di azioni acquistate" E
conoscendo in che modo la banca calcola le commissioni (sia per l' acquisto
sia per la vendita)

trovare qual'� il prezzo di vendita, tale per cui, il ricavo ottenuto dalla
vendita (della totalit� delle azioni) compensa le spese sostenute nella
compravendita.


plinius

unread,
May 15, 2010, 9:34:52 AM5/15/10
to

"Giovanni" <aldo...@gmail.com> ha scritto nel messaggio
news:%23K4fRAD...@TK2MSFTNGP04.phx.gbl...

Puoi anche usare Strumenti\ricerca obiettivo... penso sia pi� chiaro e
lineare!

A1 Pa -> dato manuale
B1 Pv -> cella vuota
C1 Q -> dato manuale
D1 Sa -> =MIN(20;MAX(2;+A1*C1*1,9/1000))
E1 Sv -> =MIN(20;MAX(2;+B1*C1*1,9/1000))
F1 Utile -> =+B1*C1-A1*C1-D1-E1

Strumenti\ricerca obiettivo:
Imposta la cella F1 al valore 0 cambiando la cella B1

Ciao,
E.


Giovanni

unread,
May 15, 2010, 10:10:22 AM5/15/10
to

"plinius" <punto.l...@LEVARElibero.it> wrote >

> Puoi anche usare Strumenti\ricerca obiettivo... penso sia pi� chiaro e
> lineare!
>
> A1 Pa -> dato manuale
> B1 Pv -> cella vuota
> C1 Q -> dato manuale
> D1 Sa -> =MIN(20;MAX(2;+A1*C1*1,9/1000))
> E1 Sv -> =MIN(20;MAX(2;+B1*C1*1,9/1000))
> F1 Utile -> =+B1*C1-A1*C1-D1-E1
>
> Strumenti\ricerca obiettivo:
> Imposta la cella F1 al valore 0 cambiando la cella B1
>
> Ciao,
> E.

Veramente geniale questa soluzione, ho provato e funziona, la terr� in
considerazione, grazie!

Bruno Campanini

unread,
May 15, 2010, 1:13:51 PM5/15/10
to
"Giovanni" <aldo...@gmail.com> wrote in message
news:#K4fRAD9...@TK2MSFTNGP04.phx.gbl...

pua = prezzo unitario di acquisto (corso)
q = quantit�
sa = If[pua q 19/10000 < 2, 2,
If[pua q 19/10000 > 20, 20,
pua q 19/10000]]
(commissione di acquisto
puv = prezzo unitario di vendita (corso)

A - Per volumi di acquisto superiori in valore a
20 / (19/10000) = 10 526.31579...
la commissione � costante e uguale a 20, quindi
il prezzo unitario di acquisto � pua + 20/q.
La quotazione che ti manda in utile sar� pertanto
quella maggiore di pua + 2* 20/q

B - Per volumi di acquisto inferiori in valore a
2 / (19/10000) = 1 052.63157... la commissione
� costante e uguale a 2, quindi...
(come sopra sostituendo 2 a 20).

Per 2/(19/10000) <= valore acquisto <= 20/(19/10000)
l'equazione risolutiva (valida anche per i casi A e B) sar� :
q puv - If[puv q 19/10000 < 2, 2,
If[puv q 19/10000 > 20, 20, puv q 19/10000]]
= pua q + sa, puv]
non risolvibile analiticamente.
Puoi risolverla con un'iterazione o con una
funzione VBA:

=============================
Public Function FindPUV(pua, q)
Dim sa, k, m
pua = CDec(pua)
q = CDec(q)
If pua * q * 19 / 10000 < 2 Then
sa = CDec(2)
ElseIf pua * q * 19 / 10000 > 20 Then
sa = CDec(20)
Else
sa = CDec(pua * q * 19 / 10000)
End If
Do
k = CDec(k + 1 / 1000000)
m = CDec(q * pua * (1 + k) - _
IIf(pua * (1 + k) * q * 0.0019 < 2, _
2, IIf(pua * (1 + k) * q * 0.0019 > _
20, 20, pua * (1 + k) * q * 0.0019)))
Loop Until m >= pua * q + 2 * sa
FindPUV = m / q
End Function
============================

Bruno

Giovanni

unread,
May 15, 2010, 2:14:30 PM5/15/10
to

"Bruno Campanini" <B...@gmail.com> wrote in message
news:u7eOCIF9...@TK2MSFTNGP04.phx.gbl...


O-O Tu sei pazzo! (simpaticamente) grazie anche a te per i suggerimenti

eliano

unread,
May 15, 2010, 5:39:46 PM5/15/10
to
On 15 Mag, 20:14, "Giovanni" <aldof...@gmail.com> wrote:
> "Bruno Campanini" <B...@gmail.com> wrote in message
>
> news:u7eOCIF9...@TK2MSFTNGP04.phx.gbl...
>
>
>
>
>
> > pua = prezzo unitario di acquisto (corso)
> > q = quantità

> > sa = If[pua q 19/10000 < 2, 2,
> >         If[pua q  19/10000 > 20, 20,
> >         pua q 19/10000]]
> >        (commissione di acquisto
> > puv = prezzo unitario di vendita (corso)
>
> > A - Per volumi di acquisto superiori in valore a
> >      20 / (19/10000) = 10 526.31579...
> >      la commissione è costante e uguale a 20, quindi
> >      il prezzo unitario di acquisto è    pua + 20/q.
> >      La quotazione che ti manda in utile sarà pertanto

> >      quella maggiore di  pua + 2* 20/q
>
> > B - Per volumi di acquisto inferiori in valore a
> >      2 / (19/10000) = 1 052.63157... la commissione
> >      è costante e uguale a 2, quindi...

> >      (come sopra sostituendo 2 a 20).
>
> > Per 2/(19/10000) <= valore acquisto <= 20/(19/10000)
> > l'equazione risolutiva (valida anche per i casi A e B) sarà :
> O-O Tu sei pazzo! (simpaticamente)  grazie anche a te per i suggerimenti- Nascondi testo citato
>
> - Mostra testo citato -

Matematicamente parlando, ovviamente.:-))
No Giovanni, non lo è e non lo stuzzicare su questioni matematiche
perchè allora sei tu che corri rischi del genere.:-))
Ciao Giovanni, ciao Bruno, è sempre un piacere,
Eliano

Bruno Campanini

unread,
May 15, 2010, 6:19:02 PM5/15/10
to
"eliano" <falini...@virgilio.it> wrote in message
news:b3820afd-497d-412d...@m4g2000vbl.googlegroups.com...

> Matematicamente parlando, ovviamente.:-))
> No Giovanni, non lo � e non lo stuzzicare su questioni matematiche
> perch� allora sei tu che corri rischi del genere.:-))
> Ciao Giovanni, ciao Bruno, � sempre un piacere,

Ciao Eliano, come ti va?
Qua piove e fa freddo.
Ho riacceso questa sera il termisifone... mi verrebbe
da augurarti Buon Natale!

Bruno

eliano

unread,
May 15, 2010, 6:47:47 PM5/15/10
to
On 16 Mag, 00:19, "Bruno Campanini" <B...@gmail.com> wrote:
> "eliano" <falinieli...@virgilio.it> wrote in message

>
> news:b3820afd-497d-412d...@m4g2000vbl.googlegroups.com...
>
> > Matematicamente parlando, ovviamente.:-))
> > No Giovanni, non lo è e non lo stuzzicare su questioni matematiche
> > perchè allora sei tu che corri rischi del genere.:-))
> > Ciao Giovanni, ciao Bruno, è sempre un piacere,

>
> Ciao Eliano, come ti va?
> Qua piove e fa freddo.
> Ho riacceso questa sera il termisifone... mi verrebbe
> da augurarti Buon Natale!
>
> Bruno

Ciao Bruno,
confermo che fra Atene e Sparta non c'è differenza.:-))
Comunque pare che il freddo contribuisca al mantenimento della specie,
per cui macchè maglioni, macchè termosifoni o stufe a pellets:
iberniamoci! :-))
Auguri contraccambiati
Eliano

Scossa

unread,
May 16, 2010, 4:56:39 AM5/16/10
to
On 15 Mag, 13:29, "Bruno Campanini" <B...@gmail.com> wrote:
>
> > *HAI* *HAI* *HAI* *HAI*
>
> Ti *anno* pestato un callo?

LOL

No, il tastoo H mi *a* morso!

Bye!
Scossa

0 new messages