Jason có một bảng tính chứa một số cột, mỗi cột đại diện cho một tuần tài chính cho công ty của anh ấy. Các tuần tài chính này bắt đầu với cột G, với cột H là tuần tài chính thứ hai, cột I là tuần thứ ba, v.v. Jason muốn tạo một macro, khi chạy, sẽ xem xét ngày hôm nay, tính toán tuần tài chính dựa trên ngày đó, rồi ẩn bất kỳ cột nào trong tuần tài chính không nằm trong một phạm vi được chỉ định.

Với mục đích cung cấp câu trả lời, tôi sẽ giả định rằng phạm vi bạn muốn hiển thị sẽ bằng 13 tuần (một phần tư)

ngay trước tuần tài chính hiện tại. Với ý nghĩ này, có một số điều phải được thực hiện bởi macro. Đầu tiên, nó phải xác định xem nó hiện đang là tuần tài chính nào. Sau đó, nó phải ẩn tất cả các tuần không phải trong 13 tuần trước tuần tài chính hiện tại này và hiện tất cả những tuần đó.

Điều này tương đối dễ thực hiện, ngoại trừ việc tìm ra tuần tài chính hiện tại. Phương pháp xác định các tuần tài chính có thể rất khác nhau giữa các công ty. Tuy nhiên, vì đơn giản, tôi sẽ giả định rằng quyết định khá đơn giản: chia ngày trong năm cho bảy và xem chúng ta có gì.

Macro sau đây thực hiện cách tiếp cận được thảo luận cho đến nay.

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

Lưu ý rằng có một giá trị phải được lấy từ trang tính trong macro này: ngày cuối cùng của năm trước. Giả sử rằng ô này nằm trong ô A1, và nó được lấy và đặt trong biến BeginYear. Giá trị này được sử dụng để xác định ngày của năm hiện tại.

_Lưu ý: _

Nếu bạn muốn biết cách sử dụng các macro được mô tả trên trang này (hoặc trên bất kỳ trang nào khác trên trang ExcelTips), tôi đã chuẩn bị một trang đặc biệt bao gồm thông tin hữu ích.

ExcelTips là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.

Mẹo này (3261) áp dụng cho Microsoft Excel 97, 2000, 2002 và 2003. Bạn có thể tìm thấy phiên bản của mẹo này cho giao diện ribbon của Excel (Excel 2007 trở lên) tại đây: