Überlagerte Produkte aus Tabellen 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 einen großen Programmieraufwand realisieren?

Ganz ohne Programmierung kommen Sie da 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: (Das Listing finden Sie auf 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.