Ich hatte diese Aufgabe schon einmal im Forum, die dann auch auf geniale Art und Weise beantwortet wurde. Nach etlichen Einträgen sehe ich jedoch, dass da drei Eintragungen einfach nicht involviert sind, finde den Fehler nicht und verzweifle beinahe daran, weil ich den Ursprung selber nicht finden kann.
Ich habe Euch die Datei beigefügt. Die drei Eintragungen befinden sich in den Zeilen 549, 550 und 556, welche ich rot markiert habe.
Mittels dem Aktualiserungs-Button sollten diese drei Aufträge ebenfalls in die Liste integriert werden, was eben nicht passiert.
Ich würde mich riesig darüber freuen, wenn mir jemand den Fehler aufzeigen kann, damit ich die Originaldatei, welche dann auch die Kundennamne beinhaltet, korrekt korrigieren darf.
Application.ScreenUpdating = False 'Bildschirmaktualisierung aus
With Worksheets("AB2014") .Columns("g:j").ClearContents 'Inhalte der Spalten "AC:AF" löschen .Range("g3:j3") = vntA 'Überschriften in den Bereich "AC3:AF3" eintragen lngLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row 'letzte belegte Zeile in Spalte A feld = .Range("A4:E" & lngLetzte) 'Bereich AC3 bis AF bis zur letzten belgeten in ein Variant Array schreiben For i = LBound(feld) To UBound(feld) 'Alle Array Zeilen durchlaufen If feld(i, 1) <> 0 Then 'wenn Zelle in Spalte nicht 0 dann einlesen objDic1(feld(i, 1)) = objDic1(feld(i, 1)) + feld(i, 4) 'Unicate in Dictionary einlesen und die Spalte D aufaddieren End If Next i
'Daten in die entsprechenden Saplten schreiben .Range("h4:h" & objDic1.Count) = WorksheetFunction.Transpose(objDic1.keys) 'Unicate in Spalte h .Range("g4:g" & objDic1.Count) = WorksheetFunction.Transpose(objDic1.items) 'Summen von "St" in Spalte AC .Range("i4:i" & objDic1.Count).FormulaLocal = "=SVERWEIS(h4;$a$4:$B$" & lngLetzte & ";2;0)" 'In Spalte AE SVERWEIS() Formel zur Ermittlung der Kundennamen .Range("j4:j" & objDic1.Count).FormulaLocal = "=SUMMEWENN($A$4:$A$" & lngLetzte & ";h4;$E$4:$E$" & lngLetzte & ")" ''In Spalte AE SUMMEWENN()() Formel zur Ermittlung der Kundennamen .Range("i4:i" & objDic1.Count).Value = .Range("i4:i" & objDic1.Count).Value 'Formeln mit ihren Werten überschreiben .Range("j4:j" & objDic1.Count).Value = .Range("j4:j" & objDic1.Count).Value ''Formeln mit ihren Werten überschreiben
'erst nach Spalte AC dann nach Spalte AF absteigend sortieren .Range("g3:j" & objDic1.Count).Sort Key1:=.Range("g4"), Order1:=xlDescending, Key2:=.Range("j4"), Order2:=xlDescending, Header:=xlYes, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal
End With
Application.ScreenUpdating = True 'Bildschirmaktualisierung ein
Application.ScreenUpdating = False 'Bildschirmaktualisierung aus
With Worksheets("AB2014") .Columns("g:j").ClearContents 'Inhalte der Spalten "AC:AF" löschen .Range("g3:j3") = vntA 'Überschriften in den Bereich "AC3:AF3" eintragen lngLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row 'letzte belegte Zeile in Spalte A feld = .Range("A4:E" & lngLetzte) 'Bereich AC3 bis AF bis zur letzten belgeten in ein Variant Array schreiben For i = LBound(feld) To UBound(feld) 'Alle Array Zeilen durchlaufen If feld(i, 1) <> 0 Then 'wenn Zelle in Spalte nicht 0 dann einlesen objDic1(feld(i, 1)) = objDic1(feld(i, 1)) + feld(i, 4) 'Unicate in Dictionary einlesen und die Spalte D aufaddieren End If Next i
'Daten in die entsprechenden Saplten schreiben .Range("h4:h" & objDic1.Count + 3) = WorksheetFunction.Transpose(objDic1.keys) 'Unicate in Spalte h .Range("g4:g" & objDic1.Count + 3) = WorksheetFunction.Transpose(objDic1.items) 'Summen von "St" in Spalte AC .Range("i4:i" & objDic1.Count + 3).FormulaLocal = "=SVERWEIS(h4;$a$4:$B$" & lngLetzte & ";2;0)" 'In Spalte AE SVERWEIS() Formel zur Ermittlung der Kundennamen .Range("j4:j" & objDic1.Count + 3).FormulaLocal = "=SUMMEWENN($A$4:$A$" & lngLetzte & ";h4;$E$4:$E$" & lngLetzte & ")" ''In Spalte AE SUMMEWENN()() Formel zur Ermittlung der Kundennamen .Range("i4:i" & objDic1.Count + 3).Value = .Range("i4:i" & objDic1.Count + 3).Value 'Formeln mit ihren Werten überschreiben .Range("j4:j" & objDic1.Count + 3).Value = .Range("j4:j" & objDic1.Count + 3).Value ''Formeln mit ihren Werten überschreiben
'erst nach Spalte AC dann nach Spalte AF absteigend sortieren .Range("g3:j" & objDic1.Count + 3).Sort Key1:=.Range("g4"), Order1:=xlDescending, Key2:=.Range("j4"), Order2:=xlDescending, Header:=xlYes, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal
End With
Application.ScreenUpdating = True 'Bildschirmaktualisierung ein