Produkte mit Verfallsdatum suchen und auflisten

Meine Arbeitsmappe enthält verschiedene Tabellen mit Materialien und dem jeweils zugehörigen Verfallsdatum. Nun möchte ich in einer weiteren Tabelle automatisch alle verfallenen Materialien auflisten. Kann ich das in Excel ohne großen Programmieraufwand umsetzen?

Ganz ohne Programmierung kommen Sie nicht aus. Mit einem relativ kleinen VBA-Makro können Sie diese Aufgabe jedoch zumindest bei gleich aufgebauten Einzeltabellen meist recht elegant lösen. In der geöffneten Arbeitsmappe führen Sie den Befehl »Extras | Makro | Makros« aus. Dann geben Sie dem Makro einem Namen wie zum Beispiel äVerfallô und klicken auf die Schaltfläche »Erstellen«. Im VBA-Editor geben Sie nun folgende Programmzeilen ein oder Sie kopieren das Listing von der Heft-CD unter CHIP-Code verfall.



Sub Verfall()
Dim i, j, n, x, y As Variant
Dim info As String
x = Sheets.Count
Sheets.Add After:=Worksheets(x)
Sheets(x + 1).Select
Sheets(x + 1).Name = äVerfallene Produkteô
n = 2
For i = 1 To x
For j = 1 To 1000
If Worksheets(i).Cells(j, 3) <> äô Then
If Worksheets(i).Cells(j, 3) < Now Then
Sheets(i).Select
Rows(j).Select
Selection.Copy
Sheets(x + 1).Select
Rows(n).Select
ActiveSheet.Paste
n = n + 1
End If
End If
Next j
Next i
Application.CutCopyMode = False
Sheets(x + 1).Select
Range(äA1ô).Select
info = Str(n - 2) + ä Produkte sind verfallenô
MsgBox (info)
End Sub




Nach der Definition der nötigen Variablen ermittelt das Makro die Anzahl der Tabellen und fügt nach dem letzten Blatt die neue Tabelle »Verfallene Produkte« ein. Die Variable »n« dient als Zähler für die verfallenen Produkte und zur Ansteuerung der richtigen Zeile in der Auflistung. Die beiden Schleifen mit »i« und »j« durchlaufen alle Tabellen und darin jeweils 1.000 Zeilen.

Diesen Wert können Sie anpassen, je nachdem, wie viele Materialien eine Tabelle maximal enthält. Im gezeigten Beispiel setzt die Größe »Worksheets(i). Cells(j,3)« voraus, dass die Verfallsdaten in jeder Tabelle in der dritten Spalte stehen. Wenn diese Zelle nicht leer ist, prüft die nächste Anweisung, ob das Datum vor dem aktuellen Zeitpunkt liegt. In diesem Fall kopiert das Makro die betreffende Zeile in die neue Tabelle mit den verfallenen Produkten. Am Ende schaltet das Makro den Kopiermodus wieder aus und informiert über die Anzahl der verfallenen Produkte.

Falls Ihre Einzeltabellen unterschiedlich aufgebaut sind, müssen Sie die erste Schleife entfernen und die darin stehenden Anweisungen wiederholt in den Programmcode einfügen. Dann können Sie für jede Tabelle getrennt die passenden Einstellungen vornehmen. Bevor Sie das Makro zum nächsten Mal ausführen, müssen Sie die zuvor angelegte Tabelle »Verfallene Produkte« löschen oder zumindest umbenennen. Das Makro legt diese Tabelle stets neu an.