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

Orario arrotondato ai 15 minuti successivi

1,616 views
Skip to first unread message

Franz Verga

unread,
Jun 25, 2006, 5:47:12 AM6/25/06
to
Rispondendo ad un quesito sul ng in inglese
microsoft.public.excel.worksheet.function sono pervenuto alla seguente
formula per arrotondare un qualunque orario ai 15 minuti successivi, per cui
13.14 sarà arrotondato a 13.15 e 13.15 sarà arrotondato a 13.30. Mi chiedevo
se ci fosse la possibilità di semplificarla...

=SE((cella+0,5/60/24)-(ARROTONDA(cella/(15/60/24);1/60/24)*15/60/24)>0;(ARROTONDA(cella/(15/60/24);1/60/24)*15/60/24)+15/60/24;(ARROTONDA(cella/(15/60/24);1/60/24)*15/60/24))--Ringrazio anticipatamente per tutti i contributi.CiaoFranz Verga

VeroToad

unread,
Jun 25, 2006, 5:56:59 AM6/25/06
to
Il Sun, 25 Jun 2006 11:47:12 +0200, Franz Verga ha scritto:

> formula per arrotondare un qualunque orario ai 15 minuti successivi, per cui
> 13.14 sarà arrotondato a 13.15 e 13.15 sarà arrotondato a 13.30. Mi chiedevo
> se ci fosse la possibilità di semplificarla...

[cut]

A me, ad una prima prova, è venuta questa formula
[scusa se in inglese, ma la beta è così...]

=TIME(HOUR(A1);15*ROUNDUP((MINUTE(A1)+1)/15;0);0)


--
VeroToad
http://blogs.dotnethell.it/VeroToad/

Franz Verga

unread,
Jun 25, 2006, 6:10:46 AM6/25/06
to
Nel post news:sn6lmgc3...@verotoad.FQDN
*VeroToad* ha scritto:

> Il Sun, 25 Jun 2006 11:47:12 +0200, Franz Verga ha scritto:
>
>> formula per arrotondare un qualunque orario ai 15 minuti successivi,
>> per cui
>> 13.14 sarà arrotondato a 13.15 e 13.15 sarà arrotondato a 13.30. Mi
>> chiedevo se ci fosse la possibilità di semplificarla...
> [cut]
>
> A me, ad una prima prova, è venuta questa formula
> [scusa se in inglese, ma la beta è così...]
>
> =TIME(HOUR(A1);15*ROUNDUP((MINUTE(A1)+1)/15;0);0)

Non ti preoccupare per l'inglese.

Davvero molte grazie, onestamente non avevo pensato alle funzioni ORARIO
(TIME), ORA (HOUR) e MINUTO (MINUTE).

D'altro canto non mi era mai capitato di lavorare con orari, quindi forse è
anche normale.

Comunque, davvero bella...


--
Ciao

Franz Verga


Cristiano

unread,
Jun 25, 2006, 6:40:53 AM6/25/06
to
VeroToad wrote:
> Il Sun, 25 Jun 2006 11:47:12 +0200, Franz Verga ha scritto:
>
>> formula per arrotondare un qualunque orario ai 15 minuti successivi,
>> per cui
>> 13.14 sarà arrotondato a 13.15 e 13.15 sarà arrotondato a 13.30. Mi
>> chiedevo se ci fosse la possibilità di semplificarla...
> [cut]
>
> A me, ad una prima prova, è venuta questa formula
> [scusa se in inglese, ma la beta è così...]
>
> =TIME(HOUR(A1);15*ROUNDUP((MINUTE(A1)+1)/15;0);0)

Traducendola così:
=ORARIO(ORA(A1);15*ARROTONDA.ECCESSO((MINUTO(A1)+1/15);0);0)
non funziona. Dov'è che sbaglio?

Cristiano

Inviato da X-Privat.Org - Registrazione gratuita http://www.x-privat.org/join.php

Maurizio Borrelli

unread,
Jun 25, 2006, 6:41:17 AM6/25/06
to
"Franz Verga" ha scritto nel messaggio
news:O%23w9exDm...@TK2MSFTNGP02.phx.gbl...
[...]

> formula per arrotondare un qualunque orario ai 15 minuti successivi, per
> cui 13.14 sarà arrotondato a 13.15 e 13.15 sarà arrotondato a 13.30. Mi
> chiedevo se ci fosse la possibilità di semplificarla...
> =SE((cella+0,5/60/24)-(ARROTONDA(cella/(15/60/24);1/60/24)*15/60/24)>0;(ARROTONDA(cella/(15/60/24);1/60/24)*15/60/24)+15/60/24;(ARROTONDA(cella/(15/60/24);1/60/24)*15/60/24))

Ciao, Franz.

it: =ARROTONDA.ECCESSO(A1;1/(24*4))
en: =CEILING(A1,1/(24*4))

--
Ciao :o)
Maurizio Borrelli, Microsoft Office Access MVP
-------- http://mvp.support.microsoft.com/
?SPQR(C)
X RIO - Risorse in italiano per gli utenti di office
-------- http://www.riolab.org/


Maurizio Borrelli

unread,
Jun 25, 2006, 6:48:58 AM6/25/06
to
"Cristiano" ha scritto nel messaggio
news:449e6835$1...@x-privat.org...

> VeroToad wrote:
>> Il Sun, 25 Jun 2006 11:47:12 +0200, Franz Verga ha scritto:
>>> formula per arrotondare un qualunque orario ai 15 minuti successivi,
[...]
>> =TIME(HOUR(A1);15*ROUNDUP((MINUTE(A1)+1)/15;0);0)
> Traducendola cosě:
> =ORARIO(ORA(A1);15*ARROTONDA.ECCESSO((MINUTO(A1)+1/15);0);0)
> non funziona. Dov'č che sbaglio?

Ciao, Cristiano.

ROUNDUP = ARROTONDA.PER.ECC
CEILING = ARROTONDA.ECCESSO

Vedi guida in ordine alla differenza fra le due.

VeroToad

unread,
Jun 25, 2006, 7:01:23 AM6/25/06
to
Il Sun, 25 Jun 2006 12:41:17 +0200, Maurizio Borrelli ha scritto:

> en: =CEILING(A1,1/(24*4))

Ecco qual era! :-)
Mi ricordavo una funzione che aveva come argomento la "significance" di
arrotondamento. Grazie di avermela ricordata.

Mi permetterei, seppure con un artificio un po' poco elegante, di
modificare la funzione cosě
en: =CEILING(A1+1/(24*3600);1/(24*4))

In modo tale che, ad esempio, 12:15:00 venga arrotondato a 12:30:00 cosě
come richiesto da Franz.

Ciao!

--
VeroToad
http://blogs.dotnethell.it/VeroToad/

Maurizio Borrelli

unread,
Jun 25, 2006, 7:33:16 AM6/25/06
to
"VeroToad" ha scritto nel messaggio
news:os47b5gp...@verotoad.FQDN...

> Il Sun, 25 Jun 2006 12:41:17 +0200, Maurizio Borrelli ha scritto:
>> en: =CEILING(A1,1/(24*4))
> Ecco qual era! :-)
> Mi ricordavo una funzione che aveva come argomento la "significance" di
> arrotondamento. Grazie di avermela ricordata.
> Mi permetterei, seppure con un artificio un po' poco elegante, di
> modificare la funzione cosě
> en: =CEILING(A1+1/(24*3600);1/(24*4))
> In modo tale che, ad esempio, 12:15:00 venga arrotondato a 12:30:00 cosě
> come richiesto da Franz.

Ciao, VeroToad.

Gia'...

Un altro modo di scrivere le due:

=ARROTONDA.ECCESSO(A1;ORARIO(0;15;0))

=ARROTONDA.ECCESSO(A1+ORARIO(0;1;0);ORARIO(0;15;0))

Bruno Campanini

unread,
Jun 25, 2006, 7:44:42 AM6/25/06
to
"Franz Verga" <fra...@InVento.it> wrote in message
news:O%23w9exDm...@TK2MSFTNGP02.phx.gbl...

Ma non sarebbe più logico arrotondare ai 15 successivi solo
quando l'orario non è già multiplo di 15 minuti?
12:00 => 12:00
12:01 => 12:15

così:
=TIME(HOUR(A1),15*ROUNDUP(MINUTE(A1)/15,),)

Bruno

fernando cinquegrani

unread,
Jun 25, 2006, 8:11:42 AM6/25/06
to
[Franz Verga] scrive in
http://www.google.it/groups?threadm=O%23w9exDm...@TK2MSFTNGP02.phx.gbl

in generale un arrotondamento a n minuti lo fai con
=ARROTONDA(A1/"0:15";0)*"0:15"
cfr:
http://groups.google.com/group/microsoft.public.it.office.excel/browse_frm/thread/2b90e2e2fdb1e036
un arrotondamento per eccesso con
=ARROTONDA.ECCESSO(A1;"0:15")
nel caso specifico (13:15 > 13:30) con
=INT((A1+"0:15")/"0:15")*"0:15"
.f
--
fernando cinquegrani
Microsoft MVP
http://www.prodomosua.eu


Franz Verga

unread,
Jun 25, 2006, 9:20:42 AM6/25/06
to

Il postatore originale sul ng in inglese, invece, aveva messo questo come
requisito, cioè che anche se l'orario di partenza è multiplo di 15 minuti,
bisogna arrotondare al quarto d'ora successivo.

Comunque la formula più breve l'ha postata successivamente sul ng inglese un
certo daddylongles, che mi accusava di voler usare un martello per uccidere
una formica...

Ecco la formula:

=ARROTONDA.ECCESSO(A1;"00:15")

o in inglese:

=CEILING(A1,"00:15")

formattando ovviamente in formato h:mm.


--
Ciao

Franz Verga


fernando cinquegrani

unread,
Jun 25, 2006, 9:27:45 AM6/25/06
to
[Franz Verga] scrive in
http://www.google.it/groups?threadm=O1PUqoFm...@TK2MSFTNGP02.phx.gbl

> Comunque la formula più breve l'ha postata successivamente sul ng
> inglese un certo daddylongles, che mi accusava di voler usare un
> martello per uccidere una formica...
>
> Ecco la formula:
>
> =ARROTONDA.ECCESSO(A1;"00:15")
>
> o in inglese:
>
> =CEILING(A1,"00:15")
>
> formattando ovviamente in formato h:mm.

condivido l'opinione sul martello
http://groups.google.com/group/microsoft.public.it.office.excel/browse_frm/thread/4291385620e65ab3
http://groups.google.com/group/microsoft.public.it.office.excel/browse_frm/thread/3d7f7dd93e971b32
ma la formula non risponde alla domanda.
vedi il mio post.
.f


fernando cinquegrani

unread,
Jun 25, 2006, 9:37:06 AM6/25/06
to
[fernando cinquegrani] scrive in
http://www.google.it/groups?threadm=OgINysFm...@TK2MSFTNGP02.phx.gbl

>> Comunque la formula più breve...

>> =ARROTONDA.ECCESSO(A1;"00:15")

...oltre a essere più lunga del mio
=ARROTONDA.ECCESSO(A1;"0:15")
:-)
.f

Franz Verga

unread,
Jun 25, 2006, 10:16:53 AM6/25/06
to

E che ne dici, invece, di:

=ARROTONDA.ECCESSO(A1+"0:01";"0:15")

certo non è più breve di quella con INT (essendo INT più breve come nome di
funzione...), ma forse è di più facile leggibilità, almeno per un utente
medio...

--
Ciao

Franz Verga


fernando cinquegrani

unread,
Jun 25, 2006, 10:21:39 AM6/25/06
to
[Franz Verga] scrive in
http://www.google.it/groups?threadm=%23Dn9DIG...@TK2MSFTNGP03.phx.gbl

>> =INT((A1+"0:15")/"0:15")*"0:15"
>
> E che ne dici, invece, di:
>
> =ARROTONDA.ECCESSO(A1+"0:01";"0:15")
>
> certo non è più breve di quella con INT (essendo INT più breve come
> nome di funzione...), ma forse è di più facile leggibilità, almeno
> per un utente medio...

direi che è sbagliata.
prova con 13:14:59
.f


Franz Verga

unread,
Jun 25, 2006, 10:57:13 AM6/25/06
to

Sì, in questo caso hai ragione, ma snel caso in esame gli orari di partenza
sono approssimati al minuto e non al secondo... Comunque, con orari
approssimati al secondo diventa:

=ARROTONDA.ECCESSO(B5+"0:00:01";"0:15")

e continua a farsi preferire per leggibilità... :-)

Se poi vogliamo fare i sofisticati e considerare gli orari approssimati al
centesimo di secondo, la possiamo scrivere così:

=ARROTONDA.ECCESSO(B5+"0:00:00,01";"0:15")

Comunque a proposito di ciò ho notato una cosa strana: se inserisco l'orario
con i centesimi di secondo, ad esempio 13:29:59,99, Excel lo registra
correttamente ma nella barra della formula mifa vedere solo 13:30:00.
Capisco che faccia così nella cella, a meno di formattarla nella maniera più
idonea, cioè come h:mm:ss,00, ma non capisco perché nella barra della
formula debba arrotondare e non far vedere il dato di input...

--
Ciao

Franz Verga


fernando cinquegrani

unread,
Jun 25, 2006, 11:10:56 AM6/25/06
to
[Franz Verga] scrive in
http://www.google.it/groups?threadm=%23tlZmeG...@TK2MSFTNGP02.phx.gbl

>
> =ARROTONDA.ECCESSO(B5+"0:00:01";"0:15")

ma io continuerei a dire sbagliata.
prova con
="2:29:59"/2
in A1

> e continua a farsi preferire per leggibilità... :-)

anche su questo ho forti dubbi.


> Se poi vogliamo fare i sofisticati e considerare gli orari
> approssimati al centesimo di secondo, la possiamo scrivere così:
>
> =ARROTONDA.ECCESSO(B5+"0:00:00,01";"0:15")

non vorrei dover citare zenone, franz, ma
non c'è limite alla divisibilità e l'approssimazione
della divisione e della trasformazione decimale-binario-decimale
di excel gioca assolutamente a sfavore di formule come
questa. potrebbe riservarti brutte sorprese.

> Comunque a proposito di ciò ho notato una cosa strana: se inserisco
> l'orario con i centesimi di secondo, ad esempio 13:29:59,99, Excel lo
> registra correttamente ma nella barra della formula mifa vedere solo
> 13:30:00. Capisco che faccia così nella cella, a meno di formattarla
> nella maniera più idonea, cioè come h:mm:ss,00, ma non capisco perché
> nella barra della formula debba arrotondare e non far vedere il dato
> di input...

stai superando il limite dei 15 decimali.
.f


Franz Verga

unread,
Jun 25, 2006, 11:17:06 AM6/25/06
to

Comunque, alla fine, si era trattato di una mia erronea interpretazione,
probabilmente dovuta al fatto che evidentemente qaundo ho letto il post in
inglese non avevo ancora il cervello connesso :-).

Infatti, come mi hanno fatto notare prima sul ng in inglese la domanda del
postatore originale era l'esatto contrario, in quanto la mia mega formula
gli arrotondava al quarto d'ora successivo anche gli orari precisi al quarto
d'ora, cioè: 13:15 ==> 13:30, mentre lui chiedeva che rimanessero tali...

Per cui, in definitiva, la formula più appropriata è proprio:

=ARROTONDA.ECCESSO(A1;"0:15")

Comunque, ne è scturita un'interessante discussione che mi ha fatto imparare
nuove formule... :-)

Grazie a tutti e scusate per il disturbo...


--
Ciao

Franz Verga


fernando cinquegrani

unread,
Jun 25, 2006, 11:30:20 AM6/25/06
to
[Franz Verga] scrive in
http://www.google.it/groups?threadm=OZwJtpGm...@TK2MSFTNGP02.phx.gbl

> Per cui, in definitiva, la formula più appropriata è proprio:
>
> =ARROTONDA.ECCESSO(A1;"0:15")
>
> Comunque, ne è scturita un'interessante discussione che mi ha fatto
> imparare nuove formule... :-)

allora ....
=ASS(INT(-A1/"0:15")*"0:15")
:-)
.f


fernando cinquegrani

unread,
Jun 25, 2006, 11:36:20 AM6/25/06
to
[fernando cinquegrani] scrive in
http://www.google.it/groups?threadm=uOHKMxGm...@TK2MSFTNGP04.phx.gbl

che, scritta così, è anche più corta
=-(INT(-A1/"0:15"))*"0:15"
:-)
.f


Franz Verga

unread,
Jun 25, 2006, 11:41:08 AM6/25/06
to

Scusa, ma qual è il vantaggio di cambiare di segno l'orario per poi
prenderlo in valore assoluto?

Tanto vale usare:

=INT(A1/"0:15")*"0:15"


--
Ciao

Franz Verga


fernando cinquegrani

unread,
Jun 25, 2006, 12:08:50 PM6/25/06
to
[Franz Verga] scrive in
http://www.google.it/groups?threadm=elHpI3Gm...@TK2MSFTNGP05.phx.gbl

>> allora ....
>> =ASS(INT(-A1/"0:15")*"0:15")
>> :-)
>> .f
>
> Scusa, ma qual è il vantaggio di cambiare di segno l'orario per poi
> prenderlo in valore assoluto?
>
> Tanto vale usare:
>
> =INT(A1/"0:15")*"0:15"

no, franz. ma l'hai provata?
prova con il solito 13:14:59
[poi guarda nell'help la funzione INT()]
.f


Franz Verga

unread,
Jun 25, 2006, 12:47:08 PM6/25/06
to


L'avevo provata con orari "interi", cioè approssimati al minuto tipo 13.15,
non al secondo, per cui mi erano sembrate assolutamente identiche... ;-)
Però considerando il funzionamento della funzione INT, che arrotonda per
difetto, e non sapendo a priori come siano approssimati i dati di input
(anche se sospetto che nel caso in esame, cioè quello del post in inglese,
siano approssimati al minuto, non al secondo...) la formula con ASS è
migliore...

Come al solito hai ragione... :-)

Però, per tagliare la testa al toro, secondo me sarebbe comunque da
preferire

=ARROTONDA.ECCESSO(A1;"0:15")

perché in questo modo si ha una sola chiamata di funzione e non due, per cui
in linea di principio questa dovrebbe essere più veloce, anche se non saprei
quantificare di quanto, ed oltre tutto la variazione di prestazioni non
penso sia minimamente avvertibile...


--
Ciao

Franz Verga


fernando cinquegrani

unread,
Jun 25, 2006, 3:08:46 PM6/25/06
to
[Franz Verga] scrive in
http://www.google.it/groups?threadm=OZ%23DBcHm...@TK2MSFTNGP04.phx.gbl

> L'avevo provata con orari "interi", cioè approssimati al minuto tipo
> 13.15, non al secondo, per cui mi erano sembrate assolutamente
> identiche... ;-) Però considerando il funzionamento della funzione
> INT, che arrotonda per difetto, e non sapendo a priori come siano
> approssimati i dati di input (anche se sospetto che nel caso in
> esame, cioè quello del post in inglese, siano approssimati al minuto,
> non al secondo...) la formula con ASS è migliore...

la funzione INT() arrotonda per difetto tanto i numeri
positivi che i negativi [a differenza di TRONCA()].
dall'help:
=INT(8,9) Arrotonda 8,9 per difetto (8)
=INT(-8,9) Arrotonda -8,9 per difetto (-9)

scrivere quindi
-INT(-8,9) vuol dire arrotondare per eccesso
i numeri positivi (e il tempo è solo positivo)

> Però, per tagliare la testa al toro, secondo me sarebbe comunque da
> preferire
>
> =ARROTONDA.ECCESSO(A1;"0:15")

la faccina allla fine del post, stava a significare:
'tu sottovaluti la potenza e la bellezza della funzione INT()'.
tra i motivi per cui per me è preferibile:
1. non avresti dovuto tradurre la formula [in italiano o
in inglese la funzione INT() è sempre INT()].
2. come hai visto con INT() posso troncare, arrotondare
per eccesso o per difetto senza il bisogno di altre
funzioni. più facile da ricordare quindi.
3. una formula più breve è sempre preferibile a una
più lunga.
[naturalmente :-) ]
.f

--
fernando cinquegrani
Microsoft MVP

http://www.prodomosua.it


fernando cinquegrani

unread,
Jun 25, 2006, 3:17:13 PM6/25/06
to
[fernando cinquegrani] scrive in
http://www.google.it/groups?threadm=%23K3QbrI...@TK2MSFTNGP03.phx.gbl

> la faccina allla fine del post, stava a significare:
> 'tu sottovaluti la potenza e la bellezza della funzione INT()'.
> tra i motivi per cui per me è preferibile:
> 1. non avresti dovuto tradurre la formula [in italiano o
> in inglese la funzione INT() è sempre INT()].
> 2. come hai visto con INT() posso troncare, arrotondare
> per eccesso o per difetto senza il bisogno di altre
> funzioni. più facile da ricordare quindi.
> 3. una formula più breve è sempre preferibile a una
> più lunga.

dimenticavo:
4. compatibilità con excel95 e con tutti i programmi
di foglio elettronico in circolazione e con i linguaggi
di programmazione.
.f


Maurizio Borrelli

unread,
Jun 25, 2006, 5:14:05 PM6/25/06
to
"Franz Verga" ha scritto nel messaggio
news:OZ%23DBcHm...@TK2MSFTNGP04.phx.gbl...

> fernando cinquegrani wrote:
>> [Franz Verga] scrive in
>> http://www.google.it/groups?threadm=elHpI3Gm...@TK2MSFTNGP05.phx.gbl
[...]

> secondo me sarebbe comunque da preferire
> =ARROTONDA.ECCESSO(A1;"0:15")
> perché in questo modo si ha una sola chiamata di funzione e non due, per
> cui in linea di principio questa dovrebbe essere piů veloce, anche se non
> saprei quantificare di quanto, ed oltre tutto la variazione di prestazioni
> non penso sia minimamente avvertibile...

Ciao, Franz.

Direi invece "una funzione e una conversione implicita da stringa a
numero". Che non dovrebbe essere troppo diverso da "due funzioni".

fernando cinquegrani

unread,
Jun 26, 2006, 12:33:22 AM6/26/06
to
>> L'avevo provata con orari "interi", cioč approssimati al minuto tipo

>> 13.15, non al secondo, per cui mi erano sembrate assolutamente
>> identiche... ;-) Perň considerando il funzionamento della funzione

>> INT, che arrotonda per difetto, e non sapendo a priori come siano
>> approssimati i dati di input (anche se sospetto che nel caso in
>> esame, cioč quello del post in inglese, siano approssimati al minuto,
>> non al secondo...) la formula con ASS č migliore...

>
> la funzione INT() arrotonda per difetto tanto i numeri
> positivi che i negativi [a differenza di TRONCA()].
> dall'help:
> =INT(8,9) Arrotonda 8,9 per difetto (8)
> =INT(-8,9) Arrotonda -8,9 per difetto (-9)
>
> scrivere quindi
> -INT(-8,9) vuol dire arrotondare per eccesso
> i numeri positivi (e il tempo č solo positivo)
>

chiaro? non č un problema di secondi...
13:14:00 con =INT(A1/"0:15")*"0:15"
ti avrebbe restituito 13:00:00
(approssimazione per difetto)
13:14:00 con =-INT(-A1/"0:15")*"0:15"
ti avrebbe restituito 13:15:00
(approssimazione per eccesso)

fernando cinquegrani

unread,
Jul 16, 2006, 11:03:45 AM7/16/06
to
[fernando cinquegrani] scrive in
http://www.google.it/groups?threadm=uFGhe0Gm...@TK2MSFTNGP03.phx.gbl
> che, scritta cosě, č anche piů corta

> =-(INT(-A1/"0:15"))*"0:15"

rileggendo:
che, scritta cosě, č anche piů corta
=-INT(-A1/"0:15")*"0:15"
:-)
.f


0 new messages