Скрытие столбцов за пределами диапазона дат (Microsoft Excel)
У Джейсона есть рабочий лист, который содержит несколько столбцов, каждый из которых представляет финансовую неделю его компании. Эти финансовые недели начинаются со столбца G, столбец H — это вторая финансовая неделя, столбец I — третья неделя и так далее. Джейсон хотел бы создать макрос, который при запуске будет смотреть на сегодняшнюю дату, вычислять финансовую неделю на основе этой даты, а затем скрывать любой из столбцов финансовой недели, которые не входят в указанный диапазон.
Чтобы дать ответ, я предполагаю, что диапазон, который вы хотите отобразить, будет равен 13 неделям (одному кварталу)
непосредственно перед текущей финансовой неделей. Имея это в виду, макрос должен сделать несколько вещей. Во-первых, он должен определить, какая сейчас финансовая неделя. Затем он должен скрыть все недели, кроме 13 недель, предшествующих текущей финансовой неделе, и показать все те, которые есть.
Все это относительно легко сделать, за исключением того, чтобы выяснить, какая сейчас финансовая неделя. Метод определения финансовых недель может сильно различаться от компании к компании. Однако для простоты я предполагаю, что определение довольно простое: разделите день года на семь и посмотрите, что у нас получится.
Следующий макрос реализует рассмотренный выше подход.
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
Обратите внимание, что есть одно значение, которое необходимо взять из рабочего листа в этом макросе: последний день предыдущего года. Предполагается, что это находится в ячейке A1, и он захватывается и помещается в переменную BeginYear. Это значение используется для определения дня текущего года.
_Примечание: _
Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (3261) применим к Microsoft Excel 97, 2000, 2002 и 2003. Вы можете найти версию этого совета для ленточного интерфейса Excel (Excel 2007 и более поздних версий) здесь:
link: / excelribbon-Hiding_Columns_Not_within_a_Date_Range [Скрытие столбцов за пределами диапазона дат]
.