Supportnet / Forum / Tabellenkalkulation
bestimmtes zellenformat für zeiten
Frage
hallo zusammen,
ich sitze gerade beim erstellen einer tabelle die zeiten verrechned.
dabei kommt es vor, das minuszeiten dabei rauskommen. nur hat excel ein problem damit, wenn ich das standart zeitformat nehme und zeigt einen formazfehler an. daraufhin habe ich versuch mir einen bemutzerdefiniertes feld zusammen zustellen, aber irgendwie klappt das nicht.
ich bräuchte zwei unterschiedliche formate, einmal das wenn eine negative zeit dabei rauskommt, eine 0 eingeblendt wird. das zweite, wenn eine minuszeit rauskommt, das die auch angezeit wird.
geht das überhaupt???
danke für die hilfe...
Antwort 1 von drago
Zeiten werden Relativ von einem Bestimmten Zeitpunkt an in Sekunden berechnet oder in Tagen.
(je nach Betriebssystem)
(Nehmen wir als Beispiel das Datum 1.1.1930)
Diese brauchst du nur so Darstellen lassen und dann selbst berechnen.
In Openoffice, aber ich glaube es ist in anderen Office Programmen genauso,(bei Psion ist es so),
Kannst du DATWERT, ZEITWERT, HEUTE, JETZT benutzen.
(Schau in der Online-Hilfe nach wie genau die Syntax ist, Querverweise etc.)
Z.B.
=Datwert("12.01.1983")
(ergibt 30328er Tag seit 1900 (oder 1904))
=Datwert("01.01.1999")
(ergibt 36161er Tag seit 1900 (oder 1904))
Diffenrenz:
36161-30328=5833 (Tage)
Das Ergebnis mit 1440 Min/Tag multipliziert ergibt die Minutenanzahl usw.
Also entsprechend umrechnen.
(je nach Betriebssystem)
(Nehmen wir als Beispiel das Datum 1.1.1930)
Diese brauchst du nur so Darstellen lassen und dann selbst berechnen.
In Openoffice, aber ich glaube es ist in anderen Office Programmen genauso,(bei Psion ist es so),
Kannst du DATWERT, ZEITWERT, HEUTE, JETZT benutzen.
(Schau in der Online-Hilfe nach wie genau die Syntax ist, Querverweise etc.)
Z.B.
=Datwert("12.01.1983")
(ergibt 30328er Tag seit 1900 (oder 1904))
=Datwert("01.01.1999")
(ergibt 36161er Tag seit 1900 (oder 1904))
Diffenrenz:
36161-30328=5833 (Tage)
Das Ergebnis mit 1440 Min/Tag multipliziert ergibt die Minutenanzahl usw.
Also entsprechend umrechnen.
Antwort 2 von Aliba
Hi Smith,
wenn es nur um die Zeiten geht und Du nicht schon Unmengen Datumswerte erfasst hast, dann:
EXTRAS-OPTIONEN-BERECHNEN- den Eintrag 1904erDatumswerte aktivieren.
Jetzt werden negative Zeitwerte auch angezeigt.
Rechnen kannst Du in der anderen Einstellung auch mit den ##############-Anzeigen, nur angezeigt werden sie eben nicht, weil sie in Excel nicht definiert sind.
CU Aliba
wenn es nur um die Zeiten geht und Du nicht schon Unmengen Datumswerte erfasst hast, dann:
EXTRAS-OPTIONEN-BERECHNEN- den Eintrag 1904erDatumswerte aktivieren.
Jetzt werden negative Zeitwerte auch angezeigt.
Rechnen kannst Du in der anderen Einstellung auch mit den ##############-Anzeigen, nur angezeigt werden sie eben nicht, weil sie in Excel nicht definiert sind.
CU Aliba
Antwort 3 von Aliba
Hi noch mal ich , noch was vergessen.
Verwende für die Zellen mit Zeiteinträgen das benutzerdefinierte Format: [h]:mm
Es werden sonst Zeitsummen, die über 24 Stunden hinausgehen nicht korrekt angezeigt.
Also z.B. 23:00 + 02:00 hätte als Ergebnis:
01:00
CU Aliba
Verwende für die Zellen mit Zeiteinträgen das benutzerdefinierte Format: [h]:mm
Es werden sonst Zeitsummen, die über 24 Stunden hinausgehen nicht korrekt angezeigt.
Also z.B. 23:00 + 02:00 hätte als Ergebnis:
01:00
CU Aliba
Antwort 4 von nighty
hi alle :)
kleines beispiel falls ein makro gebraucht wird :)
aktive zelle das ergebnis mit minusvorzeichen,somit die beiden linksliegenden zellen soll und ist zeit ist.
gruss nighty
Sub Makro1()
On Error GoTo fehler
adress$ = ActiveWindow.RangeSelection.Address
adress1 = Len(adress$)
For mo = 1 To adress1
If Mid$(adress, mo, 1) = "$" Then
llp = llp + 1
Else
If llp = 1 Then
spalte$ = spalte$ + Mid$(adress, mo, 1)
End If
If llp = 2 Then
zeile$ = zeile$ + Mid$(adress, mo, 1)
zeile1 = Val(zeile$)
End If
End If
Next mo
b0 = Asc(spalte$)
Range(Chr$(b0) & zeile1) = ""
b0 = b0 - 2
GoSub modul1
c4 = c333
b0 = b0 + 1
GoSub modul1
b0 = b0 + 1
If c4 > c333 Then c5 = c4 - c333
If c333 > c4 Then c5 = c333 - c4
c6 = c5
Do
If c6 < 60 Then
Exit Do
Else
b = b + 1
c6 = c6 - 60
End If
Loop
b1$ = Str(b)
If Mid$(b1$, 1, 1) = " " Or Mid$(b1$, 1, 1) = "-" Then b1$ = Mid$(b1$, 2, Len(b1$))
b2$ = Str(c6)
If Mid$(b2$, 1, 1) = " " Or Mid$(b2$, 1, 1) = "-" Then b2$ = Mid$(b2$, 2, Len(b2$))
a23$ = b1$ + "." + b2$
a24 = Val(a23$)
If Len(b2$) = 1 Then b2$ = "0" + b2$
If Range(Chr$(b0 - 1) & zeile1) > Range(Chr$(b0 - 2) & zeile1) Then Range(Chr$(b0) & zeile1) = "+" + b1$ + "." + b2$
If Range(Chr$(b0 - 1) & zeile1) < Range(Chr$(b0 - 2) & zeile1) Then Range(Chr$(b0) & zeile1) = "-" + b1$ + "." + b2$
End
modul1:
laenge = Len(Range(Chr$(b0) & zeile1))
If Mid$(Range(Chr$(b0) & zeile1), 1, 1) = " " Then Range(Chr$(b0) & zeile1) = Mid$(Range(Chr$(b0) & zeile1), 2, laenge - 1)
laenge = Len(Range(Chr$(b0) & zeile1))
For t = 1 To laenge
If Mid$(Range(Chr$(b0) & zeile1), t, 1) = "," Then
c1$ = Mid$(Range(Chr$(b0) & zeile1), 1, t - 1)
c11 = Val(c1$)
c111 = c11 * 60
c2$ = Mid$(Range(Chr$(b0) & zeile1), t + 1, laenge)
c22 = Val(c2$)
c333 = c111 + c22
t = laenge + 1
zr = 1
End If
Next t
If zr = 0 Then
c1 = Val(Range(Chr$(b0) & zeile1))
c333 = c1 * 60
End If
zr = 0
Return
fehler:
End Sub
kleines beispiel falls ein makro gebraucht wird :)
aktive zelle das ergebnis mit minusvorzeichen,somit die beiden linksliegenden zellen soll und ist zeit ist.
gruss nighty
Sub Makro1()
On Error GoTo fehler
adress$ = ActiveWindow.RangeSelection.Address
adress1 = Len(adress$)
For mo = 1 To adress1
If Mid$(adress, mo, 1) = "$" Then
llp = llp + 1
Else
If llp = 1 Then
spalte$ = spalte$ + Mid$(adress, mo, 1)
End If
If llp = 2 Then
zeile$ = zeile$ + Mid$(adress, mo, 1)
zeile1 = Val(zeile$)
End If
End If
Next mo
b0 = Asc(spalte$)
Range(Chr$(b0) & zeile1) = ""
b0 = b0 - 2
GoSub modul1
c4 = c333
b0 = b0 + 1
GoSub modul1
b0 = b0 + 1
If c4 > c333 Then c5 = c4 - c333
If c333 > c4 Then c5 = c333 - c4
c6 = c5
Do
If c6 < 60 Then
Exit Do
Else
b = b + 1
c6 = c6 - 60
End If
Loop
b1$ = Str(b)
If Mid$(b1$, 1, 1) = " " Or Mid$(b1$, 1, 1) = "-" Then b1$ = Mid$(b1$, 2, Len(b1$))
b2$ = Str(c6)
If Mid$(b2$, 1, 1) = " " Or Mid$(b2$, 1, 1) = "-" Then b2$ = Mid$(b2$, 2, Len(b2$))
a23$ = b1$ + "." + b2$
a24 = Val(a23$)
If Len(b2$) = 1 Then b2$ = "0" + b2$
If Range(Chr$(b0 - 1) & zeile1) > Range(Chr$(b0 - 2) & zeile1) Then Range(Chr$(b0) & zeile1) = "+" + b1$ + "." + b2$
If Range(Chr$(b0 - 1) & zeile1) < Range(Chr$(b0 - 2) & zeile1) Then Range(Chr$(b0) & zeile1) = "-" + b1$ + "." + b2$
End
modul1:
laenge = Len(Range(Chr$(b0) & zeile1))
If Mid$(Range(Chr$(b0) & zeile1), 1, 1) = " " Then Range(Chr$(b0) & zeile1) = Mid$(Range(Chr$(b0) & zeile1), 2, laenge - 1)
laenge = Len(Range(Chr$(b0) & zeile1))
For t = 1 To laenge
If Mid$(Range(Chr$(b0) & zeile1), t, 1) = "," Then
c1$ = Mid$(Range(Chr$(b0) & zeile1), 1, t - 1)
c11 = Val(c1$)
c111 = c11 * 60
c2$ = Mid$(Range(Chr$(b0) & zeile1), t + 1, laenge)
c22 = Val(c2$)
c333 = c111 + c22
t = laenge + 1
zr = 1
End If
Next t
If zr = 0 Then
c1 = Val(Range(Chr$(b0) & zeile1))
c333 = c1 * 60
End If
zr = 0
Return
fehler:
End Sub
Antwort 5 von want2cu
Hallo Michy,
ich würde aus Sicherheitsgründen zu einer Praktikeralternative raten:
Mit einer einfachen WENN Funktion klären, ob sich ein negativer oder ein positiver Wert ergibt. Die positiven Werte in eine Spalte, die negatiben in die Spalte rechts daneben und z.b. rot formatiert.
Die 1904-Regel kann zu Problemen führen, wenn man mit Zeiten rechnen muss (glaub ich, es gibt aber auf jeden Fall einen vernünftigen GRund dafür, nach Möglichkeit diese Option nicht zu nutzen).
CU
want2cu
ich würde aus Sicherheitsgründen zu einer Praktikeralternative raten:
Mit einer einfachen WENN Funktion klären, ob sich ein negativer oder ein positiver Wert ergibt. Die positiven Werte in eine Spalte, die negatiben in die Spalte rechts daneben und z.b. rot formatiert.
Die 1904-Regel kann zu Problemen führen, wenn man mit Zeiten rechnen muss (glaub ich, es gibt aber auf jeden Fall einen vernünftigen GRund dafür, nach Möglichkeit diese Option nicht zu nutzen).
CU
want2cu
Antwort 6 von smith
danke für die zahlreichen tipps...
es hat bestens funktioniert.
frohes fest und guter rutsch
es hat bestens funktioniert.
frohes fest und guter rutsch

