Thema Datum  Von Nutzer Rating
Antwort
06.12.2011 12:18:22 Steve
NotSolved
06.12.2011 18:35:39 Till
NotSolved
Rot Referenzierung bei Teilsumme / Subtotal
07.12.2011 09:05:20 Steve
NotSolved

Ansicht des Beitrags:
Von:
Steve
Datum:
07.12.2011 09:05:20
Views:
957
Rating: Antwort:
  Ja
Thema:
Referenzierung bei Teilsumme / Subtotal

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

 

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
06.12.2011 12:18:22 Steve
NotSolved
06.12.2011 18:35:39 Till
NotSolved
Rot Referenzierung bei Teilsumme / Subtotal
07.12.2011 09:05:20 Steve
NotSolved