Ocultar columnas fuera de un rango de fechas (Microsoft Excel)
Jason tiene una hoja de trabajo que contiene varias columnas, cada una de las cuales representa una semana fiscal para su empresa. Estas semanas fiscales comienzan con la columna G, siendo la columna H la segunda semana fiscal, la columna I la tercera semana y así sucesivamente. A Jason le gustaría crear una macro que, cuando se ejecute, mire la fecha de hoy, calcule la semana fiscal en función de esa fecha y luego oculte cualquiera de las columnas de semana fiscal que no estén dentro de un rango especificado.
Con el fin de proporcionar una respuesta, voy a asumir que el rango que desea que se muestre será igual a las 13 semanas (un trimestre)
inmediatamente anterior a la semana fiscal actual. Con esto en mente, hay un par de cosas que debe hacer la macro. Primero, debe determinar qué semana fiscal es actualmente. Luego, debe ocultar todas las semanas que no sean de las 13 semanas anteriores a esta semana fiscal actual y mostrar todas las que sí lo están.
Todo esto es relativamente fácil de hacer, con la excepción de averiguar qué semana fiscal es actualmente. El método para determinar las semanas fiscales puede variar enormemente de una empresa a otra. Sin embargo, en aras de la simplicidad, voy a asumir que la determinación es bastante sencilla: divida el día del año por siete y vea lo que tenemos.
La siguiente macro implementa el enfoque discutido hasta ahora.
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
Tenga en cuenta que hay un valor que debe tomarse de la hoja de trabajo en esta macro: el último día del año anterior. Se supone que está en la celda A1, y se toma y se coloca en la variable BeginYear. Este valor se utiliza para determinar el día del año actual.
_Nota: _
Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.
link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador]
.
ExcelTips es su fuente de formación rentable en Microsoft Excel.
Este consejo (3261) se aplica a Microsoft Excel 97, 2000, 2002 y 2003. Puede encontrar una versión de este consejo para la interfaz de cinta de Excel (Excel 2007 y posterior) aquí:
link: / excelribbon-Hiding_Columns_Not_within_a_Date_Range [Ocultar columnas fuera de un rango de fechas]
.