Discussione:
Calcolo giorni in un triennio.
(troppo vecchio per rispondere)
Alex
2004-10-16 10:18:07 UTC
Permalink
Salve a tutti

Dovrei creare un foglio di calcolo dei giorni di malattia
in un triennio.
Il problema consiste in questo:
inserendo un periodo di malattia per es. 20/09/2001 -
10/10/2001 uguale a giorni 21
e nella riga successiva 01/10/2004 - 31/10/2004 uguale a
giorni 31
come faccio a non conteggiare i giorni che vanno dal
20/09/2001 al 30/09/2001 essendo questi giorni oltre un
triennio dall'ultimo periodo di malattia preso
(01/10/2004 - 31/10/2004).
In pratica i giorni che ricadono nel triennio a ritroso
dell'ultimo periodo sono dal 01/10/2001 al 10/10/2001 e
dal 01/10/2004 al 31/10/2004.
Mi auguro di essre stato chiaro.
Grazie
ivano
2004-10-16 12:08:02 UTC
Permalink
Post by Alex
Salve a tutti
Dovrei creare un foglio di calcolo dei giorni di malattia
in un triennio.
inserendo un periodo di malattia per es. 20/09/2001 -
10/10/2001 uguale a giorni 21
e nella riga successiva 01/10/2004 - 31/10/2004 uguale a
giorni 31
come faccio a non conteggiare i giorni che vanno dal
20/09/2001 al 30/09/2001 essendo questi giorni oltre un
triennio dall'ultimo periodo di malattia preso
(01/10/2004 - 31/10/2004).
In pratica i giorni che ricadono nel triennio a ritroso
dell'ultimo periodo sono dal 01/10/2001 al 10/10/2001 e
dal 01/10/2004 al 31/10/2004.
Mi auguro di essre stato chiaro.
Grazie
Ciao Alex,

ho ricreato l'esempio:
| A | B | C | D |
--+----------+----------+----------------+-------+
1|inizio |fine |inizio triennio |giorni |
2| 20-set-01| 10-ott-01| 1-ott-01| 39|
3| 1-ott-04| 31-ott-04| | |

In C2 la formula:
=DATA(ANNO(SCARTO($A$1;CONTA.VALORI(A:A)-1;0))-3;MESE(SCARTO($A$1;CONTA.VALO
RI(A:A)-1;0));GIORNO(SCARTO($A$1;CONTA.VALORI(A:A)-1;0)))

la quale rileva l'ultimo inserimento nella colonna A e calcola 3 anni
addietro...

nella cella D2, invece ho inserito una formula matriciale
(CTRL+MAIUSC+INVIO):
=SOMMA(B2:B3-SE(A2:A3<=C2;$C$2;A2:A3))

che restituisce il numero di gg.
Rimane solo di perfezionare il conteggio dei gg, nel senso:
i giorni vanno conteggiati compresi gli estremi o no?
al limite c'è da aggiungere o togliere un unità.

ivano
fernando cinquegrani
2004-10-16 12:28:05 UTC
Permalink
Post by ivano
| A | B | C | D |
--+----------+----------+----------------+-------+
1|inizio |fine |inizio triennio |giorni |
2| 20-set-01| 10-ott-01| 1-ott-01| 39|
3| 1-ott-04| 31-ott-04| | |
nella cella D2, invece ho inserito una formula matriciale
=B3-A3+(B2-MAX(A2;DATA(ANNO(A3)-3;MESE(A3);GIORNO(A3))))
[il ricorso alla matrice non mi pare necessario, o sbaglio?]
.f
--
fernando cinquegrani
Microsoft MVP
http://www.prodomosua.it [il sito personale]
ivano
2004-10-16 12:37:46 UTC
Permalink
Post by fernando cinquegrani
Post by ivano
| A | B | C | D |
--+----------+----------+----------------+-------+
1|inizio |fine |inizio triennio |giorni |
2| 20-set-01| 10-ott-01| 1-ott-01| 39|
3| 1-ott-04| 31-ott-04| | |
nella cella D2, invece ho inserito una formula matriciale
=B3-A3+(B2-MAX(A2;DATA(ANNO(A3)-3;MESE(A3);GIORNO(A3))))
[il ricorso alla matrice non mi pare necessario, o sbaglio?]
.f
Ciao fernando,
tutto può essere necessario o non necessario..!

Ho preferito la formula matriciale in D2...e la formula in appoggio in C2,
solo pensando che ci potessero essere più di due intervalli di date da
esaminare, evitando in tal modo di dover ricopiare la formula per più celle.

In ogni caso non mi pare che la tua formula restituisca un valore corretto:
e i giorni dal 1-10-01 al 10-10-01 ?

ivano
fernando cinquegrani
2004-10-16 14:34:09 UTC
Permalink
Post by ivano
Ho preferito la formula matriciale in D2...e la formula in appoggio
in C2, solo pensando che ci potessero essere più di due intervalli di
date da esaminare, evitando in tal modo di dover ricopiare la formula
per più celle.
In ogni caso non mi pare che la tua formula restituisca un valore
corretto: e i giorni dal 1-10-01 al 10-10-01 ?
ci sono, ci sono...
[e anche con più intervalli ci sarebbero]
.f
http://www.prodomosua.it
ivano
2004-10-16 15:32:04 UTC
Permalink
Post by fernando cinquegrani
ci sono, ci sono...
[e anche con più intervalli ci sarebbero]
.f
Boh..probabilmente segno il tempo...ma non riesco a sfruttare la formula che
hai postato, senza dover cambiare di formula in formula tutti i
riferimenti...
Abbiate pazienza!
ivano
fernando cinquegrani
2004-10-16 15:43:45 UTC
Permalink
Post by ivano
Post by fernando cinquegrani
ci sono, ci sono...
[e anche con più intervalli ci sarebbero]
.f
Boh..probabilmente segno il tempo...ma non riesco a sfruttare la
formula che hai postato, senza dover cambiare di formula in formula
tutti i riferimenti...
può darsi che non abbia capito il problema, fai riferimento
all'esempio che ho inviato.
.f
Alex
2004-10-16 16:12:27 UTC
Permalink
-----Messaggio originale---
Post by fernando cinquegrani
ci sono, ci sono...
[e anche con più intervalli ci sarebbero]
.f
Boh..probabilmente segno il tempo...ma non riesco a
sfruttare la formula che
hai postato, senza dover cambiare di formula in formula
tutti i
riferimenti...
Abbiate pazienza!
ivano
Post by fernando cinquegrani
| A | B | C | D |
--+----------+----------+----------------+-------+
1|inizio |fine |inizio triennio |giorni |
2| 20-set-01| 10-ott-01| 1-ott-01| 39|
3| 1-ott-04| 31-ott-04| | |
nella cella D2 dovrebbe conteggiare 10 giorni e nella
cella D3 dovrebbe conteggiare 31 giorni tenuto conto dei
giorni iniziali e finali.
Ora se inserisco un ulteriore periodo, per esempio
Post by fernando cinquegrani
| A | B | C | D |
--+----------+----------+----------------+-------+
1|inizio |fine |inizio triennio |giorni |
2| 20-set-01| 10-ott-01| 1-nov-01| 0|
3| 1-ott-04| 31-ott-04| | 31|
4| 1-nov-04| 30-nov-04| | 30|
questa è la risposta che dovrebbe darmi e così via per
altri periodi
ivano
2004-10-16 16:52:19 UTC
Permalink
Post by ivano
| A | B | C | D |
--+----------+----------+----------------+-------+
1|inizio |fine |inizio triennio |giorni |
2| 20-set-01| 10-ott-01| 1-nov-01| 0|
3| 1-ott-04| 31-ott-04| | 31|
4| 1-nov-04| 30-nov-04| | 30|
questa è la risposta che dovrebbe darmi e così via per
altri periodi

Premetto che la formula da me postata precedentemente non è corretta.
Quella corretta:

=SOMMA((fine+1)-SE(inizio<=C2;fine+1;inizio))

dopo aver definito i nomi
fine: intervallo della colonna B
inizio: intervallo della colonna A

la formula è sempre matriciale...solo per dispetto al Sig. Cinquegrani.

con affetto.
ivano
fernando cinquegrani
2004-10-16 17:13:08 UTC
Permalink
Post by ivano
la formula è sempre matriciale...solo per dispetto al Sig.
Cinquegrani.
la mia non era solo per dispetto a te...ma a tutta la combriccola :-)
con affetto.
cfr:
http://groups.google.com/groups?selm=pZ5Vb.20484%24Mt6.672583%40twister2.libero.it
.f

fernando cinquegrani
2004-10-16 17:01:56 UTC
Permalink
Post by Alex
-----Messaggio originale---
nella cella D2 dovrebbe conteggiare 10 giorni e nella
cella D3 dovrebbe conteggiare 31 giorni tenuto conto dei
giorni iniziali e finali.
quindi la data limite (start) è quella d'inizio dell'ultimo periodo.
giusto?
allora, da menu:
Inserisci :: Nomi :: Definisci ...[start] si applica a...
=SCARTO(A1;CONTA.VALORI(A:A)-1;0)
[-1 perchè hai una riga d'intestazioni]
affida all'intervallo *start* la data limite.
in colonna C a partire da C2 e trascinando in basso inserisci
=MAX(0;B2-MAX(A2;DATA(ANNO(start)-3;MESE(start);GIORNO(start)))+1)
non hai bisogno della colonna D
[saltando da un ramo all'altro del thread credo che
nessuno abbia capito più di tanto; speriamo almeno
noi]
.f
fernando cinquegrani
http://www.prodomosua.it
a***@discussions.microsoft.com
2004-10-16 14:58:20 UTC
Permalink
-----Messaggio originale---
Ciao Alex,
| A | B | C | D |
--+----------+----------+----------------+-------+
1|inizio |fine |inizio triennio |giorni |
2| 20-set-01| 10-ott-01| 1-ott-01| 39|
3| 1-ott-04| 31-ott-04| | |
=DATA(ANNO(SCARTO($A$1;CONTA.VALORI(A:A)-1;0))-3;MESE
(SCARTO($A$1;CONTA.VALO
RI(A:A)-1;0));GIORNO(SCARTO($A$1;CONTA.VALORI(A:A)-1;0)))
la quale rileva l'ultimo inserimento nella colonna A e
calcola 3 anni
addietro...
nella cella D2, invece ho inserito una formula matriciale
=SOMMA(B2:B3-SE(A2:A3<=C2;$C$2;A2:A3))
che restituisce il numero di gg.
Rimane solo di perfezionare il conteggio dei gg, nel
i giorni vanno conteggiati compresi gli estremi o no?
al limite c'è da aggiungere o togliere un unità.
ivano
Grazie Ivano per la risposta.

Ora cerco di impostare il file dovendo scrivere una
tabella lunga.
I giorni conteggiati vanno compresi gli estremi, per
questo provvederò io.
Era un problema che mi portavo da tanto tempo
fernando cinquegrani
2004-10-16 15:19:22 UTC
Permalink
Post by a***@discussions.microsoft.com
-----Messaggio originale---
Ora cerco di impostare il file dovendo scrivere una
tabella lunga.
I giorni conteggiati vanno compresi gli estremi, per
questo provvederò io.
in tal caso, il numero di giorni da conteggiare per ciascun intervallo
sarà =MAX(0;datafine-MAX(datainizio;start)+1)
dove datafine è l'ultimo giorno di malattia
datainizio è il primo giorno di malattia
start è il giorno limite del conteggio, ossia, se hai il primo
intervallo in A1,
=DATA(ANNO(A1)-3;MESE(A1);GIORNO(A1))
.f
http://www.prodomosua.it
fernando cinquegrani
2004-10-16 15:40:36 UTC
Permalink
Post by fernando cinquegrani
in tal caso, il numero di giorni da conteggiare per ciascun intervallo
sarà =MAX(0;datafine-MAX(datainizio;start)+1)
dove datafine è l'ultimo giorno di malattia
datainizio è il primo giorno di malattia
start è il giorno limite del conteggio, ossia, se hai il primo
intervallo in A1,
=DATA(ANNO(A1)-3;MESE(A1);GIORNO(A1))
cioè, se ho capito l'impostazione del foglio,

A B C D
1 inizio fine giorni (start)
2 10/1/2004 10/31/2004 31 10/1/2001
3 4/12/2003 4/16/2003 5
4 9/9/2001 10/10/2001 10
5 9/9/2000 10/10/2000 0
6 totale 46

A B C D
1 inizio fine giorni (start)
2 10/1/2004 10/31/2004 =MAX(0;B2-MAX(A2;$D$2)+1) =DATA(ANNO(A2)-3;MESE(A2);GIORNO(A2))
3 4/12/2003 4/16/2003 =MAX(0;B3-MAX(A3;$D$2)+1)
4 9/9/2001 10/10/2001 =MAX(0;B4-MAX(A4;$D$2)+1)
5 9/9/2000 10/10/2000 =MAX(0;B5-MAX(A5;$D$2)+1)
6 totale =SOMMA(C2:C5)


.f
ivano
2004-10-16 15:49:28 UTC
Permalink
ok..ora è più chiaro!

ivano
Alex
2004-10-16 15:44:06 UTC
Permalink
-----Messaggio originale---
-----Messaggio originale---
in tal caso, il numero di giorni da conteggiare per
ciascun intervallo
sarà =MAX(0;datafine-MAX(datainizio;start)+1)
dove datafine è l'ultimo giorno di malattia
datainizio è il primo giorno di malattia
start è il giorno limite del conteggio, ossia,
se hai il primo
intervallo in A1,
=DATA(ANNO(A1)-3;MESE(A1);GIORNO(A1))
.f
http://www.prodomosua.it
Salve Fernando,
ho provato la tua formula è funziona correttamente,
grazie anche all'aiuto di Ivano, non capisco la
formula "=DATA(ANNO(A1)-3;MESE(A1);GIORNO(A1))" in quale
cella dovrei scriverla.
Grazie per gli interventi.
fernando cinquegrani
2004-10-16 15:54:18 UTC
Permalink
Post by Alex
Salve Fernando,
ho provato la tua formula è funziona correttamente,
grazie anche all'aiuto di Ivano, non capisco la
formula "=DATA(ANNO(A1)-3;MESE(A1);GIORNO(A1))" in quale
cella dovrei scriverla.
guarda l'esempio. in verità non è necessario che tu la scriva in una
cella,
come ti dicevo nella prima risposta puoi inserirla nella formula
=MAX(0;datafine-MAX(datainizio;DATA(ANNO($A$1)-3;MESE($A$1);GIORNO($A$1)))+1)
se la tua data ovviamente è in A1 ed è valida per tutti gli intervalli.
[qui non ho capito se la data d'inizio è unica o meno;
se spieghi meglio, ti si può aiutare meglio]
.f
http://www.prodomosua.it
Continua a leggere su narkive:
Loading...