und dann komme ich mit der Formel nicht mehr weiter.
Zitat:aus den ganzen Tabellen die Daten auf einer Gesamt-Tabelle konsolidieren (evtl. per VBA
Genau das wäre der Weg den ich gehen würde. Bei mir reichen die VBA-Kenntnisse nicht aus um das zu programmieren, deswegen mein Vorschlag mit dem Addin das genau diese Konsolidierug macht.
Die Listen können leider nicht identisch aufgebaut werden.:(
Wenn ich das richtig verstanden habe ist das Problem wie folgt -> Es ist nicht möglich, das ein makro nach dem Produkt+Kunden sucht und die Mengen dann dementsprechend sortiert in das neue Arbeitsblatt kopiert, oder?
Nein, das Addin konnte ich leider noch nicht probieren. Wird wohl erst heute am frühen Abend was werden. Wenn ich probiert habe gebe ich direkt Feedback.
Zitat:Es ist nicht möglich, das ein makro nach dem Produkt+Kunden sucht und die Mengen dann dementsprechend sortiert in das neue Arbeitsblatt kopiert, oder?
doch, das ist möglich - aber nicht für mich, da sind meine VBA-Kenntnisse zu gering, deswegen der Hinweis auf das Addin.
Eine andere Möglichkeit würde darin bestehen über eine SQL-Abfrage die verschiedenen Tabellenblätter in einer Pivot zusammenzufassen.
das Blatt für die Zusammenfassung muss dieselben Überschriften haben wie die Tagesblätter und vor Start des Makros aktiviert sein.
Code:
Sub Monatsauswertung() Dim oWsA As Worksheet, oWsT As Worksheet, oWsZ As Worksheet Dim lngZ As Long Set oWsA = ActiveSheet Application.ScreenUpdating = False Set oWsZ = Workbooks.Add(xlWBATWorksheet).Sheets(1) For Each oWsT In oWsA.Parent.Worksheets If oWsT.Name <> oWsA.Name Then With oWsT With .Range(.Range("A1"), .Cells(Rows.Count, 1).End(xlUp)) If .Rows.Count > 1 Then .Resize(.Rows.Count - 1, 3).Offset(1).Copy oWsZ.Cells(Rows.Count, 1).End(xlUp).Offset(1) End If End With End With End If Next oWsT oWsA.Range("A2:C" & Rows.Count) = "" With oWsZ oWsA.Rows(1).Copy .Cells(1) lngZ = .Cells(.Rows.Count, 1).End(xlUp).Row With .Range("A1:D" & lngZ) With .Columns(4).Resize(.Rows.Count - 1).Offset(1) .Formula = "=SUMPRODUCT((A$2:A$" & lngZ & "=A2)*(B$2:B$" & lngZ & "=B2)*C$2:C$" & lngZ & ")" .Value = .Value .Copy .Offset(, -1) .Value = "" End With .Resize(, 3).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=oWsA.Range("A1:C1"), Unique:=True End With .Parent.Close False End With Application.ScreenUpdating = True End Sub