=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
> 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/
> 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
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
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/
Ciao, Cristiano.
ROUNDUP = ARROTONDA.PER.ECC
CEILING = ARROTONDA.ECCESSO
Vedi guida in ordine alla differenza fra le due.
> 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/
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))
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
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
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
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
>> Comunque la formula più breve...
>> =ARROTONDA.ECCESSO(A1;"00:15")
> 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.
...oltre a essere più lunga del mio
=ARROTONDA.ECCESSO(A1;"0:15")
:-)
.f
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
direi che è sbagliata.
prova con 13:14:59
.f
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
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
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
allora ....
=ASS(INT(-A1/"0:15")*"0:15")
:-)
.f
che, scritta così, è anche più corta
=-(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"
--
Ciao
Franz Verga
no, franz. ma l'hai provata?
prova con il solito 13:14:59
[poi guarda nell'help la funzione INT()]
.f
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
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
dimenticavo:
4. compatibilità con excel95 e con tutti i programmi
di foglio elettronico in circolazione e con i linguaggi
di programmazione.
.f
Ciao, Franz.
Direi invece "una funzione e una conversione implicita da stringa a
numero". Che non dovrebbe essere troppo diverso da "due funzioni".
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)
rileggendo:
che, scritta cosě, č anche piů corta
=-INT(-A1/"0:15")*"0:15"
:-)
.f