Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1500to1504
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

spätesten Anfangszeitpunkt berechnen innerhalb von

spätesten Anfangszeitpunkt berechnen innerhalb von
11.07.2016 09:35:28
stefan
Hallo zusammen,
ich habe ein Problem bei der Berechnung eines Datums der den spätesten Anfangszeitpunkt darstellen soll. Das alleine wäre ja noch nicht schwer, allerdings gibt es mehrere Bedingungen, die zu beachten sind:
  • Es soll von einem bestimmten Zeitpunkt (TT.MM.JJ [hh]:mm, in der Datei "Abgabetermin") eine Stundenzahl ([hh]:mm, in der Datei "Belegzeit") abgezogen werden
  • das Ergebnis soll in den Bürozeiten (8-16 Uhr liegen), dabei ist zu beachten, dass die Stunden die nicht in den Bürozeiten liegen berücksichtigt werden
  • des Weiteren sollen nach Möglichkeit Wochenenden und Feiertage auch keine Berücksichtigung finden

  • Ich habe, wie bei der angehängten Datei schon einmal angefangen bin aber sehr stark am verzweifeln, ob und wenn ja, wie man das alles umsetzten kann.
    Viele Grüße
    Stefan
    https://www.herber.de/bbs/user/106902.xlsm

    3
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: spätesten Anfangszeitpunkt berechnen innerhalb von
    11.07.2016 13:39:52
    Michael
    Hi Stefan,
    mir wäre das als Formel zu kompliziert, d.h. ich würde eine Function basteln...
    Allerdings wäre es schön, nicht nur was "Angefangenes" zu haben, sondern eine Spalte mit den Ergebnissen, die Du Dir vorstellst.
    Außerdem gibt es einige Ungereimtheiten: der 1. Weihnachtsfeiertag fällt bei Dir auf den 24.12.
    Klar, das ist ein Tippfehler, aber was ist nun mit dem Hl. Abend und dem 31.12? Frei? 4 Stunden?
    Und recherchiere mal bitte nach dem 25.5.16 mit "froh" hat das nix zu tun.
    Also: ist VBA erwünscht?
    Schöne Grüße,
    Michael

    Anzeige
    AW: spätesten Anfangszeitpunkt berechnen innerhalb von
    12.07.2016 09:48:37
    stefan
    Danke für deine Antwort.
    Da ich in VBA nicht gerade versiert bin, habe ich gestern versucht das Problem mit Hilfe von mehreren Formeln darzustellen. Allerdings bin ich jetzt an einem Punkt angekommen, an dem ich die letzten Fehler nicht mehr ausmerzen kann.
  • In meiner Berechnung entsteht ein Problem wenn ein Auftrag länger als 2 Arbeitstage andauert, da ich immer nur einmal 16 Stunden (Stunden zwischen Arbeitsende und Arbeitsbeginn) abziehe.
  • Weiter besteht ein Problem wenn ein Auftrag über ein oder mehrere Wochenende(n) hinweg andauert, dann werden diese Tage nicht als arbeitsfrei berücksichtigt.
  • Ich habe es nicht geschafft die Feiertage so einzubauen, dass wenn ein Feiertag auf ein Wochenende fällt, lediglich ein Tag als arbeitsfrei berücksichtigt wird.

  • In der Tabelle Feiertage habe ich deine Anmerkungen angepasst und es sollen ausschließlich diese Tag berücksichtigt werden. Jeder andere Tag -ausgenommen Wochenenden- ist ein voller Arbeitstag.
    Zu meinen Vorstellung: Ich versuche in der Spalte "spätester Arbeitsbeginn" den Tag ausgeben zu lassen, unter Berücksichtigung von Bürozeiten, Wochenenden und Feiertagen, an dem man den Auftrag bearbeiten muss, um den Auftrag ("Belegzeit") rechtzeitig zum Abgabetermin fertigzustellen.
    Ich bleibe weiter am Ball und danke schon mal für Hilfe.
    https://www.herber.de/bbs/user/106937.xlsm (rot hinterlegte Zellen sind Hilfstabellen, grün hinterlegt soll das Ergebnis enthalten)
    Gruß
    Stefan

    Anzeige
    Zeit rückwärts mit VBA incl. Arbeitszeit
    12.07.2016 22:05:01
    Michael
    Hi Stefan,
    in Deiner Datei ist der Wurm drin: da sind so viele schräge Formatierungen, die sonstwas rechnen, nur nicht das, was sie sollen.
    Ich habe ein paar Daten erst in den Editor und dann in XL2000 kopiert - neue Datei OHNE irgendeinen komischen Firlefanz...
    Die Feiertage errechnet ein Makro von Franz (fcs) - die Liste ist überflüssig.
    Ansonsten verwende ich eine UDF, um Feiertage/Wochenenden rauszurechnen:
    Option Explicit
    Function TageRechnen(Datum As Range, Tage As Range)
    Dim anz As Date, i As Long
    If Tage.Value = 0 Then
    TageRechnen = Datum.Value
    Else
    anz = Datum.Value
    For i = 1 To Tage.Value
    Do:  anz = anz - 1
    Loop Until Weekday(anz, 2)  _
    https://www.herber.de/forum/archiv/1100to1104/1102794_Feiertage_in_Excel_VBA.html
    ' Für DIESE Fragestellung habe ich den 24.12. und 31.12. durch "" ersetzt!
    On Error Resume Next
    Dim intjahr As Integer
    Dim x As Integer, y As Date
    Dim intI As Integer, arrDatum(1 To 20)  As Date, arrText(1 To 20) As String
    intjahr = VBA.Year(Datum)
    'Ostertag ermitteln
    x = (((255 - 11 * (intjahr Mod 19)) - 21) Mod 30) + 21
    y = DateSerial(intjahr, 3, 1) + x + (x > 48) + 6 - _
    ((intjahr + intjahr \ 4 + x + (x > 48) + 1) Mod 7)
    intI = 0
    intI = intI + 1: arrDatum(intI) = DateSerial(intjahr, 1, 1): arrText(intI) = "Neujahr"
    intI = intI + 1: arrDatum(intI) = y - 2: arrText(intI) = "Karfreitag"
    intI = intI + 1: arrDatum(intI) = y: arrText(intI) = "Ostersonntag"
    intI = intI + 1: arrDatum(intI) = y + 1: arrText(intI) = "Ostermontag"
    intI = intI + 1: arrDatum(intI) = DateSerial(intjahr, 5, 1): arrText(intI) = "Maifeiertag"
    intI = intI + 1: arrDatum(intI) = y + 39: arrText(intI) = "Christi Himmelfahrt"
    intI = intI + 1: arrDatum(intI) = y + 49:  arrText(intI) = "Pfingstsonntag"
    intI = intI + 1: arrDatum(intI) = y + 50: arrText(intI) = "Pfingstmontag"
    intI = intI + 1: arrDatum(intI) = y + 60: arrText(intI) = "Fronleichnam"
    intI = intI + 1
    arrDatum(intI) = DateSerial(intjahr, 10, 3):  arrText(intI) = "Tag der deutschen Einheit"
    intI = intI + 1
    arrDatum(intI) = DateSerial(intjahr, 11, 1):  arrText(intI) = "Allerheiligen"
    intI = intI + 1
    arrDatum(intI) = DateSerial(intjahr, 12, 25):  arrText(intI) = "1. Weihnachtstag"
    intI = intI + 1
    arrDatum(intI) = DateSerial(intjahr, 12, 26):  arrText(intI) = "2. Weihnachtstag"
    intI = intI + 1
    arrDatum(intI) = y - 48:  arrText(intI) = "Rosenmontag"
    intI = intI + 1
    arrDatum(intI) = DateSerial(intjahr, 12, 24):  arrText(intI) = "" ' "Heiligabend"
    intI = intI + 1
    arrDatum(intI) = DateSerial(intjahr, 12, 31):  arrText(intI) = "" ' "Sylvester"
    For intI = LBound(arrDatum) To intI
    If Datum = arrDatum(intI) Then
    Feiertag = arrText(intI)
    End If
    Next
    End Function
    
    Die Datei: https://www.herber.de/bbs/user/106973.xls
    Schöne Grüße,
    Michael
    P.S.: Ich kann Dir nur empfehlen, die Datei mit getrenntem Datum & Zeit aufzubauen und insbesondere, falls die Daten aus einem Import stammen, ein getrenntes Makro zu erstellen, das die Angaben in eine Xl-taugliche Form bringt.
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige