Spesso appuntamenti e scadenze sono indicati solo con il numero della settimana. Si desidera che Excel fornisca, quando si immette una data, il corrispondente numero d’ordine della settimana nell’anno. In Excel non esiste una funzione predefinita per questo calcolo. Grazie al Vba si può però facilmente creare una funzione personalizzata che risponda allo scopo. Selezionare Strumenti/Macro/Macro e specificare un nome adatto, per esempio NS. Fare clic su Crea e immettere il seguente codice Vba
Function GS(DataIn As Date) As Integer GS=DatePart(“ww”,DataIn, vbMonday, vbFirstFourDays)
End Function
Chiudere l’editor Vba con il comando File/Chiudi e torna ad Excel. Ora si potrà usare la formula (funzione) NS nei fogli di Excel, nel formato
=NS(“gg/mm/aaaa”)
La formula si basa sulla funzione Excel DatePart, in cui vbMonday definisce il Lunedì come primo giorno della settimana, e vbFirstFourDays fa sì che venga definita prima settimana dell’anno la prima che contiene almeno 4 giorni
Il calcolo si può anche effettuare anche senza il Vba, con una formula piuttosto complicata come questa
=INT(((C4-DATA(ANNO(C4);1;1) +GIORNO.SETTIMANA(DATA(ANNO(C4);1;1) ;3)/7+SE(GIORNO.SETTIMANA (DATA(ANNO(C4);1;1);3)<4;1;0)
In questo caso si suppone che la data stia nella cella C4. La prima parte della formula determina i giorni trascorsi dall’inizio dell’anno; la seconda corregge tale valore in modo che per ogni Lunedì risulti divisibile per 7 senza resto. La divisione per 7 fornisce poi il numero della settimana. L’ultima somma fa sì che la prima settimana contenga almeno 4 giorni. A una settimana d’inizio anno non completa corrisponde così il numero 0. La funzione Vba, invece, fornisce il numero dell’ultima settimana dell’anno precedente