# Excel - Summe/Anzahl verschiedene Kriterien



## Axor (17. Juli 2007)

Folgendes Problem:

Habe eine ziemlich umfangreiche Tabelle mit einigen Spalten, wie z.B. Abteilung, Auftragsnummer, Datum, Stunden, ...

Nun will ich auf einer Übersichtsseite, wo alle Maschinen inkl. Auftragsnummer aufgelistet sind nebenbei eine Anzahl der Aufträge aus der Tabelle sowie eine Summe der Stunden.

d.h. für Maschine 1 mit Auftragsnummer 1234 für Monat 1/07 die Anzahl der Aufträge und Summe der Arbeitsstunden.

Auftragsnummer=1234 && Datum>=01.01.2007 && Datum <01.02.2007 && Abteilung=1

Hab schon mit diversen Funktionen herumprobiert, habs aber nicht geschafft die Kriterien so zu setzen, dass ein Wert rausgekommen wäre.

Weiteres Ziel ist es, auf einer Seite nur mehr Auftragsnummer, Zeitrahmen, Abteilung einzugeben und eine z.b. monatliche Auswertung inkl. Diagrammen zu erhalten.
Das wär ja nicht mehr so schwierig, wenn ich mal die richtige Formel hätte...

Danke für helfende Antworten!


----------



## alexanderthiel (17. Juli 2007)

Hi,
Markiere die Zeile mit der Überschrift und wähle "Daten" ^ "Filter" ^ "Auto Filter". 
Es erscheint in jeder Zelle ein Formularfenster.
Nun kannst Du Deine mehreren Wünsche in jeder Spalte eintragen, indem Du auf das "Boton" klickst. Solltest Du den Wert nicht finden, klicke auf "(Benutzerdefiniert...)",
aber:
Es geht nur bis 1000 Zeilen
und Du darfst keine leeren Spalten dazwischen haben, das blockiert.
Andere Variante: "Einfügen" ^ "Funktionen" ^ "Wenn..", das ist aber umständlicher.
Ich hoffe, das meintest Du und ich konnte Dir helfen.


----------



## Axor (17. Juli 2007)

Naja, so mach ichs bisher...
nur ist das halt ziemlich hoher Aufwand, für jede Auftragsnummer das Datum immer einzugrenzen, Summe bzw. Anzahl rüberschreiben in die Übersichtsseite....
und wenn ich das in der Übersichtsseite abrufen könnt, wärs wesentlich einfacher...


----------



## larryson (18. Juli 2007)

Moin, hast Du es schonmal mit einer Pivot-Tabelle probiert? Klingt nach einem klassischem Fall dafür.

Einfach mal vom Assistenten durchführen lassen.

Ansonsten könntest Du mal eine Tabelle mit Testdaten posten.


----------



## Axor (18. Juli 2007)

So, habs jetzt mit VBA so halbwegs hinbekommen - zumindest ein anfang ist da...

Ich wähl aus einem DropDown Feld die Auftragsnummer und es wird mir automatisch die Anzahl der Aufträge und Arbeitsstunden berechnet... in B9 und B10 gibts die Datumsgrenzen

Sub SucheAuftraege_Bereich(nr As String)
    For Each c In Worksheets("Auftraege").Range("D").Cells
        If c.Value = nr And Worksheets("Auftraege").Cells(c.Row, c.Column - 3) > Worksheets("Auswertung_Test").Range("B9").Value And Worksheets("Auftraege").Cells(c.Row, c.Column - 3) < Worksheets("Auswertung_Test").Range("B10").Value Then count = count + 1: summe = summe + Worksheets("Auftraege").Cells(c.Row, c.Column + 3)
    Next

    Worksheets("Auswertung_Test").Range("C12").Value = (count)
    Worksheets("Auswertung_Test").Range("C13").Value = (summe)
End Sub

Läuft nur leider sehr sehr langsam...

Vielleicht hat da jemand ne schnellere Variante auf Lager?


Nun das nächste Problem...

Beispiel:
Auftragsnummer Datum Stunden Detail
0001 05.01.2007 8:00 X1
0001 10.01.2007 1:00 X3
0002 27.01.2007 5:00 Y1
....

Es gibt also verschiedene Auftragsnummern und dazu ein Kürzel für einen Detailbereich
Für Auftr. Nr. 0001 gibts z.b. X1-X10
In einer Hilfstabelle steht nun

0001
X1 Detail1
X2 Detail2
...
X10 Detail10

0002
Y1 Detail1
Y2 Detail2
...
...

Nun soll auf der Auswertungsseite nach Auswahl der Auftragsnummer (z.B. 0001) die Detailbereiche ausgegeben werden (z.B. Detail1 \n\r Detail2 usw) und daneben die generierte Anzahl der Aufträge im ausgewählten Zeitbereich und die Arbeitsstunden

Die Generierung der Anzahl und Stunden bring ich eh hin, nur wie bekomm ich nach Auswahl der Auftragsnummer alle Detailbereiche aus der Hilfstabelle auf die Auswertungsseite? Wenn ich die dort hab, kann ich die Auswertung der Anzahl und Stunden wie oben machen...

d.h. ich suche nach der Nummer und die folgenden 10 Zeilen sollen rüberkopiert werden
ich müsste also die Spalte und Zeile herausfinden wo die Auftragsnummer in der Hilfstabelle vorkommt und von dort weg dann 2 Spalten zu 10 zeilen rüberkopieren


----------



## Axor (19. Juli 2007)

das verschieben hab ich nun hinbekommen....
leider funktioniert die auswertung sehr sehr langsam, noch dazu wo nun auch noch die detailauswertung dazukommt..
wie kann man folgenden Code optimieren?


```
Sub SucheAuftraege(nr As String)
    For Each c In Worksheets("auftraege").Range("D:D").Cells
        If c.Value = nr Then count = count + 1: summe = summe + Worksheets("auftraege").Cells(c.row, c.Column + 3)
    Next
    Worksheets("Auswertung_Test").Range("C4").Value = (count)
    Worksheets("Auswertung_Test").Range("D4").Value = (summe)
End Sub
```

Zur Erklärung:
mit nr wird die ausgewählte auftragsnummer übergeben, danach wird in den aufträgen gesucht und die anzahl der gefundenen aufträge sowie (c.Column + 3) die Anzahl der Arbeitsstunden aufsummiert...

Nur eben sehr sehr langsam...


----------

