
Public Function WeekOfYear(InDate As Date, Optional ByVal bEstesa As Boolean = False) As Variant
'by scossa
WeekOfYear = DatePart("ww", InDate, vbMonday, vbFirstFourDays)
If Month(InDate) = 1 And Day(InDate) < 5 And WeekOfYear > 51 And Not bEstesa Then WeekOfYear = -WeekOfYear
If bEstesa Then WeekOfYear = WeekOfYear ''& " del " & (Year(InDate) + bEstesa)
End Function
=WeekOfYear("01/01/2016")
restituisce -53
=WeekOfYear("01/01/2016"; 1)
resitutisce "53 del 2015"
|
=SE(E(GIORNO($A$1)<=3;MESE($A$1)=1);53;SE(GIORNO.SETTIMANA(DATA(ANNO($A$1);MESE(1);GIORNO(1));2)>=5;NUM.SETTIMANA($A$1;2)-1;NUM.SETTIMANA($A$1;2))) |
=SE(E(O(GIORNO.SETTIMANA($A$1)>=5;GIORNO.SETTIMANA($A$1)=1);GIORNO($A$1)<=3;MESE($A$1)=1);53;SE(GIORNO.SETTIMANA(DATA(ANNO($A$1);MESE(1);GIORNO(1));2)>=5;NUM.SETTIMANA($A$1;2)-1;NUM.SETTIMANA($A$1;2))) |
| A | B | C | D | E | F | G | H | |
| 1 | DATE DI RIFERIMENTO | DATE DI RIFERIMENTO | =ISO.WEEKNUM($B2) | =NUM.SETTIMANA(B2;21) | =IsoWeekNumber(B2) | =WeekOfYear(B2) | =WeekOfYear_old(B2;1) | OK |
| 2 | 28/12/2015 | 28/12/2015 | 53 | 53 | 53 | 53 | 53 | Vero |
| 3 | 03/01/2016 | 03/01/2016 | 53 | 53 | 53 | 53 | 53 | Vero |
| 4 | 04/01/2016 | 04/01/2016 | 1 | 1 | 1 | 1 | 1 | Vero |
| 5 | 10/01/2016 | 10/01/2016 | 1 | 1 | 1 | 1 | 1 | Vero |
| 6 | 26/12/2016 | 26/12/2016 | 52 | 52 | 52 | 52 | 52 | Vero |
| 7 | 01/01/2017 | 01/01/2017 | 52 | 52 | 52 | 52 | 52 | Vero |
| 8 | 02/01/2017 | 02/01/2017 | 1 | 1 | 1 | 1 | 1 | Vero |
| 9 | 08/01/2017 | 08/01/2017 | 1 | 1 | 1 | 1 | 1 | Vero |
| 10 | 25/12/2017 | 25/12/2017 | 52 | 52 | 52 | 52 | 52 | Vero |
| 11 | 31/12/2017 | 31/12/2017 | 52 | 52 | 52 | 52 | 52 | Vero |
| 12 | 01/01/2018 | 01/01/2018 | 1 | 1 | 1 | 1 | 1 | Vero |
| 13 | 07/01/2018 | 07/01/2018 | 1 | 1 | 1 | 1 | 1 | Vero |
| 14 | 24/12/2018 | 24/12/2018 | 52 | 52 | 52 | 52 | 52 | Vero |
| 15 | 30/12/2018 | 30/12/2018 | 52 | 52 | 52 | 52 | 52 | Vero |
| 16 | 31/12/2018 | 31/12/2018 | 1 | 1 | 1 | 1 | 1 | Vero |
| 17 | 06/01/2019 | 06/01/2019 | 1 | 1 | 1 | 1 | 1 | Vero |
| 18 | 23/12/2019 | 23/12/2019 | 52 | 52 | 52 | 52 | 52 | Vero |
| 19 | 29/12/2019 | 29/12/2019 | 52 | 52 | 52 | 52 | 52 | Vero |
| 20 | 30/12/2019 | 30/12/2019 | 1 | 1 | 53 | 1 | 53 | Falso |
| 21 | 05/01/2020 | 05/01/2020 | 1 | 1 | 1 | 1 | 1 | Vero |
| 22 | 28/12/2020 | 28/12/2020 | 53 | 53 | 53 | 53 | 53 | Vero |
| 23 | 03/01/2021 | 03/01/2021 | 53 | 53 | 53 | 53 | 53 | Vero |
| 24 | 04/01/2021 | 04/01/2021 | 1 | 1 | 1 | 1 | 1 | Vero |
| 25 | 10/01/2021 | 10/01/2021 | 1 | 1 | 1 | 1 | 1 | Vero |
| scossa's web site |
| Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw) |
Public Function WeekOfYear(InDate As Date) As Variant
'by scossa
WeekOfYear = DatePart("ww", InDate, vbMonday, vbFirstFourDays)
If DatePart("w", InDate, vbMonday, vbFirstFourDays) = 1 And Day(InDate) > 28 And WeekOfYear = 53 Then
WeekOfYear = 1
End If
End Function
|
