Microsoft Excel

Herbers Excel/VBA-Archiv

Probleme bei Berechnung mit Datum

Betrifft: Probleme bei Berechnung mit Datum von: freshhermi
Geschrieben am: 21.10.2020 10:45:39

Hallo!


Ich habe eine Excel-Tabelle mit den Spalten "Startzeitpunkt"und "Endzeitpunkt", und will mir in eine dritte Spalte "Auslastung" die monatliche Auslastung schreiben.

In Excel funktioniert das schon ganz gut, ich Rechne einfach:

=(B2-B1)/[Anzahl der Tage im Monat]

und formatiere das dann als Prozentzahl.


Weil das Ganze aber automatisiert werden soll versuche ich das gleiche in VBA zu erreichen, schaffe es aber aus irgendeinem Grund nicht. Wenn ich es auf folgende Art und Weise versuche kommt zwar eine Zahl raus, aber nicht die korrekte. Ich nehme an, dass mein Fehler irgendwie bei den Datentypen liegt, kenne mich aber zu wenig aus um auf die Lösung zu kommen:

(an dieser Stelle möchte ich nur anmerken, dass meine VBA-Kenntnisse rudimentär sind, also bitte nicht beim Anblick meines Lösungsansatzes an den Kopf fassen...)

Dim workload As Double
Dim date_start As Double
Dim date_end As Double

date_start = CDate(Cells(i + 1, 1))
date_end = CDate(Cells(i + 1, 2))
workload = (date_end - date_start) / CDbl(Day(DateSerial(Year(Cells(i + 1, 1)), month(Cells(i + 1, 1)) + 1, 0)))

Cells(i + 1, 3).Value = workload
Cells(i + 1, 3).NumberFormatLocal = "0,00 %"

Das ganze befindet sich in einer for-Schleife, daher das "i + 1"

Ich hoffe es kann mir jemand helfen! Vielen Dank!

Betrifft: AW: Probleme bei Berechnung mit Datum
von: UweD
Geschrieben am: 21.10.2020 10:58:59

Hallo


Excel rechnet intern immer mit Zahlen anstelle von Datum; deshalb brauchst du hier nichts umzuwandeln.

So würde das reichen.
Du musst aber einen Tag dazurechnen. (Start und Ende am gleichen Tag würde bei dir 0 ergeben)
    Dim workload As Double, i As Integer
    Dim date_start As Double
    Dim date_end As Double
    
    
    date_start = Cells(i + 1, 1)
    date_end = Cells(i + 1, 2)
    workload = (date_end - date_start + 1) / Day(DateSerial(Year(Cells(i + 1, 1)), Month(Cells( _
i + 1, 1)) + 1, 0))
    
    Cells(i + 1, 3).Value = workload
    Cells(i + 1, 3).NumberFormatLocal = "0,00 %"

LG UweD

Betrifft: AW: Probleme bei Berechnung mit Datum
von: freshhermi
Geschrieben am: 21.10.2020 11:05:32

Hallo UweD,

vielen Dank für die Hilfe!
Ich habe vergessen zu sagen, dass "Startzeitpunkt" und "Endzeitpunkt" nicht nur ein Datum, sondern ein Datum+Uhrzeit sind. Start und Ende sind also am selben Tag, aber zu verschiedenen Uhrzeiten, es sollte also nicht 0 ergeben oder?

LG

Betrifft: LOgik?
von: Rudi Maintaire
Geschrieben am: 21.10.2020 11:37:39

Hallo,
wenn du mit Stunden rechnest, solltest du die Auslastung auch mit den Monatsstunden berechnen.

Gruß
Rudi

Betrifft: ist Unsinn. Ziehe zurück. owT
von: Rudi Maintaire
Geschrieben am: 21.10.2020 11:38:55



Betrifft: AW: Probleme bei Berechnung mit Datum
von: freshhermi
Geschrieben am: 21.10.2020 11:33:51

Okay, es hat wie beschrieben funktioniert, ich hatte nur noch ein paar mehr Spalten als hier eigentlich angegeben und hab mich zuerst mit den Spalten vertan.

Vielen Dank! LG

Beiträge aus dem Excel-Forum zum Thema "Probleme bei Berechnung mit Datum"