Microsoft Excel

Herbers Excel/VBA-Archiv

Filtern und Summieren bzw. Sortieren | Herbers Excel-Forum


Betrifft: Filtern und Summieren bzw. Sortieren von: Stephan
Geschrieben am: 16.10.2008 16:02:29

Hallo liebe Excel - VBA-Freunde,

ich habe ein ziemlich großes Problem. Aber vielleicht kann mir jemand von euch dabei helfen.
Habe das Problem, dass in Spalte A verschiedene Auftragsnummern existieren und einige davon mehrmals vorkommen. Nun möchte ich durch ein Makro so filtern, dass jeder Auftrag nur einmal angezeigt wird.
Ein Makro hierfür habe ich bereits gefunden:

Sub Filter()
    Dim i As Integer, iRows As Integer
    iRows = Cells(Cells.Rows.Count, 1).End(xlUp).Row
    For i = iRows To 1 Step -1
        If WorksheetFunction.CountIf(Columns(1), Cells(i, 1)) > 1 Then
            Rows(i).Delete
        End If
    Next i
End Sub



Nun kommt aber das wirkliche Problem. Zu gleichen Aufträgen stehen in verschiedenen Spalten unterschiedliche Angaben. So sollen beispielsweise in Spalte O die verscheidenen Angaben zu einem Auftrag addiert werden. Und in Spalte R soll das früheste Baudatum zu einem Auftrag ausgegeben werden.
Und diese summierten bzw. frühesten Daten zu jeweils einer Auftragsnummer sollen am Ende mit der Filterfunktion zusammen in einer Zeile stehen.

Kann mir jemand hier weiterhelfen.

  

Betrifft: AW: Filtern und Summieren bzw. Sortieren von: fcs
Geschrieben am: 16.10.2008 16:57:39

Hallo Stephan,

so ganz ins Grobe geschrieben:

Sub Filter()
    Dim i As Long, iRows As Long, DatumMin As Date, dblSumme_O As Double, j As Long
    
    iRows = Cells(Cells.Rows.Count, 1).End(xlUp).Row
    For i = iRows To 2 Step -1
        If WorksheetFunction.CountIf(Columns(1), Cells(i, 1)) = 1 Then
            'Startwerte setzen
            DatumMin = 99999
            dblSumme_O = 0
            For j = iRows To 2 Step -1
              'Auftragsnummern in Spalte 1 vergleichen
              If Cells(j, 1).Value = Cells(i, 1) Then
                'Summe Spalte O bilden
                dblSumme_O = dblSumme_O + IIf(IsNumeric(Cells(j, 15)), Cells(j, 15).Value, 0)
                'Mindatum in Spalte R
                If Cells(j, 18).Value < DatumMin Then DatumMin = Cells(j, 18).Value
              End If
            Next
            'Werte eintragen
            Cells(i, 15).Value = dblSumme_O
            Cells(i, 18).Value = DatumMin
        End If
    Next i
    'Mehrfachzeilen löschen
    For i = iRows To 2 Step -1
        If WorksheetFunction.CountIf(Columns(1), Cells(i, 1)) > 1 Then
            Rows(i).Delete
        End If
    Next i
End Sub


Gruß
Franz


  

Betrifft: AW: Filtern und Summieren bzw. Sortieren von: Daniel
Geschrieben am: 17.10.2008 00:33:13

Hi

eine derartige Auswertung könntest du mit der PIVOT-Tabelle machen.
- die Auftragsnummer ins Feld "Zeile" ziehen
- die Spalte O ins Feld "Daten" ziehen und "Summe" auswählen
- die Spalte R ins Feld "Daten" ziehen und "MIN" auswählen

nach dem Fertigstellen kann man noch durch "ziehen" der Überschriften in der Pivot-Tabelle die Daten so anordnen, daß die Ergebnisse für R und O nicht untereinander, sondern nebeneinander stehen.

Gurß, Daniel


Beiträge aus den Excel-Beispielen zum Thema "Filtern und Summieren bzw. Sortieren"