Clever-Excel-Forum

Normale Version: Berechnung von Dienstanfangszeiten aus Plantabellen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo Forum. Ich bin neu in Excelthemen und benötige für ein Projekt eure Hilfe.
Hier meine Problematik:
in einem Tabellenblatt Plan verwende ich Plandaten in dem der Benutzer eine Zeitangabe in Industriezeit also 4,5 Std oder 2,5 Std. usw eintragen kann und zusätzlich ob er Frühschicht oder Spätschicht hat.
siehe Tabellenblatt Plan
Also in den Zellen F4 H4 J4 L4 stehen die Werte der Stunden.
In den Zellen G4 I4 K4 M4 stehen die Werte F für Frühschicht oder S für Spätschicht.

In einem Weitern Tabellenblatt (möglichst Monatsblätter Jan, Feb usw.) sollen sich die Zeiten basierend auf einen Ausgangswert z. B. Geschäftsbeginn 08:30 Uhr (den könnte man dann irgendwo auf der Plantabelle hinterlegen) wie folgt darstellen:
siehe Tabellenblatt Januar
UserA
D4 08:30 E4 12:00 F4 3,5  usw.

Erklärung: D4 Geschäftsbeginn Frühschicht
                E4 = aus Plan 3,5 Std. plus D4 
                F4 Wiederholgung Planstunden für die spätere Aufsummierung.

Das Problem ist nun wenn es sich beim UserC im Plan um den Eintrag S für Spätschicht handelt soll automatisch das Enddatum aus der längsten Länge der Frühschicht zwischen UserA / UserB / UserD als Beginn seiner Schicht dargestellt werden.
UserC
            J4 12:00 Geschäftsbeginn Spätschicht resultieren aus der längsten Länge der Frühschicht zwischen UserA / UserB / UserD
            K4 15:30 aus Plan 3,5 Std. plus J4
            L4 3,5 Wiederholgung Planstunden für die spätere Aufsummierung.

siehe auch [attachment=21568]

Ich hoffe das ist nicht allzu verwirrend wie ich es dargestellt habe  :20:

Auf einen Hinweis oder Lösungsansatz hoffend verbleibe ich.
Kann es vielleicht sein, dass es mit Excel einfach nicht zu lösen ist, dann lasst es mich doch bitte wissen.
Hallo

ich denke mal das die Aufgabe keineswegs verwirrend ist, sonst Entwirren wir sie ....

Anbei dein Beispiel zurück mit einem Target Makro das nur auf die Eingabe "S" reagiert!  Alle andere Eingaben werden ignoriert.  
Nach dem Eintrag der neuen Zeiten erscheint eine Msgbox zur Kontrolle und informiert welche Zeiten jetzt in den Zellen drinsteht.

Frage:   ihr habt umfangreiche Makros für jeden einzelnen Monat zu löschen, etc.  Aber ich finde kein Makro das die Daten aus dem Monat in den Plan übertregt. D.h., da arbeitet ihr m.E. "blind"!  Denn wenn sich Daten veraendern, wie teilt ihr das dem Monat mit,  Und wie bekommt ihr die Rückmeldung aus dem Monat über geaenderte Zellen.  Da fehlt m.E. noch ein Makro, sonst tappt ihr da wirklich "im Dunkeln" herum.  Ist eine Überlegung für naechstes Jahr.

Ich wünsche euch ein frohes neues Jahr und guten Rutsch ....    im positiven Sinne.

mfg  Gast 123
Hallo,

lass es mich mal so sagen, du konfrontierst uns mit einer Datei, die nicht unbedingt das repräsentiert, wie man Excellisten aufbauen sollte. Da es immer weiter um sich greift, dass Einsteiger im Bereich Excel zunächst schöne Listen erstellen, und dann um Hilfe bitten, wenn sie im Umgang damit Probleme bekommen, darfst du dich nicht wundern, wenn die Helfer hier und anderswo keine Lust haben, sich damit zu beschäftigen.

Das was man auf deinem Blatt für den Januar sieht, ist für die Datenerfassung völlig ausreichend, wenn du das zumindest für das ganze Jahr anlegst. Das lässt sich dann ganz ordentlich auswerten. Mehr brauchst du nicht!
Hallo Gast 123
deine Lösung ist genau das was wir gesucht haben. 
Und das mit dem fehlenden Makro müssen wir auch noch nachziehen da hast du recht. Aber nun haben wir ja schon einmal einen Weg in die richtige Richtung gewiesen bekommen und werden uns dransetzen es weiter zu verbessern. Vielen Herzlichen Dank und auch dir ein frohes neues Jahr und einen guten Rutsch.
Hallo Klaus-Dieter,
selbstverständlich hast du Recht damit, das das Blatt Januar völlig Ausreichend wäre.
Dennoch haben wir uns die Frage gestellt ob der Benutzer nicht mit wenigen Angaben ein ansprechendes Ergebnis bekommen könnte. 
Gast 123 hat uns da einen sehr guten Lösungsansatz aufgezeigt den wir auch noch weiter verfeinern werden.
Und ob nun der ein oder andere Lust hat oder nicht sich einem Problem hinzugeben oder es einfach zu lassen, das ist, so denken wir doch jedem selbst überlassen und macht den Reitz eines Forums aus. So zumindest unsere Philosophie. Wir alle und auch andere werden ja davon profitieren.
Und vielleicht gibt es ja Dinge die man mit Excel wirklich nicht umsetzen sollte. Dann muss man das eben auch akzeptieren.
Vielen Dank für deinen Post wir wünschen dir ein frohes neues Jahr
Hallo

was haltet ihr von dieser Lösung die Daten automatisch zu übertragen??  Bitte zuerst zwei/drei Monate ins Beispiel kopieren und das Makro im Beispiel gründlich testen.  Sollte es im Makor noch Fehler geben zerstört ihr in der Beispiel Datei KEINE Originaldaten!!  Jedes neue Makro muss bitte intensiv geprüft werden.

Das Makro notiert sich Eingaben in einem Monatsblatt.  Beim Blattwechsel wird gefragt ob diese Eingaben jetzt gebucht werden sollen.  Bei Nein oder Cancel wird der Eingabe Zaehler gelöscht. Ansonsten werden nur die Summen Spalten UserA bis UserD als Werte in den Plan kopiert. 

Im Plan ist ein Button der zum testen eine Msgbox aufruft ob eine Eingabe vorliegt.  Bei Datei Open wird die Eingabe immer gelöscht.

Wie gefaellt euch dieser Start ins neue Jahr ....

mfg  Gast 123
Nachtrag

falls das Aufrufen des Makro den Betrieb stören würde kann ich mir im Plan in freien Zellen unter dem Datum auch notieren in welchem Monat Eingaben vorliegen, und man verbucht diese Eingaben per Button nur einmal am Abend. Wie ihr das lösen wollt ist eure Sache. Das Makro müsste dann ein wenig geaendert werden. Ich muss nur wissen was euch besser gefaellt.

mfg  Gast 123
Hallo Gast 123,
erst einmal ein Frohes und gesundes neues Jahr für dich und deine Familie,
Das ist ja schon fast perfekt. In deinen Berechnungen für die Zeit ist uns nur aufgefallen, das du immer mit einem festen Wert von 3:30 Std. rechnest. im Monatsbericht sollen aber die im Plan eingetragenen Std. Verwendung finden, die links neben dem  jeweiligen S stehen. Der Aufruf des Makros stört keinesfalls den Betrieb und da müsste dann auch nichts weiter angepasst werden.

Vielen herzlichen Dank für deine tolle Unterstützung
Hallo

freut mich wenn man an der Erweiterung nichts zu aendern braucht.  Hier ein korrigierter Code zum auswechseln in Tabelle "Plan"
Neu ist die Variable Zeit, die jetzt aus der Zelle neben "S" geladen wird. Würde mich freuen wenn danach alles einwandfrei klappt.

mfg  Gast 123

Code:
Option Explicit         '30.12.2018   Gast 123  für Clever Forum
Dim Monat As String, User As String
Dim EndZeit As Date, EndMax As Date
Dim j As Integer, Spa As Integer
Dim Zeit As Date   'neu  2.1.2019


Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Rows.Count > 1 Or Target.Columns.Count > 1 Then Exit Sub
If Target.ColumnWidth > 4 Or Target.Row <= 2 Then Exit Sub

If Target.Value <> "S" Then Exit Sub
  User = Cells(2, Target.Column - 1)

  For j = Target.Column To Target.Column + 10
     If Cells(2, j) = "Monat" Then _
        Monat = Trim(Cells(2, j - 12)): Exit For
  Next j

  EndZeit = Empty:  EndMax = Empty: Spa = 0
 
'   On Error GoTo Fehler
  With Sheets(Monat)
     For j = 3 To 14
        If .Cells(2, j) = "Ende" Then
           'aktiven User Spalte notieren
           If .Cells(2, j + 1) = User Then Spa = j + 1
           If .Cells(2, j + 1) <> User Then
              If CDate(.Cells(Target.Row, j)) > CDate(EndMax) Then _
                 EndMax = Format(CDate(.Cells(Target.Row, j)), "hh:mm")
           End If
        End If
     Next j
       
     If Spa = 0 Then MsgBox User & " - User Name in " & Monat & " nicht gefunden!!": Exit Sub
       
     If EndMax = Empty Then EndMax = "08:30"   'Frühschicht setzen
     
     'Zeit aus Plan laden, in Zeit Format umwandeln
      Zeit = CDate(Target.Offset(0, -1) / 24)

     'geaenderte Zeiten im Monat eintragen
     .Cells(Target.Row, Spa - 2) = Format(EndMax, "hh:mm")
     .Cells(Target.Row, Spa - 1) = Format(CDate(EndMax) + CDate(Zeit), "hh:mm")
 
     'zum Prüfen neue Werte im Monat anzeigen
     MsgBox Left(CDate(.Cells(Target.Row, Spa - 2)), 5) & " - " & Left(CDate(.Cells(Target.Row, Spa - 1)), 5)
  End With
Exit Sub

Fehler:  MsgBox Monat & "  - Fehler:  Exisitiert diese Monats Tabelle??"
End Sub
Seiten: 1 2