Jason的工作表包含多个列,每个列代表其公司的一个会计周。这些会计周从G列开始,H列是第二个会计周,I列是第三周,依此类推。 Jason希望创建一个宏,该宏在运行时将查看今天的日期,根据该日期计算会计周,然后隐藏不在指定范围内的任何会计周列。

为了提供答案,我假设您要显示的范围等于13周(四分之一)

当前财政周之前。考虑到这一点,宏必须完成几件事。首先,它必须确定当前是哪个财政周。然后,它必须隐藏所有不在本财政周之前的13周内的周,并取消隐藏所有这些周。

除了弄清楚当前是哪个财政周之外,这都是相对容易做到的。确定财务周的方法因公司而异。但是,为了简单起见,我将假设确定是相当简单的:将一年中的某天除以7,然后看看我们拥有什么。

下面的宏实现了到目前为止讨论的方法。

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 J

Application.ScreenUpdating = True End Sub

请注意,此宏中必须从工作表中获取一个值:上一年的最后一天。假定它在单元格A1中,并且已将其抓取并放置在BeginYear变量中。此值用于确定当年的日期。

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(9550)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。您可以在此处为Excel的较早菜单界面找到此技巧的版本: