Jason hat ein Arbeitsblatt, das mehrere Spalten enthält, von denen jede eine Geschäftswoche für sein Unternehmen darstellt. Diese Geschäftswochen beginnen mit Spalte G, wobei Spalte H die zweite Geschäftswoche ist, Spalte I die dritte Woche und so weiter. Jason möchte ein Makro erstellen, das beim Ausführen das heutige Datum anzeigt, die Geschäftswoche basierend auf diesem Datum berechnet und dann alle Spalten der Geschäftswoche ausblendet, die nicht in einem bestimmten Bereich liegen.

Um eine Antwort zu geben, gehe ich davon aus, dass der Bereich, den Sie anzeigen möchten, den 13 Wochen (ein Viertel) entspricht

unmittelbar vor der laufenden Geschäftswoche. In diesem Sinne muss das Makro einige Dinge tun. Zunächst muss festgelegt werden, um welche Geschäftswoche es sich derzeit handelt. Dann muss es alle Wochen nicht in den 13 Wochen vor dieser aktuellen Geschäftswoche ausblenden und alle diejenigen einblenden, die es sind.

Dies alles ist relativ einfach, mit der Ausnahme, dass Sie herausfinden, um welche Geschäftswoche es sich derzeit handelt. Die Methode zur Bestimmung der Geschäftswochen kann von Unternehmen zu Unternehmen sehr unterschiedlich sein. Der Einfachheit halber gehe ich jedoch davon aus, dass die Bestimmung ziemlich einfach ist: Teilen Sie den Tag des Jahres durch sieben und sehen Sie, was wir haben.

Das folgende Makro implementiert den bisher diskutierten Ansatz.

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

Beachten Sie, dass in diesem Makro ein Wert aus dem Arbeitsblatt abgerufen werden muss: der letzte Tag des Vorjahres. Es wird angenommen, dass sich dies in Zelle A1 befindet, und es wird erfasst und in die Variable BeginYear eingefügt. Dieser Wert wird verwendet, um den Tag des aktuellen Jahres zu bestimmen.

_Hinweis: _

Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der ExcelTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.

ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.

Dieser Tipp (3261) gilt für Microsoft Excel 97, 2000, 2002 und 2003. Eine Version dieses Tipps für die Multifunktionsleistenschnittstelle von Excel (Excel 2007 und höher) finden Sie hier: