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

Giorni festivi

1,114 views
Skip to first unread message

silvioco

unread,
Apr 28, 2010, 8:06:02 AM4/28/10
to
Windows Xp - Excel 2003
Gradirei un aiuto circa una formula per calcolare le presenze nei giorni
festivi (sabato e domenica compresi) effettuate dal personale nel corso del
mese.
Ho predisposto il foglio nel modo seguente:
(E2 ÷ AI2) con 31 celle formato "g"
(E3 ÷ AI3) con 31 celle formato "ggg"
(E4 ÷ AI47) per l'nserimento delle ore di straordinario
(AJ4 ÷ AJ47) le formule per la determinazione delle presenze di ore lavorate
nelle giornate di sabato, domenica e festivi, poichè in tal caso verrebbero
conteggiati il viaggio e la presenza supplementari.
La formula nella cella (AJ4):
=SE(AG$2>FINE.MESE($E2;0);MATR.SOMMA.PRODOTTO((RESTO($E$2:$AF$2;7)<2)*(E4:AF4>0));SE(AH$2>FINE.MESE($E2;0);MATR.SOMMA.PRODOTTO((RESTO($E$2:$AG$2;7)<2)*(E4:AG4>0));SE(AI$2>FINE.MESE($E2;0);MATR.SOMMA.PRODOTTO((RESTO($E$2:$AH$2;7)<2)*(E4:AH4>0));SE(AI$2=FINE.MESE($E2;0);MATR.SOMMA.PRODOTTO((RESTO($E$2:$AI$2;7)<2)*(E4:AI4>0))))))
ma così mi calcola solo i giorni che cadono di sabato e domenica mentre
gadirei che mi sommasse anche le eventuali presenze nei giorni festivi
infrasettimanali.
Alle suddette celle è stata applicata la formattazione condizionale per il
riconoscimento dei giorni festivi, del sabato, della domenica e della
festività del santo patrono.
Ho provato varie formule ma fino ad adesso non ho risolto, un grazie
anticipato.
N.B. : Se fosse utile posso allegare il foglio excel.

Andrea

unread,
Apr 28, 2010, 2:10:01 PM4/28/10
to
come hai fatto la formattazione condizionale per il sabato, domenica ecc?

Cmq, ti serve una macro
ad esempio:

dim somma as integer
dim data as date

data = Format(Range("A1"), "dddd")
If data = "sabato" or data = "domenica" Then
exit sub
End If
somma = range("A1") + range("A2")
end sub

la formula SE è limitata, con una macro puoi fare migliaia di verifiche
senza problemi
il punto è che se usi ad esempio colori nelle celle (il patrono in verde,
sabato in blu, domenica in giallo...) una macro ti può riconoscere anche i
vari colori e le vie sono davvero tante per fare tutti i tuoi calcoli
ma dovresti essere più specifico e digitare un piccolo esempio da poter
elaborare (tempo permettendo)

Ciao

"silvioco" ha scritto:

elby

unread,
Apr 28, 2010, 4:27:42 PM4/28/10
to
Non serve affatto una macro VBA
Un esempio
in C1 l'anno corrente
in F1 numero di mese
in B3 : =DATA($C$1;$F$1;1)
in 12 celle incollonate da qualche parte:
=DATA($C$1;1;1)
=DATA($C$1;1;6)
=DATA($C$1;4;25)
=DATA($C$1;5;1)
=DATA($C$1;6;2)
=DATA($C$1;8;15)
=DATA($C$1;11;1)
=DATA($C$1;12;8)
=DATA($C$1;12;25)
=DATA($C$1;12;26)
=DATA($C$1;6;29) 'esempio di data patrono
=(ARROTONDA.DIFETTO(DATA(C1;5;GIORNO(MINUTO(C1/38)/2+56));7)-34)+1
'pasquetta
Denominare l'intervallo delle 12 cellecon per es SerieFestivi

in B6 = B3
in C6 = B6 + 1 da trascinare con riferimento relativo fino a fino a
AC6
in AD6 =SE(MESE($B$6)<MESE($B$6+28);"";$B$6 + 28)
in AE6 =SE(MESE($B$6)<MESE($B$6+29);"";$B$6 + 29)
in AF6 =SE(MESE($B$6)<MESE($B$6+30);"";$B$6 + 30)
in B5
=SE(E(GIORNO.SETTIMANA(B6;2)<6;VAL.NON.DISP(CONFRONTA(B6;SerieFestivi;
0)));0;1)
trascinare la formula in B5 von rif relativo fino a AC5
in AD5
=SE(VAL.ERR(E(GIORNO.SETTIMANA(AD6;2)<6;VAL.NON.DISP(CONFRONTA(AD6;SerieFestivi;
0))))=VERO;-1;SE(E(GIORNO.SETTIMANA(AD6;2)<6;VAL.NON.DISP(CONFRONTA(AD6;SerieFestivi;
0)));0;1))

trascinare la formula in AD5 con rif relativo fino a AF5
nella riga 7 puoi riportare le date del mese con il formato per es
gggg
Se si desidera si può ora fare una formattazione condizionale
utilizzando la formula
=B$5=1
nella riga 7 puoi riportare le date del mese con il formato per es
gggg
riferita per es all'area B5:AF7
Ora è possibile qualsiasi calcolo ( anche matriciale ) che testa la
presenza del valore 1 nelle celle della riga 5 ( che può essere
tranquillamente nascosta )
per es
se nell'ottava riga vi sono le ore di straordinario si può applicare
una tariffa di straordinario festivo ( nel nostro caso comprensivo del
sabato assunto non lavorativo ) con una formula del tipo:
in B9: =SE(B5 = 1;B8*20;SE(B5=0;B8*16;0))

Spero di asserti stato di aiuto
Elio

> > =SE(AG$2>FINE.MESE($E2;0);MATR.SOMMA.PRODOTTO((RESTO($E$2:$AF$2;7)<2)*(E4:A­F4>0));SE(AH$2>FINE.MESE($E2;0);MATR.SOMMA.PRODOTTO((RESTO($E$2:$AG$2;7)<2)­*(E4:AG4>0));SE(AI$2>FINE.MESE($E2;0);MATR.SOMMA.PRODOTTO((RESTO($E$2:$AH$2­;7)<2)*(E4:AH4>0));SE(AI$2=FINE.MESE($E2;0);MATR.SOMMA.PRODOTTO((RESTO($E$2­:$AI$2;7)<2)*(E4:AI4>0))))))  


> > ma così mi calcola solo i giorni che cadono di sabato e domenica mentre
> > gadirei che mi sommasse anche le eventuali presenze nei giorni festivi
> > infrasettimanali.
> > Alle suddette celle è stata applicata la formattazione condizionale per il
> > riconoscimento dei giorni festivi, del sabato, della domenica e della
> > festività del santo patrono.
> > Ho provato varie formule ma fino ad adesso non ho risolto, un grazie
> > anticipato.

> > N.B. : Se fosse utile posso allegare il foglio excel.- Nascondi testo citato
>
> - Mostra testo citato -

silvioco

unread,
Apr 29, 2010, 4:25:01 AM4/29/10
to
Grazie elby, ho adattato i tuoi suggerimenti al mio foglio excel e funziona
ma, forse perchè non mi sono spiegato bene prima, così mi ritorna il valore
"1" se il valore della cella è maggiore di zero e se è un giorno festivo. In
questo caso, però, avrei bisogno di 2 righe per dipendente, una per le
formule e una per l'inserimento delle ore di straordinario. Il foglio però ha
vari collegamenti ad altri fogli e non vorrei scombinare tutto. A me
basterebbe che nella 32.a colonna mi sommasse i valori dei 31 giorni solo a
condizione che i valori delle singole celle (1-31) siano maggiore di zero e
cadono in un giorno festivo. Mi puoi aiutare?
Se vuoi ti posso mandare tramite e-mail la bozza del mio foglio excel.
Grazie ancora.
Silvio

"elby" ha scritto:

> .
>

elby

unread,
Apr 29, 2010, 4:44:05 PM4/29/10
to
Hai solo bisogno di una formula matriciale.
Se le formule che restituiscono 1 per festivo, 0 per lavorativo e -1
per giorno inesistente ( per 31 giugno, 30 febbraio, ecc ) si trovano
per es nella seconda riga
In AJ4:
=SOMMA(($E$2:$AI$2= 1)*(E4:AI4>0))
da inserire come matriciale con uso di Maiusc + Ctrl + Invio
Trascinare la formula in AJ4 fino ad AJ47
Se invece la riga delle formule è altrove adatta la nidificazione $E
$2:$AI$2 = 1
in relazione alla riga

Ciao Elio

Ora On 29 Apr, 10:25, silvioco <silvi...@discussions.microsoft.com>
wrote:

> > =SE(VAL.ERR(E(GIORNO.SETTIMANA(AD6;2)<6;VAL.NON.DISP(CONFRONTA(AD6;SerieFes­tivi;
> > 0))))=VERO;-1;SE(E(GIORNO.SETTIMANA(AD6;2)<6;VAL.NON.DISP(CONFRONTA(AD6;Ser­ieFestivi;

> > > > =SE(AG$2>FINE.MESE($E2;0);MATR.SOMMA.PRODOTTO((RESTO($E$2:$AF$2;7)<2)*(E4:A­­F4>0));SE(AH$2>FINE.MESE($E2;0);MATR.SOMMA.PRODOTTO((RESTO($E$2:$AG$2;7)<2­)­*(E4:AG4>0));SE(AI$2>FINE.MESE($E2;0);MATR.SOMMA.PRODOTTO((RESTO($E$2:$AH­$2­;7)<2)*(E4:AH4>0));SE(AI$2=FINE.MESE($E2;0);MATR.SOMMA.PRODOTTO((RESTO($­E$2­:$AI$2;7)<2)*(E4:AI4>0))))))  

silvioco

unread,
Apr 30, 2010, 4:45:01 AM4/30/10
to
Grazie elby, funziona.
Alla prossima.
Silvio

ignazioan...@gmail.com

unread,
Feb 11, 2014, 6:01:41 PM2/11/14
to
Ciao Elio
ho letto questa tua risposta alla domanda di silvioco e trovo che nella sua "chiarezza" è semplicemente geniale a dispetto di tanti altri cosidetti suggerimenti di altrettanti "cosidetti" esperti in giro per la rete. Per questo da assoluto inesperto in excel ho provato a mettere su excel le tue indicazioni rispettando persino le celle da te indicate. Perfetto ; ho realizzato quello che stavo cercando. Ma da inesperto quale sono ti faccio una domanda sicuramente banale ma ke non riesco a comprendere. Come detto ho realizzato quanto da te suggerito e mi è venuto tutto ok, ma quando ho cercato di realizzare il tutto su un foglio in cui l'unica variazione è stata quella della dimensioni della larghezza delle celle (per fare rientrare il tutto su un unico foglio come serve a me e mantenendo ripeto i riferimenti alle celle che hai dato tu) allora non mi riesce più a fare considerare festivi i festivi infrasettimanali. Applico la formula da te suggerita ( ho variato solo il<6 con <7 in modo da considerare i sabati lavorativi) e se lascio la larghezza celle di defaulto tutto riesce bene , ma se la restringo allora la formula mi calcola solo le domeniche come festivi. Non penso ke tale modifica sia condizionante nella riuscita, ma non capisco perkè ciò succede visto ke ho avuto cura a mantenere i riferimenti alle celle precisi a quelli suggeriti. Mi puoi chiarire le idee? e scusami per la banalità della domanda. Ignazio

[ b a z ]

unread,
Feb 12, 2014, 5:12:02 AM2/12/14
to
ignazioan...@gmail.com ci ha detto :
sarà colpa delle "k" al posto del "ch"!?? ;)

(scherzo, ma mica più di tanto...)

--
[ b a z ]
"Scettico io? Ne dubito!"
" La coerenza è l'ultimo rifugio delle persone prive di immaginazione"
- socio MSTC - Responsabile Gruppi Antanati Gomito/Piede
- Mister Vistracàonpetto


rivap...@gmail.com

unread,
Feb 12, 2014, 10:57:03 AM2/12/14
to
Ciao Ignazio
Il valore di una formula non può dipendere dalla larghezza della colonna; piuttosto verifica che non hai reso indipendente l'anno della serie dei festivi ( dinamico da valore in C1)da quello delle date del mese.
Se il problema si ripropone dopo la verifica pubblica il file
Elio
0 new messages