Giorni feriali in un mese (Microsoft Excel)
Ti sei mai chiesto quanti giorni della settimana in particolare si verificano in un dato mese?
Per alcune persone è importante sapere quanti martedì ci sono in un mese. E chi non vuole sapere se un mese in particolare avrà quattro o cinque sabati?
Excel non include una funzione intrinseca che è possibile utilizzare per determinare il numero di volte in cui si verifica un determinato giorno della settimana in un determinato mese. È tuttavia possibile creare le proprie formule e funzioni per eseguire l’operazione.
Innanzitutto, considera la seguente formula.
=4+N((WEEKDAY(DATE(YEAR($A$1),MONTH($A$1),1))) (DAY(DATE(YEAR($A$1),MONTH($A$1)+1,0))-28)>(7*(( WEEKDAY(DATE(YEAR($A$1),MONTH($A$1),1)))>(1+ROW()- ROW($A$2)))+(1+ROW()-ROW($A$2))))
La formula si basa su una data in A1. Questa data dovrebbe essere quella del mese che desideri “testare”. La formula deve essere copiata in una cella nella riga 2 e quindi copiata nelle sei celle direttamente sotto di essa. Ad esempio, puoi copiare questa formula nell’intervallo di celle B2: B8. La prima risposta (B2) è il numero di domeniche del mese, la seconda (B3) è il numero di lunedì e così via.
Lo svantaggio di questa formula è che utilizza la posizione della cella contenente la formula come parte della formula. Ciò significa che la formula deve essere posizionata da qualche parte a partire dalla seconda riga.
Un altro svantaggio è che la formula è piuttosto lunga e complessa. Se desideri una formula più breve, devi passare a una formula di matrice. Una pratica formula che puoi utilizzare presuppone che tu fornisca tre argomenti: l’anno (cella C2), il mese (cella D2) e un giorno della settimana (cella E2). Con questi tre elementi, la seguente formula funziona alla grande:
=SUM(IF(WEEKDAY(DATE(C2, D2, ROW(INDIRECT("1:" & DAY(DATE(C2, D2+1, 0))))))=E2, 1, 0))
Ricorda che questa è una formula di matrice, il che significa che devi inserirla premendo Maiusc + Ctrl + Invio. Inoltre, il valore del giorno della settimana immesso nella cella E2 deve essere compreso tra 1 e 7, dove 1 è domenica, 2 è lunedì, ecc.
Un altro approccio, che non si basa su una formula di matrice, consiste nel testare la data nella cella A1 per qualsiasi giorno della settimana desiderato, come specificato in E2.
(Di nuovo, un valore compreso tra 1 e 7, come nell’esempio precedente.)
=IF(MONTH(DATE(YEAR(A1),MONTH(A1),1)-WEEKDAY(DATE(YEAR(A1),MONTH(A1),1)-E2)+35)=MONTH(A1),5,4)
La formula fondamentalmente controlla se c’è una quinta istanza nel mese di qualunque giorno della settimana che stai controllando. Se è presente, viene restituito il valore 5; in caso contrario, viene restituito il valore 4. (La formula presume giustamente che ci possano essere solo 4 o 5 istanze di un dato giorno della settimana, mai meno e mai più.)
Sono disponibili anche soluzioni basate su macro. Segue una di queste soluzioni:
Function MonthWeekDays(dDate As Date, iWeekDay As Integer) Dim dLoop As Date If iWeekDay < 1 Or iWeekDay > 7 Then MonthWeekDays = CVErr(xlErrNum) Exit Function End If MonthWeekDays = 0 dLoop = DateSerial(Year(dDate), Month(dDate), 1) Do While Month(dLoop) = Month(dDate) If WeekDay(dLoop) = iWeekDay Then _ MonthWeekDays = MonthWeekDays + 1 dLoop = dLoop + 1 Loop End Function
Si utilizza la funzione inserendo quanto segue in una cella:
=MonthWeekDays(A1,4)
In questo utilizzo, il primo argomento (cella A1) contiene una data nel mese da valutare. Il secondo argomento è un valore numerico che rappresenta il giorno della settimana che vuoi contare. Questo valore deve essere compreso tra 1 e 7, dove 1 è domenica, 2 è lunedì e così via.
_Nota: _
Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.
ExcelTips è la tua fonte di formazione economica su Microsoft Excel.
Questo suggerimento (2183) si applica a Microsoft Excel 97, 2000, 2002 e 2003. Puoi trovare una versione di questo suggerimento per l’interfaccia a nastro di Excel (Excel 2007 e versioni successive) qui: