Jason ha un foglio di lavoro che contiene diverse colonne, ognuna delle quali rappresenta una settimana fiscale per la sua azienda. Queste settimane fiscali iniziano con la colonna G, dove la colonna H è la seconda settimana fiscale, la colonna I la terza settimana e così via. Jason vorrebbe creare una macro che, una volta eseguita, guardi alla data odierna, calcoli la settimana fiscale in base a quella data e quindi nasconda le colonne della settimana fiscale che non rientrano in un intervallo specificato.

Allo scopo di fornire una risposta, presumo che l’intervallo che si desidera visualizzare sarà pari a 13 settimane (un trimestre)

immediatamente precedente la settimana fiscale in corso. Con questo in mente, ci sono un paio di cose che devono essere fatte dalla macro. Innanzitutto, deve determinare quale settimana fiscale è attualmente. Quindi, deve nascondere tutte le settimane non nelle 13 settimane precedenti questa settimana fiscale corrente e mostrare tutte quelle che lo sono.

Tutto questo è relativamente facile da fare, con l’eccezione di capire quale settimana fiscale è attualmente. Il metodo per determinare le settimane fiscali può variare notevolmente da azienda a azienda. Per semplicità, tuttavia, presumo che la determinazione sia abbastanza semplice: dividi il giorno dell’anno per sette e guarda cosa abbiamo.

La seguente macro implementa l’approccio discusso finora.

Sub HideWeeks()

Dim BeginYear As Date           'start of fiscal year date     Dim FirstWeekCol As Integer     'first fiscal week column     Dim FirstShowWkCol As Integer   'first column to show     Dim CurrWkCol As Integer        'current week column     Dim J As Integer

BeginYear = Cells(1, 1).Value     FirstWeekCol = 7  'fiscal weeks begin with Col 7 (G)



'Calculate Column of the current fiscal week     CurrWkCol = ((Date - BeginYear) \ 7) + FirstWeekCol - 1     'Calculate column of the first week to show     FirstShowWkCol = CurrWkCol - 14     If FirstShowWkCol < FirstWeekCol Then         FirstShowWkCol = FirstWeekCol     End If

Application.ScreenUpdating = False

'Unhide all columns     Columns("G:IV").Hidden = False  'Unhide all week Columns

'Hide week column before the rolling quarter     For J = FirstWeekCol To FirstShowWkCol         Columns(J).Hidden = True     Next J

'Hide week column after current week     For J = CurrWkCol + 1 To 256         Columns(J).Hidden = True     Next intCol

Application.ScreenUpdating = True End Sub

Notare che c’è un valore che deve essere preso dal foglio di lavoro in questa macro: l’ultimo giorno dell’anno precedente. Si presume che si trovi nella cella A1 e che venga acquisito e inserito nella variabile BeginYear. Questo valore viene utilizzato per determinare il giorno dell’anno corrente.

_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 (3261) 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: