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