|  
                                             
	Hallo Till, 
	wollte die Leute nicht direkt mit meinem schlechten Code erschlagen. Ich hab bisher das meiste in VBA lösen können, 
	aber meine Wege dorthin sind, glaube ich, oft sehr umständlich. 
	Es geht um die Auswertung eines Maßnahmenplans. Zwar existieren in paar Hilfszellen, aber Formeln, wann etwa ein 
	Smiley auf rot springt gibt es nicht. Dies wird mit einem Makro beim Start der Datei geprüft. Genauso wird eine neue 
	formatierte Leerzeile angehängt, wenn man in die letzte Zeile bei "Was?" etwas einträgt. 
	Kann ich hier keinen ScreenShot posten? Hab leider keinen Webspace. Egal, hab den Code kommentiert. 
	Die Auswertung wird beim Klick auf einen Button ausgelöst (zumindest vorerst): 
Private Sub cmdStatistik_Click()
  
  'Variablendeklaration
  Dim Benutzer As String
  Dim Benutzernummer As Integer
  
  'Screenupdate
  Application.ScreenUpdating = False
  
  'Statistiken der einzelnen Benutzer zusammentragen
  Sheets("Benutzer").Select
  Sheets("Benutzer").Range("A2").Select
  
  
  Do While Not IsEmpty(ActiveCell)
    Benutzer = ActiveCell
    Benutzernummer = Benutzernummer + 1
    Sheets("Maßnahmenplan").Select
    
    'falls Daten gefiltert sind, Filter zurücksetzen
    Selection.AutoFilter Field:=1 'laufende Nummer der Maßnahme
    Selection.AutoFilter Field:=2 'interne(I) oder externe(E) Maßnahme
    Selection.AutoFilter Field:=3 'eingetragen durch (Benutzer)
    Selection.AutoFilter Field:=4 'eingetragen am (Datum)
    Selection.AutoFilter Field:=5 'Titel/Thema der Maßnahme
    Selection.AutoFilter Field:=6 'Bemerkungen/Details
    Selection.AutoFilter Field:=7 'Methode (Wie wird Maßnahme angegangen?)
    Selection.AutoFilter Field:=8 'Umsetzung durch wen? (Benutzer)
    Selection.AutoFilter Field:=9  'Umsetung bis wann? (Datum)
    Selection.AutoFilter Field:=10 'Umsetzung erledigt am (Datum)
    Selection.AutoFilter Field:=11 'Zeit (S: zu schnell, JIT: just in time, L: zu langsam erledigt)
    Selection.AutoFilter Field:=12 'Drop-Down "Offen" oder "Erledigt"
    Selection.AutoFilter Field:=13 'Smiley rot:Maßnahme offen und überfällig, gelb: offen und im Zeitplan, grün: erledigt
                                   'Schriftart für Smileys ist Wingdings (J für lachend, K für neutral, L für weinend)
    Selection.AutoFilter Field:=14 'freies Feld um bei Besprechungen bestimmte Maßnahmen zu filtern
    
    'wie viele offene Maßnahmen hat der Benutzer (Umsetzer)?
    Selection.AutoFilter Field:=8, Criteria1:=Benutzer
    Selection.AutoFilter Field:=13, Criteria1:="=K", Operator:=xlOr, _
        Criteria2:="=L"
    Sheets("Benutzer").Range("B" & Benutzernummer + 1) = Sheets("Maßnahmenplan").Range("O3")
    
    Selection.AutoFilter Field:=8 'zurücksetzen
    Selection.AutoFilter Field:=13
    
    'wie viele erledigte Maßnahmen hat der Benutzer (Umsetzer)?
    Selection.AutoFilter Field:=8, Criteria1:=Benutzer
    Selection.AutoFilter Field:=13, Criteria1:="=J"
    Sheets("Benutzer").Range("C" & Benutzernummer + 1) = Sheets("Maßnahmenplan").Range("O3")
    
    'Summe der offenen und erledigten Maßnahmen
    Sheets("Benutzer").Range("D" & Benutzernummer + 1) = Sheets("Benutzer").Range("B" & Benutzernummer + 1) + _
      Sheets("Benutzer").Range("C" & Benutzernummer + 1)
    
    'Abarbeitungsgrad (Verhältnis offene zu Gesamtanzahl)
    If Sheets("Benutzer").Range("D" & Benutzernummer + 1) = 0 Then
      Sheets("Benutzer").Range("E" & Benutzernummer + 1) = 0
    Else
      Sheets("Benutzer").Range("E" & Benutzernummer + 1) = (Sheets("Benutzer").Range("C" & Benutzernummer + 1) / _
        Sheets("Benutzer").Range("D" & Benutzernummer + 1)) * 100
    End If
    
    Selection.AutoFilter Field:=8
    Selection.AutoFilter Field:=13
    
    'Maßnahmen, bei denen ein Datum (eingetragen, bis wann, erledigt) fehlt, werden nicht in der Statistik
    'zur Bearbeitungsdauer berücksichtigt
    Selection.AutoFilter Field:=4, Criteria1:="<>"
    Selection.AutoFilter Field:=9, Criteria1:="<>"
    Selection.AutoFilter Field:=10, Criteria1:="<>"
    Selection.AutoFilter Field:=8, Criteria1:=Benutzer
    
    'Berechnung von SOLL-Bearbeitungszeit, IST-Bearbeitungszeit und der Differenz
    Sheets("Benutzer").Range("F" & Benutzernummer + 1) = Sheets("Maßnahmenplan").Range("P2") 'wird in Hilfszelle berechnet
    Sheets("Benutzer").Range("G" & Benutzernummer + 1) = Sheets("Maßnahmenplan").Range("Q2") 'wird in Hilfszelle berechnet
    Sheets("Benutzer").Range("H" & Benutzernummer + 1) = Sheets("Maßnahmenplan").Range("R2") 'wird in Hilfszelle berechnet
    
    'Mittelwerte von SOLL und IST
    If Sheets("Maßnahmenplan").Range("O3") = 0 Then
      Sheets("Benutzer").Range("I" & Benutzernummer + 1) = 0
    Else
      Sheets("Benutzer").Range("I" & Benutzernummer + 1) = Sheets("Maßnahmenplan").Range("P2") / _
        Sheets("Maßnahmenplan").Range("O3")
    End If
    If Sheets("Maßnahmenplan").Range("O3") = 0 Then
      Sheets("Benutzer").Range("J" & Benutzernummer + 1) = 0
    Else
      Sheets("Benutzer").Range("J" & Benutzernummer + 1) = Sheets("Maßnahmenplan").Range("Q2") / _
        Sheets("Maßnahmenplan").Range("O3")
    End If
    
    Selection.AutoFilter Field:=4
    Selection.AutoFilter Field:=9
    Selection.AutoFilter Field:=10
    Selection.AutoFilter Field:=8
    
    'Anzahl der Maßnahmen "zu schnell"
    Selection.AutoFilter Field:=8, Criteria1:=Benutzer
    Selection.AutoFilter Field:=11, Criteria1:="S"
    Sheets("Benutzer").Range("K" & Benutzernummer + 1) = Sheets("Maßnahmenplan").Range("O3")
    
    Selection.AutoFilter Field:=8
    Selection.AutoFilter Field:=11
    
    'Anzahl der Maßnahmen "just in time"
    Selection.AutoFilter Field:=8, Criteria1:=Benutzer
    Selection.AutoFilter Field:=11, Criteria1:="JIT"
    Sheets("Benutzer").Range("L" & Benutzernummer + 1) = Sheets("Maßnahmenplan").Range("O3")
    
    Selection.AutoFilter Field:=8
    Selection.AutoFilter Field:=11
    
    'Anzahl der Maßnahmen "zu langsam"
    Selection.AutoFilter Field:=8, Criteria1:=Benutzer
    Selection.AutoFilter Field:=11, Criteria1:="L"
    Sheets("Benutzer").Range("M" & Benutzernummer + 1) = Sheets("Maßnahmenplan").Range("O3")
    
    Selection.AutoFilter Field:=8
    Selection.AutoFilter Field:=11
    
    Sheets("Benutzer").Select
    ActiveCell.Offset(1, 0).Select
  Loop
  
End Sub
	  
	  
     |