Discussione:
Arrotondamenti
(troppo vecchio per rispondere)
Max
2005-07-24 09:15:02 UTC
Permalink
Ho il seguente problema per il quale non sono riuscito a trovare la soluzione
sul manuale (ovviamente per mie carenze).
Ho una tabella piuttosto grande che contiene valori in € espressi con 2
decimali.
Dovrei arrotondare tutti i valori della tabella all'euro superiore o
inferiore a seconda che il valore dei decimali sia maggiore o minore di ,51.
Qualcuno può indicarmi il percorso .... grazie.
saoche
2005-07-24 10:21:44 UTC
Permalink
Post by Max
Ho il seguente problema per il quale non sono riuscito a trovare la soluzione
sul manuale (ovviamente per mie carenze).
Ho una tabella piuttosto grande che contiene valori in € espressi con 2
decimali.
Dovrei arrotondare tutti i valori della tabella all'euro superiore o
inferiore a seconda che il valore dei decimali sia maggiore o minore di ,51.
Qualcuno può indicarmi il percorso .... grazie.
Cerca la funzione ARROTONDA() sulla guida in linea.

Ciao
--
...saoche[at]despammed[dot]com
Bruno Campanini
2005-07-24 12:46:23 UTC
Permalink
Post by Max
Ho il seguente problema per il quale non sono riuscito a trovare la
soluzione sul manuale (ovviamente per mie carenze).
Ho una tabella piuttosto grande che contiene valori in € espressi con 2
decimali.
Dovrei arrotondare tutti i valori della tabella all'euro superiore o
inferiore a seconda che il valore dei decimali sia maggiore o minore di ,51.
Qualcuno può indicarmi il percorso .... grazie.
L'arrotondamento con l'Euro prevede che 0.50 vada ad uno.
Quindi la funzione Excel ROUND() (ARROTONDA()) va ben bene.
Non altrettanto bene la funzione ROUND() di VBA.

Bruno
saoche
2005-07-24 14:44:26 UTC
Permalink
Nella news: <z4MEe.2865$***@news4.tin.it>
il 24/07/2005 Bruno Campanini ha scritto:
[...]
Post by Bruno Campanini
L'arrotondamento con l'Euro prevede che 0.50 vada ad uno.
Quindi la funzione Excel ROUND() (ARROTONDA()) va ben bene.
Non altrettanto bene la funzione ROUND() di VBA.
[...]

Strano comportamento.
Poco male, si può ovviare sottraendo od aggiungendo 0,01 alle due
funzioni per ottenere l'arrotondamento desiderato.

Ciao
--
...saoche[at]despammed[dot]com
fernando cinquegrani
2005-07-24 15:44:59 UTC
Permalink
[saoche] scrive in
Post by saoche
Strano comportamento.
Poco male, si può ovviare sottraendo od aggiungendo 0,01 alle due
funzioni per ottenere l'arrotondamento desiderato.
un po' male è. dicevo che queste funzioni sono *sporche*
perche 1,50999 verrebbe arrotondato a 1 non a 0 e se il
valore viene da una formula questa è una situazione normale.
.f
saoche
2005-07-24 18:16:55 UTC
Permalink
Post by fernando cinquegrani
[saoche] scrive in
Post by saoche
Strano comportamento.
Poco male, si può ovviare sottraendo od aggiungendo 0,01 alle due
funzioni per ottenere l'arrotondamento desiderato.
un po' male è. dicevo che queste funzioni sono *sporche*
perche 1,50999 verrebbe arrotondato a 1 non a 0 e se il
valore viene da una formula questa è una situazione normale.
.f
Ciao fernando,
non credo di aver capito cosa intendi con *sporca*, se non ho preso un
abbaglio:

- arrotonda(1,50999;0)=2
con l'euro, come ricordato da Bruno Campanini, si utilizza
l'arrotondamento matematico, quindi la funzione ARROTONDA() va
benissimo, ma Max, lecito o meno, dice di voler arrotondare con un
altro modo, più simile a come si faceva con la lira, cioè 1,50=1 e
1,51=2, quindi:

- arrotonda(1,50999-0,01;0)=1

anzi, meglio:

- SEGNO(1,50999)*ARROTONDA(ASS(1,50999)-0,01;0)

così funziona anche con i numeri negativi.

Ciao
--
...saoche[at]despammed[dot]com
fernando cinquegrani
2005-08-02 06:34:46 UTC
Permalink
Post by saoche
Ciao fernando,
non credo di aver capito cosa intendi con *sporca*, se non ho preso un
- arrotonda(1,50999-0,01;0)=1
scusami saoche, non avevo letto la tua
risposta/domanda.
dicevo:
se il valore proviene da una formula,
situazione normale in excel, il rischio
di errore è particolarmente alto.
es.:
in A1
0,51
in B1
=arrotonda(A1-0,01;0) darà 1
in A2
16,511
in A3
=A2-16,001 fornirà il risultato
corretto, ossia 0,51
ma in B3
=arrotonda(A3-0,01;0) darà 0.
ma come è possibile?
sono funzioni 'sporche', appunto.
.f
fernando cinquegrani
2005-08-02 08:24:45 UTC
Permalink
Post by fernando cinquegrani
Post by saoche
Ciao fernando,
non credo di aver capito cosa intendi con *sporca*, se non ho preso un
- arrotonda(1,50999-0,01;0)=1
scusami saoche, non avevo letto la tua
risposta/domanda.
se il valore proviene da una formula,
situazione normale in excel, il rischio
di errore è particolarmente alto.
meglio:
in A1 15,511
in B1 16,511
in A2 =A1-15,001
in B2 =B1-16,001
in A3 =arrotonda(A2-0,01) ti darà 1
in B3 =arrotonda(B2-0,01) ti darà 0
Post by fernando cinquegrani
ma come è possibile?
sono funzioni 'sporche', appunto.
.f

fernando cinquegrani
2005-07-24 10:31:16 UTC
Permalink
[Max] scrive in
Post by Max
Ho il seguente problema per il quale non sono riuscito a trovare la
soluzione sul manuale (ovviamente per mie carenze).
Ho una tabella piuttosto grande che contiene valori in ? espressi con
2 decimali.
Dovrei arrotondare tutti i valori della tabella all'euro superiore o
inferiore a seconda che il valore dei decimali sia maggiore o minore
di ,51. Qualcuno può indicarmi il percorso .... grazie.
di solito si utilizza =ARROTONDA(A1;0) ma questa arrotonda
lo 0,50 all'1 non allo 0.
per arrotondamenti diversi devi guardare
http://support.microsoft.com/kb/196652/EN-US/.
una funzione *sporca* che arrotonda 0,50 allo 0 e 0,51 all'1
potrebbe essere =INT(A1+0,499).
.f
Loading...